[
  {
    "path": ".github/FUNDING.yml",
    "content": "custom: https://www.paypal.com/donate/?hosted_button_id=U7CLQM3WGTUEJ&locale.x=fr_FR\n"
  },
  {
    "path": ".gitignore",
    "content": "# Application specific \nsrc/LiveboxMonitor/Config.txt\nsrc/LiveboxMonitor/Key.txt\nsrc/LiveboxMonitor/MacAddrTable.txt\nsrc/LiveboxMonitor/SpamCalls.txt\nico/LiveboxMonitor.png\nLiveboxMonitor.bat\nLiveboxMonitor.sublime-project\nLiveboxMonitor.sublime-workspace\nsrc/LiveboxMonitor/custom_icons/\nsrc/LiveboxMonitor/lbcache*/\nsrc/LiveboxMonitor/exports/\nsrc/LiveboxMonitor/build/PyInstall_Win32/\nsrc/LiveboxMonitor/build/PyInstall_Win32_Console/\nsrc/LiveboxMonitor/dist/\nback/\npdocs/\nexperiments/\ntools/\n\n\n# from here, it's : https://github.com/github/gitignore/blob/main/Python.gitignore\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# pdm\n#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.\n#pdm.lock\n#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it\n#   in version control.\n#   https://pdm.fming.dev/#use-with-ide\n.pdm.toml\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\n\n# PyCharm\n#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can\n#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore\n#  and can be added to the global gitignore or merged into this file.  For a more nuclear\n#  option (not recommended) you can uncomment the following to ignore the entire idea folder.\n#.idea/\nPipfile.lock\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022-26 Pierre Dor\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Pipfile",
    "content": "[[source]]\nurl = \"https://pypi.org/simple\"\nverify_ssl = true\nname = \"pypi\"\n\n[packages]\npyqt6 = \"*\"\nrequests = \"*\"\npython-dateutil = \"*\"\ncryptography = \"*\"\npyqtgraph = \"*\"\nwakepy = \"*\"\n\n[dev-packages]\npyinstaller = \"*\"\n\n[requires]\npython_version = \"3\"\n"
  },
  {
    "path": "README.md",
    "content": "# ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_AppIcon.png) LiveboxMonitor\n\nL'application [LiveboxMonitor](https://github.com/p-dor/LiveboxMonitor) est une interface graphique dynamique pour :\n- Contrôler les appareils qui se connectent à la Livebox et détecter rapidement les intrusions,\n- Enregistrer le journal d'activités et recevoir des notifications par email aux connexions ou déconnexions,\n- Obtenir des statistiques détaillées de trafic, par appareil, global,\n- Visualiser graphiquement les statistiques de trafic sur plusieurs jours, par appareil ou par interface,\n- Obtenir beaucoup de détails sur la Livebox elle-même et contrôler la qualité de sa ligne fibre,\n- Avoir beaucoup de détails sur les appareils qui se connectent (actifs ou non),\n- Lire le journal des événements d'un appareil donné,\n- Contrôler de manière fine les réglages du serveur DHCP, des règles NAT/PAT, du DynDNS, de la DMZ, et de la table de routage,\n- Configurer le réseau Wifi et contrôler son état global,\n- Contrôler les appels téléphoniques ainsi que la liste des contacts,\n- Contrôler un ou plusieurs répéteurs Wifi Orange connectés,\n- Contrôler un ou plusieurs décodeurs TV Orange connectés.\n\n**AVERTISSEMENT** : Les architectures étant totalement différentes, **le logiciel n'est pas compatible avec la \"Livebox Pro 4\"**.\n\nL'application est dynamique car elle réagit aux événements envoyés par la Livebox et les interprète.\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DeviceList.png)\n\n\n## Sections de cette documentation\n1. [Installation](#install)\n2. [Configuration minimale](#minimalconfig)\n3. [À propos de l'auteur](#author)\n4. [Discussion](#discussion)\n4. [Supporter le projet](#support)\n5. [Prise en main](#handling)\n6. [Profils](#profiles)\n7. [Options de ligne de commande](#commandline)\n8. [Accès à distance](#remoteaccess)\n9. [Configuration](#configuration)\n10. [Linux](#linux)\n11. [Appareils - Liste des appareils connectés](#devicelist)\n12. [Stats/Infos Livebox - Statistiques de trafic et infos avancées de la Livebox](#infos)\n13. [Graphes - Courbes de trafic par interface et par appareil](#graphs)\n14. [Infos Appareil - Informations détaillées pour chaque appareil connu](#deviceinfos)\n15. [Événements - Liste des événements reçus pour chaque appareil connu](#events)\n16. [DHCP - Contrôle fin du serveur DHCP](#dhcp)\n17. [NAT/PAT - Règles de redirection de port et de protocole](#natpat)\n18. [Téléphone - Liste des appels téléphoniques / liste des contacts](#phone)\n19. [Actions - Boutons d'actions et de contrôle](#actions)\n20. [Onglets répéteurs Wifi](#repeaters)\n21. [Onglets décodeurs TV](#tvdecoders)\n22. [Gestion et personnalisation des icônes d'appareil](#icons)\n23. [Utiliser les APIs Livebox dans votre propre programme Python](#codingguide)\n\n\n## Installation <a id=\"install\"></a>\n\nL'application est écrite en [Python 3.11](https://www.python.org/downloads/) et est basée sur [PyQT 6](https://pypi.org/project/PyQt6/) pour l'interface graphique et sur [PyQtGraph](https://www.pyqtgraph.org/) pour les graphes statistiques.\n\nLes autres dépendances sont `requests`, `cryptography`, `wakepy`, `xmltodict` et `python-dateutil`.\n\n**Note** : Le module `LmSession` est une adaptation du package [sysbus](https://github.com/rene-d/sysbus) pour les Livebox 5, 6 & 7. Le support des événements a aussi été rajouté.\n\n### Téléchargement - version 1.6 (05/08/2025)\n\nDes programmes autonomes construits avec [PyInstaller](https://pyinstaller.org) sont disponibles pour les plateformes Windows & MacOS :\n- Windows : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor.exe)\n- Windows avec console : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor_Console.exe)\n- MacOS (Intel) : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor.dmg)\n- MacOS (Intel) avec console : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor_Console.dmg)\n- MacOS (Silicon) : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor_Silicon.dmg)\n- MacOS (Silicon) avec console : [Télécharger](https://github.com/p-dor/LiveboxMonitor/releases/download/1.6/LiveboxMonitor_Silicon_Console.dmg)\n\nNouveautés de cette version et historique des versions : [ici](https://github.com/p-dor/LiveboxMonitor/blob/main/docs/ReleaseHistory.md) ou [ici](https://github.com/p-dor/LiveboxMonitor/releases).\n\n\n### PyPI - [ici](https://pypi.org/project/LiveboxMonitor/)\n\nInstallation :  \n```\n    pip install LiveboxMonitor\n```\n\nMise à jour :  \n```\n    pip install --upgrade LiveboxMonitor\n```\n\nLancement :  \n```\n    LiveboxMonitor\n```\n\n\n### Utilisation directe via les sources\n\nInstallation :  \n```\n    git clone https://github.com/p-dor/LiveboxMonitor.git  \n    cd LiveboxMonitor  \n    pip install -r requirements.txt\n```\n\nLancement : \n``` \n    cd src\\LiveboxMonitor\n    python3 lbm.py\n```\n\nOu via un virtualenv.\n\nInstallation :  \n```\n    git clone https://github.com/p-dor/LiveboxMonitor.git\n    cd LiveboxMonitor\n    virtualenv -p python3 .venv\n    source .venv/bin/activate\n    pip install -r requirements.txt\n``` \n\nLancement : \n``` \n    cd src\\LiveboxMonitor\n    source .venv/bin/activate\n    python3 lbm.py\n```\n\n\n## Configuration minimale <a id=\"minimalconfig\"></a>\n\nÉtant donné les dépendances documentées de [Python 3.11](https://www.python.org/downloads/release/python-3110/), [PyInstaller](https://pyinstaller.org/en/stable/requirements.html) et de [PyQt6](https://www.qt.io/product/qt6/technical-specifications) la configuration minimale requise pour faire tourner cette application est :\n- Windows : **Windows 10** ou plus récent.\n- MacOS : **MacOS 13 (Ventura)** ou plus récent.\n\n\n## À propos de l'auteur <a id=\"author\"></a>\n\nL'auteur de ce logiciel est un professionnel de l'informatique n'ayant aucun lien avec Orange. Ce logiciel n'est donc en rien un produit d'Orange.  \nAucune documentation officielle des APIs de la Livebox n'étant disponible, l'élaboration a été effectuée à partir de techniques classiques de rétro-ingénierie (reverse engineering), et l'ensemble du projet sur le temps libre de l'auteur.\n\n\n## Discussion <a id=\"discussion\"></a>\n\nSi vous avez un compte GitHub le [forum de discussion](https://github.com/p-dor/LiveboxMonitor/discussions) est actif.\nUn [fil de discussion](https://lafibre.info/orange-les-news/controler-son-reseau-livebox-5-ou-6/) est aussi actif sur le forum [lafibre.info](https://lafibre.info). Il est possible d'y poster vos commentaires, résultats de tests ou de faire des demandes de fonctionnalités.\n\n\n## Supporter le projet <a id=\"support\"></a>\n\nVous pouvez [effectuer un don](https://www.paypal.com/donate/?hosted_button_id=U7CLQM3WGTUEJ&locale.x=fr_FR) à l'auteur pour l'encourager à faire évoluer le projet.  \n[![](https://www.paypalobjects.com/fr_FR/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/donate/?hosted_button_id=U7CLQM3WGTUEJ&locale.x=fr_FR)\n\n\n## Prise en main <a id=\"handling\"></a>\n\nL'interface se veut intuitive mais il vaut mieux se reporter à la documentation pour comprendre certains comportements ou représentations.\nLes points importants à comprendre avant de commencer :\n- La connexion s'établit avec exactement les mêmes informations que pour accéder à l'interface Web de configuration de la Livebox. Pour l'URL il faut essayer http://livebox.home/, http://livebox/ ou http://192.168.1.1/. Pour l'utilisateur il faut laisser à la valeur par défaut `admin`. Et pour le mot de passe c'est soit ce que vous avez indiqué vous-même soit le mot de passe d'origine. Plus d'informations [ici pour la Livebox 5](https://assistance.orange.fr/livebox-modem/toutes-les-livebox-et-modems/installer-et-utiliser/piloter-et-parametrer-votre-materiel/l-interface-de-configuration/livebox-5-acceder-a-l-interface-de-configuration_292471-827404), ou [ici pour la Livebox 6](https://assistance.orange.fr/livebox-modem/toutes-les-livebox-et-modems/installer-et-utiliser/piloter-et-parametrer-votre-materiel/l-interface-de-configuration/livebox-6-acceder-a-l-interface-de-configuration_363963-897414).\n- Il est normal que lors du premier lancement de l'application tous les appareils soient marqués comme inconnus (**INCONNU** en rouge). En effet un des buts de ce programme est d'identifier rapidement des appareils inconnus connectés sur le réseau grâce à une base de noms locale (le fichier `MacAddrTable.txt`). Il faut donc commencer par nommer chaque appareil que vous jugez légitime grâce au bouton `Assigner Nom...` de l'onglet `Infos Appareil`. Cette base locale constituera la référence de confiance de tous les appareils légitimes sur votre réseau. Le bouton `Assigner Noms...` de l'onglet `Appareils` vous permettra aussi de facilement assigner le même nom que celui qui a été donné à la Livebox automatiquement pour tous vos appareils.\n- Il est normal que les statistiques réseau apparaissent et disparaissent. En effet le programme rafraîchit ces statistiques toutes les 3 secondes par défaut (ou toutes les 30 secondes dans certains cas), et si d'un rafraîchissement à l'autre il n'y a pas eu de transfert la case devient vide. Ce choix a été fait pour permettre de mieux visualiser les cases non-vides, là où il se passe quelque chose.\n- Tous les onglets peuvent être déplacés à la souris pour être mis dans l'ordre qui vous convient. Cet ordre sera restauré au prochain lancement du programme.\n- Toutes les colonnes dans le programme sont redimensionnables à la souris sauf certaines qui s'élargissent dynamiquement en fonction de la taille de la fenêtre. Donc, en fonction de la situation, vous pouvez soit redimensionner la colonne soit la fenêtre avec la souris pour ajuster la largeur d'une colonne.\n- On peut copier la valeur de n'importe quelle cellule de liste dans le presse-papiers. Pour cela il suffit de cliquer sur la cellule et de taper Ctrl-C.\n- Le contenu de toutes les listes du programme, y compris celles dans les dialogues, peut être exporté dans un fichier au format CSV exploitable par n'importe quel tableur (type Excel). Il suffit d'un clic droit sur la liste, de sélectionner \"Export...\", et de choisir ses options et colonnes à exporter.\n- Le programme dispose d'une barre de statut en bas de la fenêtre. Elle affiche sur la gauche des tâches en cours et sur la droite le nom du profil en cours (voir la section **Profils** ci-dessous). Un clic sur le nom de profil affichera la fenêtre pour en changer.\n- Des **tooltips** sont disponibles dans l'interface pour vous aider à vous passer de la documentation.\n\n**Attention à propos des statistiques de trafic** : il ne faut pas trop prendre les débits réseau affichés (par appareil ou par interface) au pied de la lettre et c'est probablement pourquoi Orange a choisi de ne plus les exposer. Si vous observez des incohérences il ne s'agit pas d'un bug du logiciel car il se contente d'afficher les données qui remontent de la Livebox, il n'y a rien qu'on puisse faire hélas. Les écarts avec la réalité semblent dépendre du constructeur de l'appareil mesuré. Par exemple avec tous les appareils iOS (iPhone, iPad, ...) les débits semblent démesurés, mais pour certains autres cela semble parfaitement correspondre à la réalité.\n\n\n## Profils <a id=\"profiles\"></a>\nLe programme supporte de pouvoir gérer plusieurs Livebox à l'aide de profils différents. Chaque profil doit avoir un nom unique. Par défaut un profil principal est créé automatiquement, mais il est possible d'en créer d'autres soit au démarrage du programme dans la fenêtre de sélection de profils soit dans les préférences du programme.  \nSi plusieurs profils sont configurés le nom du profil en cours est affiché dans le titre de la fenêtre principale entre crochets.  \nPlusieurs informations sont associées à chaque profil, telle que l'URL de la Livebox, son mot de passe, etc. Le programme associe aussi automatiquement l'adresse physique (MAC) de la Livebox sur laquelle la connexion s'est effectuée.\n\nQue se passe-t-il au lancement du programme ?\n- Si la touche `Ctrl` est enfoncée le programme affiche un dialogue pour sélectionner le profil à utiliser.\n- Sinon, si un profil par défaut est configuré, il sera sélectionné.\n- Sinon, le programme parcourt la liste des profils et cherche si une Livebox avec la même adresse physique que celle associée au profil répond à l'URL du profil. Le premier profil qui répond à ces critères est sélectionné.\n- Si aucun profil trouvé, le programme affiche un dialogue pour sélectionner le profil à utiliser.\n\nLe dialogue de sélection de profils vous prévient si vous tentez d'utiliser un profil pour une Livebox différente de celle avec lequel il est normalement associé. Si vous validez le dialogue, le profil sera mis à jour pour être associé à cette nouvelle Livebox. Le dialogue de sélection de profils vous permet aussi de créer un nouveau profil si aucun dans la liste ne convient.\n\n\n## Options de ligne de commande <a id=\"commandline\"></a>\n\n- `--redir` `-r`  \nPermet de rediriger une URL configurée / utilisée par le programme pour se connecter à la Livebox ou à un répéteur Wifi.\nLe format est `url1=url2`.  \nExemple : `LiveboxMonitor --redir http://livebox/=http://myproxy:2080`  \nAvec cette option le programme utilisera plutôt l'URL 'http://myproxy:2080/' pour se connecter à 'http://livebox/'.  \nCette option peut être utilisée plusieurs fois sur la même ligne.\n\n\n## Accès à distance <a id=\"remoteaccess\"></a>\nIl est possible d'utiliser le programme à distance si l'accès à distance de la Livebox est activé.\nDans la configuration de la Livebox, cliquez sur la tuile \"Mon accès à distance\". Activez l'accès, configurez un nom, un mot de passe, et un numéro de port personnalisé. Vous pouvez aussi en profiter pour activer un DynDNS pour éviter de changer l'URL à chaque fois que votre IP internet change.  \n\nVotre URL de connexion devient alors quelque chose comme ceci : https://monIP:monPort/  \nOu alors si vous avez configuré un DynDNS : https://monNomDeDomaine.com:monPort/  \nÉvidement configurez aussi le nom et le mot de passe de connexion en fonction.\n\n\n## Configuration <a id=\"configuration\"></a>\n\n### Répertoire de configuration\n- Si le programme est lancé par son code source le répertoire de configuration est le même que celui contenant le fichier source de lancement `lbm.py`.\n\n- Si le package PyPI (installation avec la commande 'pip') ou les programmes construits avec [PyInstaller](https://pyinstaller.org) sont utilisés, le répertoire de configuration se trouve dans les répertoires standards du système :\n    - Windows : `%APPDATA%\\LiveboxMonitor`\n    - MacOS : `~/Library/Application Support/LiveboxMonitor`\n\nLe programme créé automatiquement dans son répertoire de configuration trois fichiers :\n- `Key.txt` : clef de chiffrement unique générée pour crypter tous les mots de passe. Cette clef est elle-même cryptée avec une clef qui est calculée par le programme à partir des caractéristiques uniques de votre PC (y compris son nom). Si quelque chose de significatif change sur votre PC (le processeur, l'OS, son nom, etc), cette clef sera régénérée automatiquement et tous vos mots de passe devront être ressaisis.\n- `Config.txt` : contient tous les paramètres de l'application (format JSON).\n- `MacAddrTable.txt` : contient la correspondance entre les adresses MAC et les noms d'appareil (format JSON).\n\n### Le fichier Config.txt\n\nCe fichier JSON est géré automatiquement par l'application et il ne devrait pas être nécessaire de l'éditer. Les réglages principaux se font via le bouton `Préférences...` de l'onglet `Actions`.  \nÀ savoir :  \n- Les mots de passe y sont stockés cryptés grace à la clef de chiffrement du fichier `Key.txt`.\n- La clef `Repeaters` est générée automatiquement par le programme si des mots de passe différents sont utilisés pour le ou les répéteurs Wifi Orange connectés. La structure de ce paramètre est aussi au format JSON, utilise pour clef les adresses MAC des répéteurs, et référence pour chaque répéteur les valeurs 'User' & 'Password'.\n\n### Le fichier MacAddrTable.txt\n\nCe fichier JSON est géré automatiquement par l'application et il ne devrait pas être nécessaire de l'éditer.\nLes clefs correspondent aux adresses MAC des appareils et les valeurs au nom attribué.\nTout appareil détecté dont l'adresse MAC n'est pas répertoriée sera affiché comme 'INCONNU' en rouge. Cette fonctionnalité est surtout utile pour détecter les nouveaux appareils ou des tentatives d'intrusions.\n\nPourquoi utiliser une base de noms locale alors que la Livebox stocke aussi des noms ?\n- Parce que la Livebox \"oublie\" tout appareil qui ne s'est pas connecté depuis plus d'un mois.\n- Parce que parfois la Livebox perd des noms de façon impromptue pour certains appareils. C'est le cas par exemple pour le nom des répéteurs Wifi.  \nUn fichier de noms local offre la garantie de savoir si un appareil est vraiment inconnu.\n\n### Le fichier SpamCalls.txt\n\nCe fichier JSON est géré automatiquement par l'application et il ne devrait pas être nécessaire de l'éditer.\nIl contient tous les numéros de téléphone au format international identifiés comme indésirables. Les appels provenants de ces numéros sont automatiquement marqués comme \"spam\" dans l'onglet `Téléphone`.\n\n\n## Linux <a id=\"linux\"></a>\nEn cas d'utilisation d'un virtualenv, si des erreurs de plugin Qt apparaissent, rajoutez ces commandes pour l'installation :\n\n```\n    apt install qt6-base-dev\n    apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev\n```\n\nEn cas d'erreurs avec Wayland, il est possible de changer le moteur de rendu de Qt avec la variable d’environnement `QT_QPA_PLATFORM`.  \nPar exemple : `QT_QPA_PLATFORM=xcb python3 lbm.py` permet d'utiliser X Window directement (qui éventuellement sera rendu avec Xwayland mais cela fonctionne).\n\nUne autre méthode consiste à supprimer la variable d’environnement `WAYLAND_DISPLAY` uniquement pour l’exécution du programme et pas de façon globale, pour ce faire : `env -u WAYLAND_DISPLAY python3 lbm.py`.\n\n\n## Appareils - Liste des appareils connectés <a id=\"devicelist\"></a>\n\n### Liste\nLa liste des appareils affiche les colonnes suivantes :\n- **T** : icône correspondant au type de l'appareil. Ce type peut être attribué ou changé via le bouton `Assigner Type...` de l'onglet `Infos Appareil`.\n- **Nom** : nom local de l'appareil. Ce nom peut être attribué, changé ou supprimé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n- **Nom Livebox** : nom de l'appareil tel que paramétré dans la Livebox et visible dans l'interface Web de la Livebox. Ce nom peut être attribué, changé ou supprimé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n- **MAC** : adresse MAC, aussi appelée adresse physique de l'appareil.\n- **IP** : adresse IP v4 de l'appareil sur le LAN. Cette adresse s'affiche en caractères gras si cette adresse est réservée pour cet appareil dans la configuration DHCP de la Livebox. Et elle s'affiche en rouge si l'adresse n'est pas atteignable sur le réseau (unreacheable), typiquement lorsque l'appareil n'est pas actif.\n- **Accès** : point d'accès de l'appareil sur le réseau. D'abord le nom de l'appareil, c'est-à-dire la Livebox elle-même ou le nom d'un des répéteurs Wifi Orange connectés, et ensuite l'interface sur cet appareil. `Eth` signifie une des prises Ethernet suivi du numéro de prise. `Wifi` signifie une connexion Wifi suivi par la bande de connexion.\n- **A** : indique par une icône si l'appareil est actif ou non. Par défaut la liste est triée pour montrer d'abord les appareils actifs.\n- **Wifi** : qualité de la connexion Wifi.\n- **E** : indique par une icône avec un point d'exclamation ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Exclamation.png) lorsqu'un événement est reçu pour cet appareil. La liste détaillée des événements, ainsi que le contenu des événements eux-mêmes, peuvent être consultés via l'onglet `Événements`.\n- **Rx** : nombre d'octets reçus par l'appareil depuis le dernier démarrage de la Livebox.\n- **Tx** : nombre d'octets envoyés par l'appareil depuis le dernier démarrage de la Livebox.\n- **TauxRx** : taux d'octets reçus par seconde par l'appareil dans les dernières 30 secondes si affiché en noir, dans les trois dernières secondes si affiché en bleu (fréquence réglable dans les préférences).\n- **TauxTx** : taux d'octets envoyés par seconde par l'appareil dans les dernières 30 secondes si affiché en noir, dans les trois dernières secondes si affiché en bleu (fréquence réglable dans les préférences).\n\nLes statistiques d'octets envoyés ou reçus par seconde sont calculées grâce aux statistiques envoyées par la Livebox sous forme d'événement toutes les 30 secondes par appareil. Cette résolution étant peu significative le programme utilise une autre interface disponible pour les appareils Wifi uniquement pour obtenir des statistiques toutes les trois secondes (option pour les activer/désactiver dans les préférences, ainsi que la fréquence). Ces dernières sont affichées en bleu.  \nSi une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par la Livebox.\nLes statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie la Livebox (il ne s'agit pas d'un défaut du programme).  \n**Note** : le trafic TV standard de la box TV UHD n'est pas comptabilisé dans les statistiques pour cet appareil. Par contre celui de services VOD tel que Netflix est bien comptabilisé.\n\n\n### Boutons\nL'onglet `Appareils` propose les boutons suivants :\n- **`Rafraîchir`** : permet de forcer le rafraîchissement de la liste des appareils, non seulement dans cet onglet mais aussi dans les onglets `Infos Appareil` et `Événements`. Utile par exemple si le programme est actif alors que l'ordinateur sort de veille : des événements ayant probablement été raté par le programme, un rafraîchissement permettra de retrouver une vue à jour.\n- **`Assigner Noms...`** : permet d'assigner le même nom que celui qui a été donné à la Livebox automatiquement pour tous les appareils inconnus.\n- **`Infos Appareil`** : permet de basculer dans l'onglet `Infos Appareil` pour l'appareil sélectionné et de voir directement ses informations.\n- **`Événements Appareil`** : permet de basculer dans l'onglet `Événements` pour l'appareil sélectionné et de voir directement les événements reçus le concernant.\n- **`IPv6...`** : permet d'avoir le statut d'activation de l'IPv6, l'adresse IPv6 de la Livebox ainsi que son préfixe, et la liste des appareils connectés ou non ayant une ou plusieurs IPv6 assignées. Permet également de visualiser le mode de connexion et de contrôler le réglage CGNat.\n- **`DNS...`** : permet d'avoir la liste des noms DNS assignés aux appareils. Ces noms DNS peuvent être attribués, changés ou supprimés via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n\n\n## Stats/Infos Livebox - Statistiques de trafic et infos avancées de la Livebox <a id=\"infos\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_LiveboxInfos.png)\n\nLes statistiques de trafic par interface sont affichées sous forme de liste en haut à gauche.\nEt toutes les informations sont accessibles par les boutons, chaque bouton remplissant la liste d'attributs sur la droite. Il est aussi possible d'exporter l'ensemble des informations dans un fichier.\n\n### Statistiques\n\nListe permettant de surveiller l'état du trafic :\n- **Nom** : nom de l'interface réseau. `Fiber` concerne tout le trafic WAN, c'est-à-dire externe entre la Livebox et internet. `LAN` tout le trafic interne transitant à travers la Livebox. Ensuite on dispose des statistiques par interface précise. Les interfaces `Guest` concernent le trafic du réseau Wifi invité, s'il est activé.\n- **Rx** : nombre d'octets reçus par l'interface. La fenêtre de temps de ce total n'est pas connue. S'affiche en rouge si des erreurs de transmission sont détectées. Attention ce compteur est circulaire et ne dépasse pas les 4 Go pour certaines interfaces. En effet pour d'autres, un compteur de plus haute résolution est interprété toutes les 30 secondes environ et qui vient remplacer au lancement du programme le compteur de base limité à 4 Go.\n- **Tx** : nombre d'octets envoyés par l'interface. La fenêtre de temps de ce total n'est pas connue. S'affiche en rouge si des erreurs de transmission sont détectées. Attention ce compteur est circulaire et ne dépasse pas les 4 Go pour certaines interfaces. En effet pour d'autres, un compteur de plus haute résolution est interprété toutes les 30 secondes environ et qui vient remplacer au lancement du programme le compteur de base limité à 4 Go.\n- **TauxRx** : taux d'octets reçus par seconde par l'interface dans les trois dernières secondes (fréquence réglable dans les préférences). S'affiche en rouge si des erreurs de transmission sont détectées. \n- **TauxTx** : taux d'octets envoyés par seconde par l'interface dans les trois dernières secondes (fréquence réglable dans les préférences). S'affiche en rouge si des erreurs de transmission sont détectées.\n\nSi une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par la Livebox.\nLes statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie la Livebox (il ne s'agit pas d'un défaut du programme).\n**Note** : le trafic TV standard de la box TV UHD n'est pas comptabilisé dans ces statistiques. Par contre celui de services VOD tel que Netflix est bien comptabilisé.\n\n### Boutons\nL'onglet `Stats/Infos Livebox` propose les boutons suivants :\n- **`Infos Livebox`** : affiche les informations principales concernant la Livebox, telles que les versions de logiciels, l'adresse IP WAN, les services actifs, l'état de la mémoire, etc.\n- **`Infos Internet`** : affiche le type d'accès internet, les identifiants de connexion, les adresses IPs v4 & v6, la date et heure de la dernière connexion, la bande passante de la connexion, la MTU, etc\n- **`Infos Wifi`** : affiche les informations générales sur la connectivité Wifi, et l'état de chaque accès y compris pour les accès invités. Pour chaque accès on dispose d'informations détaillées telles que le canal, le standard, la bande passante, la qualité, la bande, le nombre d'appareils connectés, etc.\n- **`Infos LAN`** : affiche les informations générales sur la connectivité LAN. Il s'agit des informations DHCP de base et pour chaque interface Ethernet on peut identifier si elle est active ou non, la bande passante, etc.\n- **`Infos ONT`** : affiche les informations importantes concernant la connexion et le module Fibre (ONT), telles que la bande passante, la qualité du signal, le numéro de série et les versions logicielles, etc. Les champs `Puissance Signal Réception`, `Puissance Signal Transmission`, `Température`, `Voltage` et `BIAS` affichent des valeurs vertes si elles correspondent aux normes de qualité acceptables pour la connexion, en rouge si elles représentent un problème, en orange si elles sont aux limites acceptables.\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_LiveboxInfos_ONT.png)\n- **`Infos VoIP`** : affiche les informations générales concernant la téléphonie, telles que le protocole, le numéro de téléphone, la version logicielle de l'interface DECT, etc.\n- **`Infos IPTV`** : affiche les informations générales relatives aux services de télévision.\n- **`Infos USB`** : affiche les informations concernant le ou les ports USBs. Si une clef USB est insérée, ou a été insérée depuis le dernier démarrage de la Livebox, ses informations sont affichées.\n- **`Export...`** : permet d'exporter l'ensemble des informations affichées par chacun des boutons dans un fichier texte. Utile pour communiquer ces informations ou faire un suivi pour détecter les changements.\n\n\n## Graphes - Courbes de trafic par interface et par appareil <a id=\"graphs\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Graph.png)\n\nAffiche les graphiques des données reçues et transmises pour chaque interface / appareil sélectionné à partir de données stockées par la Livebox elle-même. Les volumes sont en méga-octets par seconde, avec un échantillonnage en principe toutes les 30 secondes (l'échantillonnage et sa fréquence sont contrôlés par la Livebox). Les graphes se mettent à jour automatiquement à la réception de nouveaux échantillons sous forme d'événements.  \nIl est possible de naviguer et de zoomer dans les graphiques à la souris, puis de revenir à la vue normale en cliquant dans le coin en bas à gauche. Un clic droit sur un graphe permet d'accéder à d'autres fonctionnalités telles que l'exportation en différents formats. Toute la documentation est accessible [ici](https://pyqtgraph.readthedocs.io/en/latest/user_guide/index.html).\n\n### Sélection des interfaces et des appareils\nIl faut commencer par sélectionner les interfaces et/ou les appareils dont on veut obtenir les graphiques, pour cela deux boutons sont disponibles :\n- **`Ajouter...`** : affiche un dialogue permettant de sélectionner une interface ou un appareil.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Graph_Add.png)\n\n    Commencer par sélectionner le type, interface ou appareil. Puis l'interface ou l'appareil en question, ainsi que la couleur à utiliser sur le graphique pour cet objet. La sélection n'affiche que des objets pour lesquels des mesures sont potentiellement disponibles. Pour les appareils les noms locaux sont utilisés, et par défaut l'adresse physique (MAC). Le dialogue affiche en informations complémentaires l'identifiant interne à la Livebox de l'objet sélectionné, le nombre d'échantillons stockés dans la Livebox pour cet objet (le nombre maximum est fixé à 8680 par la Livebox) et une estimation de la fenêtre de temps correspondante. Cependant cette fenêtre de temps peut être erronée, car si l'interface ou l'appareil sont déconnectés pendant une période de temps aucun échantillon n'est émis durant cette période. Ce qui veut dire que la période de temps totale entre le plus ancien échantillon et le plus récent peut être bien plus longue que cette estimation.\n- **`Supprimer`** : permet de supprimer l'interface ou l'appareil sélectionné.\n\n### Options des graphiques\nDes options sont disponibles pour paramétrer les graphiques :\n- **`Fenêtre`** : fenêtre de temps en heure de l'affichage des graphiques, à partir du présent. Une valeur à 0 affichera l'ensemble des statistiques disponibles dans la Livebox pour les objets sélectionnés.\n- **`Couleur de fond`** : couleur de fond à utiliser pour les graphiques de réception et d'émission. Un clic droit supprime toute couleur, la couleur par défaut sera donc utilisée.\n\n### Génération des graphiques\nLe bouton **`Appliquer`** permet de charger toutes les informations relatives aux interfaces et appareils sélectionnés, de dessiner les graphiques correspondants en tenant compte des options ci-dessus, et de sauvegarder la configuration. Celle-ci sera automatiquement rechargée au prochain lancement du programme.  \n\nLe bouton **`Export...`** permet d'exporter au format CSV (avec le point-virgule comme séparateur) les dernières données chargées par le bouton `Appliquer` ainsi que celles reçues entre temps via des événements.\n\n\n## Infos Appareil - Informations détaillées pour chaque appareil connu <a id=\"deviceinfos\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DeviceInfos.png)\n\nLa liste des appareils connus, sur la gauche, affiche les colonnes suivantes :\n- **Nom** : nom local de l'appareil. Ce nom peut être attribué, changé ou supprimé via le bouton `Assigner Nom...`.\n- **MAC** : adresse MAC, aussi appelée adresse physique de l'appareil.\n\nLorsqu'un appareil est sélectionné dans cette liste ses informations détaillées s'affichent dans la liste de droite. Attributs notables :\n- **Actif** : indique si l'appareil est actif ou non.\n- **Authentifié** : indique si la connexion Wifi de l'appareil a bien été authentifiée.\n- **Bloqué** : indique si vous avez bloqué la connexion de l'appareil à la Livebox ou non. Le blocage peut être contrôlé avec les boutons `Bloquer` et `Débloquer`. Il peut être utile de bloquer un appareil inconnu si vous avez des suspicions.\n- **Première Connexion** : date et heure de la première connexion. Attention cette valeur peut aussi correspondre à la date/heure d'un précédent redémarrage de la Livebox.\n- **Dernière Connexion** : date et heure de la dernière connexion.\n- **Dernier Changement** : date et heure du dernier changement détecté pour cet appareil.\n- **Nom** : nom connu par la Livebox pour cet appareil, avec la source de ce nom entre parenthèses. Ainsi plusieurs noms peuvent s'afficher pour des sources différentes.\n- **Type** : type connu par la Livebox pour cet appareil, avec la source de ce type entre parenthèses. Ainsi plusieurs types peuvent s'afficher pour des sources différentes.\n- **Adresse IPvX** : adresse IP (v4 ou v6) de l'appareil. Entre parenthèses s'affiche si l'adresse est celle active ou non, et atteignable sur le réseau (reacheable) ou non (not reacheable). Si l'adresse est réservée pour cet appareil dans la configuration DHCP de la Livebox une mention s'affiche (Reserved).\n- **Fabricant** : le fabricant de cet appareil, déduit à partir de son adresse MAC. Le programme utilise l'API du site [macaddress.io](https://macaddress.io/) pour déterminer le fabricant. C'est un service gratuit, mais il faut créer un compte et indiquer l'API Key correspondante dans les préférences pour bénéficier de cette fonctionnalité.\n- **Force Signal Wifi** et **Taux Bruit Signal Wifi** : donnent des indications sur la qualité de la connexion pour les appareils Wifi.\n\n### Boutons\nL'onglet `Infos Appareil` propose les boutons suivants :\n- **`Rafraîchir`** : rafraîchit les informations affichées pour l'appareil sélectionné.\n- **`Assigner Nom...`** : permet d'attribuer ou d'effacer le nom local, le nom Livebox et/ou le nom DNS de l'appareil sélectionné.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DeviceInfos_AssignName.png)\n\n    Décocher la boite pour effacer le nom. Les trois noms peuvent bien sûr être différents.\n- **`Assigner Type...`** : permet d'attribuer ou d'effacer le type de l'appareil sélectionné.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DeviceInfos_AssignType.png)\n\n    Il est possible de sélectionner un des types standards connus par la Livebox dans le menu, chaque type étant affiché avec son icône Livebox correspondante. Lorsqu'un type standard est sélectionné, son nom connu par la Livebox est automatiquement rempli dans la zone de texte et on peut valider le dialogue. Il reste possible d'assigner manuellement un type non connu par la Livebox en le tapant directement dans la zone de texte. Note : bien que le type \"Djingo Speaker\" soit référencé comme standard par la Livebox 5, ce type ne semble pas (encore ?) supporté par l'interface graphique de la Livebox. **Attention**: si vous assignez le type \"Wi-Fi Repeater\" (valeurs \"repeteurwifi\", \"repeteurwifi6\" ou \"SAH AP\") à un appareil le logiciel l'identifiera comme répéteur Orange et essaiera de s'y connecter. Donc s'il ne s'agit pas vraiment d'un répéteur Orange vous aurez une erreur de connexion au démarrage.\n- **`Oublier...`** : permet de demander à la Livebox d'oublier définitivement cet appareil. Il disparaîtra donc immédiatement de toutes les listes. Attention si l'appareil en question est actif, sa connexion ne sera nullement suspendue, cependant toute son activité restera invisible et ce jusqu'à sa prochaine tentative de connexion.\n- **`WakeOnLAN`** : permet d\\'envoyer un signal de réveil sur réseau à l'appareil sélectionné. Celui-ci doit être configuré pour s'allumer à la réception de ce signal (option WOL) pour que cela fonctionne.\n- **`Bloquer`** : permet de bloquer la connexion de l'appareil sélectionné.\n- **`Débloquer`** : permet de débloquer la connexion de l'appareil sélectionné. L'état bloqué ou non s'affiche dans les informations de l'appareil, champs \"Bloqué\".\n\n\n## Événements - Liste des événements reçus pour chaque appareil connu <a id=\"events\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Events.png)\n\nLa liste des appareils connus, sur la gauche, affiche les colonnes suivantes :\n- **Nom** : nom local de l'appareil. Ce nom peut être attribué, changé ou supprimé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n- **MAC** : adresse MAC, aussi appelée adresse physique de l'appareil.\n\nLorsqu'un appareil est sélectionné dans cette liste tous les événements reçus depuis le lancement du programme pour cet appareil s'affichent dans la liste de droite. La plupart de ces événements ont été interprétés par le programme pour mettre à jour l'interface dynamiquement, et cette liste permet d'avoir un historique. La taille de cet historique par appareil est limitée aux 100 dernières entrées (cette limite peut être ajustée facilement en modifiant la variable `MAX_EVENT_BUFFER_PER_DEVICE` du module `LmEventsTab.py`).\n\nLa liste des événements est composée des colonnes :\n- **Heure** : heure de réception de l'événement.\n- **Raison** : le type d'événement généré par la Livebox.\n- **Attributs** : aperçu des données brutes de l'événement lui-même, au format JSON.\n\nUn double clic sur un événement ou un clic sur le bouton **`Afficher Événement`** permet d'afficher un dialogue contenant les informations complètes :\n- **Raised** : date et heure précise de réception de l'événement.\n- **Handler** : gestionnaire de l'événement, contenant la plupart du temps la clef de l'appareil qui n'est autre que son adresse MAC.\n- **Reason** : le type d'événement.\n- **Attributes** : données brutes complètes de l'événement lui-même, au format JSON tel que généré par la Livebox.  \n\n### Notifications automatiques\n- Le bouton **`Notifications...`** permet d'accéder à la configuration des notifications automatiques à générer (par exemple par email) à la détection de certains événements.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Events_Notifications.png)\n\n    Vous pouvez créer autant de règles que nécessaire. Ce n'est pas grave si plusieurs règles concernent le ou les mêmes appareils, le programme ne détecte pas non plus les règles dupliquées. Il suffit qu'au moins une règle soit trouvée qui concerne une notification pour un appareil pour que cette notification soit effectuée.\n    La liste affiche la liste des règles configurées, avec le ou les appareils concernés, les pastilles bleues indiquent les événements sélectionnés pour la notification, les pastilles vertes le ou les types de notifications sélectionnés (email et/ou fichiers CSV journaliers). Les boutons **`Ajouter`** et **`Supprimer`** permettent de créer une règle ou de supprimer la règle sélectionnée.  \n\n    Paramètres d'une règle :\n    - **`Appareil`** : permet de sélectionner le ou les appareils pour lesquels recevoir une notification. `Tout appareil` appliquera la règle pour l'ensemble des appareils. `Tout appareil inconnu` appliquera la règle à n'importe quel appareil inconnu.\n    - **`Adresse MAC`** : adresse physique de l'appareil sélectionné.\n    - **`Événements`** : sélection des événements pour lesquels recevoir une notification. Ajout ou suppression d'appareils, connexion, déconnexion, ou changement de points d'accès (utile si vous disposez d'un ou plusieurs répéteurs Wifi Orange).\n    - **`Actions`** : sélection des actions à réaliser pour notifier. Il est possible de reporter les événements dans un fichier CSV journalier, ou d'envoyer les informations de chaque événement par email instantané.\n\n    Préférences des notifications:\n    - **`Fréquences Résolution des Événements`** : les événements sont détectés instantanément, cependant certains événements peuvent s'annuler lorsque générés dans une courte fenêtre de temps, tels que la déconnexion suivie d'une reconnexion dans les 15 secondes d'un appareil donné (arrive fréquemment). Pour éviter des notifications intempestives un temps d'attente de 30 secondes est fortement recommandé pour laisser le programme identifier ces situations. Un temps inférieur à 5 secondes est fortement déconseillé pour éviter que le programme ne consomme trop de ressources.\n    - **`Répertoire des fichiers CSV`** : répertoire dans lequel générer les fichiers CSV journaliers. Cocher l'option `Défaut` pour générer les fichiers dans le [le répertoire de configuration du programme](#configuration). Sinon cliquer sur le bouton `Sélectionner` pour choisir un répertoire spécifique.\n\n## DHCP - Contrôle fin du serveur DHCP <a id=\"dhcp\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DHCP.png)\n\n### Baux statiques\nLa liste des baux statiques configurés est affichée sur la gauche. Les deux domaines de réseau sont gérés :\n- `Home` : votre réseau privé, dont vous pouvez configurer sa plage d'IPs.\n- `Guest` : le réseau Wifi invité, qui a sa propre plage d'IPs (non-modifiable).\n\nLa liste affiche les colonnes suivantes :\n- **Nom** : nom local de l'appareil. Ce nom peut être attribué, changé ou supprimé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n- **Domaine** : domaine d'assignation, `Home` ou `Guest`.\n- **MAC** : adresse MAC, aussi appelée adresse physique de l'appareil.\n- **IP** : adresse IP assignée statiquement à l'appareil.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des baux :\n- **`Rafraîchir`** : rafraîchit la liste des baux statiques.\n- **`Ajouter...`** : permet d'ajouter un bail.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DHCP_AddBinding.png)\n\n    La liste des appareils proposés est triée et est composée d'un mélange des appareils connectés et ceux référencés dans le fichier local des adresses MAC. L'adresse MAC est directement déduite de l'appareil sélectionné mais on peut en taper une totalement à la main. Choisir le domaine réseau entre `Home` ou `Guest`, et une adresse IP libre sera automatiquement proposée mais celle ci reste bien sûr configurable. Attention un même appareil ne peut être configuré que sur un seul domaine, et s'il se connecte sur un domaine alors qu'un bail statique est configuré sur l'autre ce bail sera automatiquement supprimé.\n- **`Supprimer`** : supprime le bail sélectionné.\n\n### Informations DHCP détaillées\nLa liste sur la droite affiche de nombreux détails sur le serveur DHCP:\n- La configuration détaillée des deux domaines `Home` et `Guest`.\n- Des détails sur le DHCPv4 ainsi que toutes les options DHCP envoyées et reçues.\n- Des détails sur le DHCPv6 ainsi que toutes les options DHCP envoyées et reçues.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des baux :\n- **`Rafraîchir`** : rafraîchit la liste des informations DHCP.\n- **`Réglages DHCP...`** : permet de configurer le serveur DHCP.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_DHCP_Setup.png)\n\n    Permet d'activer ou de désactiver le serveur, de changer l'adresse IP de la Livebox, de changer le masque de sous-réseau du serveur DHCP ainsi que la plage d'adresse IP pour le domaine `Home`.\n\n\n## NAT/PAT - Règles de redirection de port et de protocole <a id=\"natpat\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_NatPat.png)\n\nCet onglet permet de gérer de façon fine les règles de redirection de port et de protocole IPv4, IPv6 et UPnP de la Livebox. De par cette gestion fine il peut arriver que certaines règles, bien que correctement stockées et interprétées par la Livebox, ne s'affichent pas dans l'interface Web de la Livebox. Ceci est normal et ne représente pas vraiment de problème.\n\n### Redirections de port\nLa liste des règles de redirection de port, en haut, affiche les colonnes suivantes :\n- **A** : icône indiquant si la règle est active ou non.\n- **Type** : type de la règle, entre IPv4, IPv6 et UPnP. Les règles UPnP sont gérées automatiquement par la Livebox et vous ne devriez normalement pas avoir à les modifier.\n- **Nom** : nom de la règle.\n- **Description** : description de la règle.\n- **Protocoles** : liste des protocoles concernés par la règle. \n- **Port Interne** : port ou plage de ports interne sur lequel le trafic est redirigé.\n- **Port Externe** : port ou plage de ports externe à rediriger.\n- **Appareil** : appareil (ou son adresse IP) sur lequel le trafic est redirigé.\n- **IP Externes** : liste des adresses IPs externes concernées par la règle.\n\nUn **double clic** sur une règle permet de facilement l'éditer.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des règles :\n- **`Rafraîchir`** : rafraîchit la liste des règles de redirection de port.\n- **`Activer/Désactiver`** : active/désactive la règle sélectionnée.\n- **`Ajouter...`** : permet d'ajouter une règle de redirection de port.\n- **`Modifier...`** : permet de modifier la règle de redirection de port sélectionnée.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_NatPat_PortForwarding.png)\n\n- **`Supprimer`** : supprime la règle de redirection de port sélectionnée.\n- **`Tout Supprimer...`** : permet de supprimer toutes les règles de redirection de port. Il est possible de supprimer uniquement une sélection de types de règle. Si une ou plusieurs règles posent problème à la Livebox (par exemple lorsque leur nom contient des caractères spéciaux) ce bouton peut permettre de revenir à une situation saine.\n- **`Export...`** : permet d'exporter dans un fichier les règles de redirection de port d'un ou plusieurs types choisis.\n- **`Import...`** : permet de réimporter des règles de redirection de port précédemment exportées dans un fichier. Si des règles de même nom existent déjà elles seront écrasées par celles importées.\n\n### Redirections de protocole\nLa liste des règles de redirection de protocole, en bas, affiche les colonnes suivantes :\n- **A** : icône indiquant si la règle est active ou non.\n- **Type** : type de la règle, entre IPv4 et IPv6.\n- **Nom** : nom de la règle.\n- **Description** : description de la règle.\n- **Protocoles** : liste des protocoles concernés par la règle. \n- **Appareil** : appareil (ou son adresse IP) sur lequel le trafic est redirigé. En IPv6 il est aussi possible de spécifier un préfix plutôt qu'une adresse.\n- **IP Externes** : liste des adresses IPs externes concernées par la règle.\n\nUn **double clic** sur une règle permet de facilement l'éditer.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des règles :\n- **`Rafraîchir`** : rafraîchit la liste des règles de redirection de protocole.\n- **`Activer/Désactiver`** : active/désactive la règle sélectionnée.\n- **`Ajouter...`** : permet d'ajouter une règle de redirection de protocole.\n- **`Modifier...`** : permet de modifier la règle de redirection de protocole sélectionnée.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_NatPat_ProtocolForwarding.png)\n\n- **`Supprimer`** : supprime la règle de redirection de protocole sélectionnée.\n- **`Tout Supprimer...`** : permet de supprimer toutes les règles de redirection de protocole. Il est possible de supprimer uniquement une sélection de types de règle. Si une ou plusieurs règles posent problème à la Livebox (par exemple lorsque leur nom contient des caractères spéciaux) ce bouton peut permettre de revenir à une situation saine.\n- **`Export...`** : permet d'exporter dans un fichier les règles de redirection de protocole d'un ou plusieurs types choisis.\n- **`Import...`** : permet de réimporter des règles de redirection de protocole précédemment exportées dans un fichier. Si des règles de même nom existent déjà elles seront écrasées par celles importées.\n\n\n## Téléphone - Liste des appels téléphoniques / liste des contacts <a id=\"phone\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Phone.png)\n\n### Appels téléphoniques\nLa liste des appels téléphoniques, sur la gauche, affiche les colonnes suivantes :\n- **T** : icône correspondant au type de l'appel.\n    - ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Call_In.png) : appel reçu.\n    - ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Call_In_Missed.png) : appel manqué. Dans ce cas toute la ligne est indiquée en couleur rouge.\n    - ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Call_Out.png) : appel émis.\n    - ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Call_Out_Failed.png) : appel émis mais non abouti.\n- **Heure** : date et heure de l'appel.\n- **Numéro** : numéro de téléphone concerné.\n- **Contact** : le nom du contact déterminé par la Livebox en fonction de la liste des contacts au moment de l'appel. Si la Livebox n'a mémorisé aucun nom, alors le programme essai d'en trouver un dynamiquement à partir de la liste des contacts enregistrés par correspondance avec le numéro de téléphone. Si un numéro de téléphone indésirable a été mémorisé (voir fichier \"SpamCalls.txt\") il est automatiquement indiqué comme \"# SPAM #\".\n- **Durée** : durée de l'appel.\n\nUn **double clic** sur un appel permet de facilement créer ou éditer le contact correspondant.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des appels :\n- **`Rafraîchir`** : rafraîchit la liste des appels.\n- **`Supprimer`** : supprime l'appel sélectionné.\n- **`Tout Supprimer...`** : supprime tous les appels.\n- **`Scanner spams`** : analyse tous les appels entrants non identifiés et vérifie, via l'API du site [callfilter.app](https://callfilter.app/), si le numéro est indésirable ou non (démarchages, fraudes, etc). Tous les spams identifiés sont marqués comme \"# SPAM #\" et le programme les mémorise dans le fichier \"SpamCalls.txt\" stocké dans [le répertoire de configuration du programme](#configuration). Ce fichier JSON peut être facilement modifié manuellement (ne pas le faire lorsque le programme est en cours d’exécution). Pour pouvoir utiliser cette fonctionnalité une API Key Call Filter doit être configurée dans les préférences. Pour demander une API Key (service gratuit pour 15 requêtes par minute maximum), vous devez envoyer un email en anglais à info@callfilter.app en précisant :\n    - Les tâches pour lesquelles vous prévoyez d'utiliser l'API.\n    - Le nombre de requêtes par jour (minute, heure) que vous prévoyez d'effectuer.\n- **`Sites spam`** : ouvre deux sites webs ([numeroinconnu.fr](https://www.numeroinconnu.fr/) et [callfilter.app](https://callfilter.app/)) sur votre navigateur permettant de vérifier l'origine de l'appel sélectionné.\n- **`Marquer/Retirer spam`** : permet de marquer ou de démarquer manuellement un appel entrant comme étant indésirable. Cette action est également enregistrée dans le fichier local \"SpamCalls.txt\".\n\n### Contacts\nLa liste des contacts, sur la droite, affiche les colonnes suivantes :\n- **Nom** : nom du contact, au format nom + prénom.\n- **Portable** : numéro de téléphone portable.\n- **Domicile** : numéro de téléphone fixe.\n- **Travail** : numéro de téléphone professionnel.\n- **Sonnerie** : type de sonnerie sélectionné parmi les 7 supportés par la Livebox.\n\nUn **double clic** sur un contact permet de facilement l'éditer.  \n**Attention** : la Livebox supporte un maximum de 255 contacts.\n\n### Boutons\nLes boutons suivants sont proposés pour gérer la liste des contacts :\n- **`Rafraîchir`** : rafraîchit la liste des contacts.\n- **`Ajouter...`** : permet de rajouter un contact. Attention aucun test de doublon n'est effectué.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Phone_Contact.png)\n\n- **`Modifier...`** : pour éditer le contact sélectionné.\n- **`Supprimer`** : supprime le contact sélectionné.\n- **`Tout Supprimer...`** : supprime tous les contacts.\n- **`Sonnerie`** : permet de tester le téléphone. Sur la gauche du bouton on peut sélectionner un des 7 types de sonnerie proposés par la Livebox, sinon le type par défaut est utilisé.\n- **`Export...`** : permet d'exporter l'ensemble des contacts dans un fichier au [format VCF](https://en.wikipedia.org/wiki/VCard). Très utile pour les sauvegarder.\n- **`Import...`** : permet d'importer un ou plusieurs fichiers au [format VCF](https://en.wikipedia.org/wiki/VCard). Attention aucun test de doublon n'est effectué. Si la limite du nombre de contacts maximum supporté (255) est atteint l'import est interrompu.\n\n\n## Actions - Boutons d'actions et de contrôle <a id=\"actions\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions.png)\n\nCet onglet permet une liste d'actions par catégorie.\n\nLes actions concernant le **Wifi** :\n- **`Configuration...`** : permet de configurer toutes les bandes radios du réseau Wifi. Attention : le changement de largeur de bande n'est pas garanti de fonctionner dans tous les cas. Par exemple sur la bande radio 5 GHz le changement n'est pas pris en compte par les Livebox 4 et 5.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_WifiConfig.png)\n\n- **`Wifi ON`** : permet d'activer l'interface Wifi de la Livebox.\n- **`Wifi OFF`** : permet de désactiver l'interface Wifi de la Livebox.\n- **`Invité...`** : permet de configurer toutes les bandes radios du réseau Wifi Invité.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_WifiConfigGuest.png)\n\n- **`Invité ON`** : permet d'activer l'interface Wifi Invité de la Livebox.\n- **`Invité OFF`** : permet de désactiver l'interface Wifi Invité de la Livebox.\n- **`Planificateur Wifi ON`** : permet d'activer le planificateur Wifi de la Livebox. Ce planificateur doit être configuré depuis l'interface Web de la Livebox.\n- **`Planificateur Wifi OFF`** : permet de désactiver le planificateur Wifi de la Livebox.\n- **`État Global Wifi...`** : permet d'afficher l'état global du Wifi, en incluant l'état Wifi de tous les répéteurs Wifi Orange potentiellement connectés.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_WifiGlobalStatus.png)\n\nLes actions **Diverses** :\n- **`Sauvegarde et Restauration...`** : permet de régler la sauvegarde automatique de la configuration de la Livebox, de déclencher une sauvegarde ou de demander une restauration de la configuration.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_BackupRestore.png)\n- **`LEDs et Écran...`** : permet de régler le niveau de luminosité des LEDs et l'affichage du mot de passe Wifi sur l'écran de la Livebox. Cette fonctionalité est disponible uniquement à partir de la Livebox 6.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_Screen.png)\n\nLes actions concernant les **Redémarrages** :\n- **`Redémarrer la Livebox...`** : permet de forcer un redémarrage de la Livebox.\n- **`Réinitialiser la Livebox...`** : permet de réinitialiser la Livebox aux paramètres d'usine. Si la restauration automatique de votre configuration est activée un dialogue vous permettra de la désactiver.\n- **`Historique Redémarrages...`** : permet d'afficher l'historique des derniers redémarrages.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_RebootHistory.png)\n\n    Cet historique est particulièrement utile pour détecter les redémarrages forcés par Orange pour mettre à jour le logiciel de la Livebox.\n    La liste affiche les colonnes suivantes :\n    - **Date Redémarrage** : date et heure du démarrage.\n    - **Raison Redémarrage** : la raison de ce démarrage. Typiquement \"NMC\" indique un démarrage forcé par logiciel et \"Unsupported chipset\" un redémarrage causé par une coupure de courant ou l'interrupteur de la Livebox.\n    - **Date Arrêt** : la date et heure de l'arrêt.\n    - **Raison Arrêt** : la raison de cet arrêt. Typiquement vide pour une coupure de courant, \"Upgrade\" pour une mise à jour logiciel et \"GUI_Reboot\" pour un redémarrage demandé depuis l'interface Web ou LiveboxMonitor.\n\nLes actions concernant le **Réseau** :\n- **`Niveaux de pare-feu...`** : permet de régler les niveaux des pare-feux IPv4 et IPv6.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_FirewallLevels.png)\n- **`Réponses aux pings...`** : permet de régler les réponses aux requêtes de ping IPv4 et IPv6.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_PingResponses.png)\n- **`DynDNS...`** : permet de régler les domaines DynDNS.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_DynDNS.png)\n- **`DMZ...`** : permet de configurer les règles de la DMZ. Contrairement à l'application d'Orange on peut ici ajouter plusieurs appareils dans la DMZ, avec un filtrage des IP externes comme pour les règles NAT/PAT.\nLa règle de l'application d'Orange apparaît avec l'ID `webui`, donc si on veut pouvoir gérer une règle à la fois avec LiveboxMonitor et l'application d'Orange il faut respecter cet identifiant.\nFaute de test il n'est pas garanti que cela fonctionne correctement avec plusieurs règles : **tout retour d'utilisation sera bienvenu**.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_DMZ.png)\n- **`Table de routage...`** : permet de configurer la table de routage statique. Cette option est uniquement disponible pour les Livebox Pro.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_Routing.png)\n\nLes actions concernant les **Réglages** :\n- **`Préférences...`** : permet d'afficher l'écran des préférences du programme.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_Preferences.png)\n\n    Voir la section **Profils*** ci-dessus pour plus de détail sur leur fonctionnement.  \n \n    Pour chaque **profil** il est possible de configurer :\n    - `Nom` : nom du profil.\n    - `URL Livebox` : adresse de la Livebox. La valeur par défaut est `http://livebox.home/`.\n    - `Utilisateur` : login pour l'ouverture de session. Par défaut `admin`. Le mot de passe est demandé automatiquement lors de l'utilisation du profil s'il n'est pas renseigné ou s'il est erroné.\n    - `Filtrage Appareils` : active le filtrage des appareils afin de ne pas montrer certains appareils \"fantômes\" détectés par la Livebox. Quand ce paramètre est activé le programme affiche les mêmes appareils que l'interface Web de la Livebox. Ce paramètre est activé par défaut.\n    - `Fichier Table MacAddr` : nom du fichier de stockage des noms d'appareils. Par défaut `MacAddrTable.txt`. Voire `Le fichier MacAddrTable.txt` de la section `Configuration` pour plus d'explications.\n    - `Défaut` : indique qu'il s'agit du profil par défaut à utiliser au lancement du programme. Il ne peut y avoir qu'un seul profil par défaut.  \n\n    Les **préférences** générales permettent de régler :\n    - `Langage` : langue utilisée par l'application, à choisir entre Français (défaut) et Anglais.\n    - `Tooltips` : active ou non les tooltips.\n    - `Fréquence Stats` : Fréquence de rafraîchissement, en secondes, de toutes les statistiques. Par défaut 3 secondes.\n    - `API Key macaddress.io` : le programme utilise l'API du site [macaddress.io](https://macaddress.io/) pour déterminer le fabricant d'un appareil à partir de son adresse MAC (champ **Fabricant** dans les informations détaillées par appareil). C'est un service gratuit, mais il faut créer un compte et indiquer ici l'API Key correspondante pour bénéficier de cette fonctionnalité.\n    - `API Key CallFilter` : le programme utilise d'API du site [callfilter.app](https://callfilter.app/) pour identifier les appels téléphoniques indésirables (onglet `Téléphone`). Pour obtenir une API Key (service gratuit pour 15 requêtes par minute maximum), vous devez envoyer votre demande par email, en anglais, à info@callfilter.app.\n    - `Indicatif Téléphonique` : indicatif téléphonique local, utile pour faire correspondre les appels téléphoniques avec les numéros de contacts. Par défaut le code de la France est utilisé, c'est-à-dire 33.\n    - `Hauteur Entêtes` : hauteur en pixels des entêtes de liste, par défaut 25.\n    - `Taille Police Entêtes` : taille de la police de caractères des entêtes de liste. Une valeur à zéro signifie d'utiliser la taille système. Par défaut ce paramètre est à zéro.\n    - `Hauteur Lignes` : hauteur en pixels des lignes de liste, par défaut 30.\n    - `Taille Police Lignes` : taille de la police de caractères des lignes de liste. Une valeur à zéro signifie d'utiliser la taille système. Par défaut ce paramètre est à zéro.\n    - `Marge Timeout` : valeur de timeout additionnelle, à utiliser par exemple si vous accédez à une Livebox à distance avec une grande latence réseau.\n    - `Séparateur CSV` : séparateur de liste (délimiteur) à utiliser lors de l'export de données dans des fichiers au format CSV.\n    - `Statistiques temps réel des appareils wifi` : active ou non les statistiques en temps réel pour les appareils wifi. Celles ci s'affichent en bleu dans l'onglet `Appareils` et viennent recouvrir les statistiques standards qui s'affichent en noir toutes les 30 secondes.\n    - `Empêcher la mise en veille` : permet d'empêcher votre ordinateur de se mettre en veille pendant l'exécution de ce programme. Utile pour laisser tourner l'application en permanence, par exemple pour l'export des statistiques ou pour la génération de notifications en temps réel.\n    - `Utiliser le style d'interface graphique natif` : par défaut le style \"Fusion\" est utilisé sur toutes les plateformes. Cette option permet sur les plateformes Windows et MacOS d'utiliser un style graphique plus natif. Cette option n'a aucun effet sur les plateformes Linux.\n    - `Sauver les mots de passe` : permet de sauver les mots de passe dans la configuration (encryptés) pour éviter d'avoir à les retaper à chaque lancement.  \n\n- **`Changer de profil...`** : affiche un dialogue permettant de changer le profil en cours et de relancer le programme.\n\n- **`Réglages Email...`** : permet de configurer l'envoi d'emails automatique, par exemple pour les notifications.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_EmailSetup.png)\n \n    Il est possible de configurer :\n    - `Adresse Origine` : adresse email d'origine des messages.\n    - `Adresse Destination` : adresse email de destination des messages.\n    - `Préfixe Sujet` : préfixe rajouté aux sujets des messages envoyés.\n    - `Serveur SMTP` : serveur SMTP de votre fournisseur de messagerie.\n    - `Port` : port SMTP à utiliser. 465 est recommandé pour SSL, 587 pour tout autre protocole.\n    - `Utiliser TLS` : utilisation du protocole d'encryption TLS (recommandé).\n    - `Utiliser SSL` : utilisation du protocole d'encryption SSL.\n    - `Authentification` : à sélectionner si le serveur nécessite de s'authentifier.\n    - `Utilisateur` : votre nom d'utilisateur pour s'authentifier.\n    - `Mot de passe` : votre mot de passe pour s'authentifier.  \n\n    Le bouton `Test Envoi` permet d'envoyer un message de test avec les réglages courants sans les sauvegarder.  \n\n    La configuration pour le serveur d'Orange est très simple :\n    - Adresse origine / utilisateur -> mettre votre adresse@orange.fr\n    - Adresse destination -> la destination souhaitée\n    - Serveur SMTP -> smtp.orange.fr\n    - Port -> 587\n    - Cocher \"Utiliser TLS\" et \"Authentification\".\n    - Mot de passe -> votre mot de passe Orange.  \n\n    Pour gmail c'est un peu plus compliqué :\n    - Il faut d'abord régler son compte gmail pour créer un mot de passe dédié pour le programme.\n    - Aller sur son compte, onglet \"Sécurité\" -> [ici](https://myaccount.google.com/security)\n    - Vérifier que la \"validation en deux étapes\" est activée, si ce n'est pas le cas, il faut le faire.\n    - Cliquer \"Validation en deux étapes\" et aller sur \"Mots de passe d'application\" en bas.\n    - Créer un nouveau mot de passe pour l'application 'LiveboxMonitor' et notez le mot de passe (sans les espaces).\n    - Retourner dans LiveboxMonitor, réglage email.\n    - Dans les champs Adresse origine / utilisateur -> mettre votre adresse@gmail.com\n    - Adresse destination -> la destination souhaitée\n    - Serveur SMTP -> smtp.gmail.com\n    - Port -> 587\n    - Cocher \"Utiliser TLS\" et \"Authentification\"\n    - Mot de passe -> le mot de passe créé ci dessus.  \n\nLes actions techniques de **Débogage** :\n- **`Niveau de log...`** : permet de changer le niveau de logs dans la console. Ce niveau est stocké dans la configuration du programme et sera donc conservé au prochain lancement du programme.\n- **`Appel APIs...`** : permet d'appeler directement les APIs REST/JSON de la Livebox. Une sélection d'appels est disponible en raccourci mais n'importe quel appel est possible. Pour utilisateurs avertis uniquement.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Actions_CallAPIs.png)\n \n- **`Générer documentation APIs...`** : permet de générer dans des fichiers texte l'ensemble de la documentation accessible sur les APIs de la Livebox, par module. Le programme génère un fichier par module connu, un fichier \"_ALL_MODULES_\" contenant l'ensemble des modules en un seul fichier, et un fichier \"_PROCESSES_\" qui permet d'avoir la liste des tâches tournant sur la Livebox. Certains fichiers ne contiennent qu'une erreur \"Permission denied\" : c'est normal, ces modules sont protégés et donc non accessibles (mais qui sait dans une prochaine version du firmeware ?). Les paramètres de fonction indiqués entre parenthèses sont optionnels. Par défaut le programme génère l'ensemble des instances trouvées par type de ressources (ou \"object\") ainsi que toutes les valeurs trouvées par paramètres, mais ces valeurs sont filtrées si on maintient la touche `Ctrl` en cliquant sur le bouton. Cela permet de partager librement ces fichiers sans divulguer d'informations spécifiques à sa configuration, cependant avoir la liste des instances reste crucial pour une documentation vraiment complète. Malheureusement Orange a décidé de bloquer cette possibilité sur les dernières Livebox W7 et S.  \n\nAutres actions :\n- **Quitter l'application** : pour quitter l'application. Strictement équivalent à fermer la fenêtre de l'application.\n- Un clic sur le lien GitHub de l'application ouvrira la page correspondante sur votre navigateur.\n\n\n## Onglets répéteurs Wifi <a id=\"repeaters\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Repeater.png)\n\nLe programme créé dynamiquement un onglet par répéteur Orange connecté. Si le répéteur a un nom local, celui-ci est utilisé dans l'onglet, sinon le nom par défaut est de type \"RW #\" suivit du numéro de répéteur dans l'ordre de détection.\nLes répéteurs font aussi parti des appareils connus, ils sont donc visibles dans l'onglet `Appareils` et leur nom peut être changé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n\nUne icône dans le nom de l'onglet permet de connaître l'état de la connexion avec le répéteur :\n- ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Cross.png) : le répéteur est inactif ou n'a pas d'adresse IP attribuée.\n- ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Prohibition.png) : le répéteur est actif mais aucune session n'est ouverte. Si cet état subsiste vous pouvez essayer de forcer la création d'une session en cliquant sur le bouton `Réauthentifier...`.\n- ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Tick.png) : le répéteur est actif et une session a été créée pour communiquer avec lui.\n\nLes statistiques de trafic par interface sont affichées sous forme de liste en haut à gauche.\nEt toutes les informations détaillées sont accessibles via la barre de boutons en bas, chaque bouton remplissant la liste d'attributs sur la droite. Il est aussi possible d'exporter l'ensemble des informations dans un fichier. Enfin, une série d'actions est possible via les boutons sur la gauche.\n\n### Statistiques\n\nListe permettant de surveiller l'état du trafic géré par le répéteur :\n- **Nom** : nom de l'interface réseau. `LAN` concerne tout le trafic entre le répéteur et la Livebox. Ensuite on dispose des statistiques par interface précise (les deux prises Ethernet ainsi que les deux bandes Wifi).\n- **Rx** : nombre d'octets reçus par l'interface. La fenêtre de temps de ce total n'est pas connue. S'affiche en rouge si des erreurs de transmission sont détectées. Attention ce compteur est circulaire et ne dépasse pas les 4 Go.\n- **Tx** : nombre d'octets envoyés par l'interface. La fenêtre de temps de ce total n'est pas connue. S'affiche en rouge si des erreurs de transmission sont détectées. Attention ce compteur est circulaire et ne dépasse pas les 4 Go.\n- **TauxRx** : taux d'octets reçus par seconde par l'interface dans les trois dernières secondes (fréquence réglable dans les préférences).\n- **TauxTx** : taux d'octets envoyés par seconde par l'interface dans les trois dernières secondes (fréquence réglable dans les préférences).\n\nSi une statistique s'affiche en rouge cela signifie que des erreurs de transfert ont été détectées par le répéteur.\nLes statistiques semblent parfois surprenantes, mais il s'agit d'une interprétation sans filtre de ce que renvoie le répéteur (il ne s'agit pas d'un défaut du programme).\n\n### Actions - Boutons d'actions et de contrôle\n\nLes actions concernant le **Wifi** :\n- **`Wifi ON`** : permet d'activer l'interface Wifi du répéteur.\n- **`Wifi OFF`** : permet de désactiver l'interface Wifi du répéteur.\n- **`Planificateur Wifi ON`** : permet d'activer le planificateur Wifi du répéteur. Ce planificateur doit être configuré depuis l'interface Web du répéteur.\n- **`Planificateur Wifi OFF`** : permet de désactiver le planificateur Wifi du répéteur.\n\nL'état global du Wifi peut être consulté via le bouton `État Global Wifi...` de l'onglet `Actions`.\n\nLes actions concernant les **Redémarrages** :\n- **`Redémarrer le Répéteur...`** : permet de forcer un redémarrage du répéteur.\n- **`Réinitialiser le Répéteur...`** : Ppermet de réinitialiser le répéteur aux paramètres d'usine.\n- **`Historique Redémarrages...`** : permet d'afficher l'historique des derniers redémarrages.\n\n    ![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Repeater_RebootHistory.png)\n\n    Cet historique est particulièrement utile pour détecter les redémarrages forcés par Orange pour mettre à jour le logiciel du répéteur.\n    La liste affiche les colonnes suivantes :\n    - **Date Redémarrage** : date et heure du démarrage.\n    - **Raison Redémarrage** : la raison de ce démarrage. Typiquement \"NMC\" ou \"POR\" indique un démarrage forcé par logiciel et \"Unsupported chipset\" un redémarrage causé par une coupure de courant ou l'interrupteur du répéteur.\n    - **Date Arrêt** : la date et heure de l'extinction.\n    - **Raison Arrêt** : la raison de cette extinction. Typiquement vide pour une coupure de courant, \"Upgrade\" pour une mise à jour logiciel et \"WebUI reboot\" pour un redémarrage demandé depuis l'interface Web ou LiveboxMonitor.\n\nLes actions diverses :\n- **`Appel APIs...`** : permet d'appeler directement les APIs REST/JSON du répéteur. Une sélection d'appels est disponible en raccourci mais n'importe quel appel est possible. Pour utilisateurs avertis uniquement.\n- **`Réauthentifier...`** : pour forcer la création d'une nouvelle session avec le répéteur. Si vous laissez trop longtemps le programme tourner sans visualiser les statistiques du répéteur ni effectuer la moindre action, la session sera automatiquement libérée par le répéteur. Dans ce cas des erreurs vont se produire en effectuant des actions : ce bouton permettra de recréer la session, permettant de reprendre les actions sans erreur.\n\n### Boutons\nLes onglets de répéteur Wifi proposent les boutons suivants :\n- **`Informations Répéteur`** : affiche les informations principales concernant le répéteur, telles que les versions de logiciels, le nom du modèle, l'heure de l'horloge interne, etc.\n- **`Informations Wifi`** : affiche les informations générales sur la connectivité Wifi, et l'état de chaque accès. Pour chaque accès on dispose d'informations détaillées telles que le canal, le standard, la bande passante, la qualité, la bande, le nombre d'appareils connectés, etc.\n- **`Informations LAN`** : affiche les informations générales sur la connectivité LAN. Pour chaque interface Ethernet on peut identifier si elle est active ou non, la bande passante, etc.\n- **`Export...`** : permet d'exporter l'ensemble des informations affichées par chacun des boutons dans un fichier texte. Utile pour communiquer ces informations ou faire un suivi pour détecter les changements.\n\n\n## Onglets décodeurs TV <a id=\"tvdecoders\"></a>\n\n![Interface](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Tvdecoder.png)\n\nLe programme créé dynamiquement un onglet par décodeur TV Orange connecté. Si le décodeur a un nom local, celui-ci est utilisé dans l'onglet, sinon le nom par défaut est de type \"TV #\" suivit du numéro de décodeur dans l'ordre de détection.\nLes décodeurs font aussi parti des appareils connus, ils sont donc visibles dans l'onglet `Appareils` et leur nom peut être changé via le bouton `Assigner Nom...` de l'onglet `Infos Appareil`.\n\nUne icône dans le nom de l'onglet permet de connaître l'état de la connexion avec le décodeur :\n- ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Cross.png) : le décodeur est inactif ou n'a pas d'adresse IP attribuée.\n- ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_Icon_Tick.png) : le décodeur est actif.\n\n### Informations\n- **`Statut`** : statut actuel retourné par le décodeur.\n- **`Infos`** : informations sur le décodeur retourné par la Livebox.\n- **`Description`** : informations sur le décodeur retourné par lui même.\n- **`Chaîne`** : informations sur la chaîne TV en cours de lecture. L'identifiant EPG correspond au numéro suivant le standard Electronic Program Guide. Les icônes et descriptions de chaînes sont stockées dans un cache local pour éviter des appels aux serveurs Orange intempestifs. Si ces informations deviennent érronées utilisez le bouton \"Recréer Cache\".\n\n### Boutons\n- **`Recréer Cache`** : réinitialise le cache local d'informations et d'icônes sur les chaînes.\n- **`Changer Chaîne`** : permet de changer de chaîne. Vous pouvez saisir soit un numéro de chaîne, un nom de chaîne (même partiel), ou l'identifiant EPG (Electronic Program Guide) d'une chaîne en tapant 'epg' suivi du numéro d'identification.\n- **`Télécommande`** : télécommande virtuelle pour piloter le décodeur. Le bouton en bas à gauche permet d'afficher les écrans d'administration du décodeur sur la TV.\n\n\n## Gestion et personnalisation des icônes d'appareil <a id=\"icons\"></a>\n\nToutes les icônes d'appareil sont initialement stockées par la Livebox et le programme va les chercher une à une, ce qui peut provoquer une certaine latence (par exemple lorsque l'on clique une première fois sur le bouton `Assigner Type...` pour changer le type d'un appareil).\nPour éviter cette latence, le programme stocke dans un cache local toutes les icônes téléchargées de la Livebox pour pouvoir les retrouver plus rapidement au prochain lancement. Ce cache est contenu dans un répertoire appelé `lbcache_` suivie de la version du firmware de la Livebox (ce qui fait que plusieurs caches peuvent être maintenu si vous accédez à plusieurs Livebox de versions différentes).\nCe répertoire est créé automatiquement dans [le répertoire de configuration du programme](#configuration).\n\nIl est aussi possible de modifier ces icônes, et aussi de créer de nouveaux types d'appareils avec leur propre icône.\nUne page d'explication dédiée à ces possibilités est disponible [ici](https://github.com/p-dor/LiveboxMonitor/blob/main/docs/CustomIcons.md).\n\n\n## Utiliser les APIs Livebox dans votre propre programme Python <a id=\"codingguide\"></a>\n\nL'intégralité des APIs utilisées par le programme pour s'interfacer avec la Livebox sont accessibles via une couche logicielle totalement indépendante du programme lui même.\n\nVous pouvez utiliser ces APIs dans votre propre programme Python très facilement en suivant ce petit guide en anglais [ici](https://github.com/p-dor/LiveboxMonitor/blob/main/docs/APICodingGuide.md).\n\nLa documentation (générée) des APIs de la Livebox est disponible dans [ce répertoire](https://github.com/p-dor/LiveboxMonitor/tree/main/docs/API%20Documentation). Beaucoup ne sont pas implémentées par le programme mais il est très facile d'en rajouter.\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/AccountManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"AccountManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Audiphone.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Audiphone\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/AutoDiag.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/BCMPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BCMPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/BulkData.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BulkData\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/CPUStats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CPUStats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/CaptivePortal.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CaptivePortal\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ConMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ConMon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Conntrack.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Conntrack\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/CupsService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CupsService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DECT.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DECT - Name: .DECT\n == PARAMETERS:\n  - PairingStatus (type: string)\n      Attributes: read_only\n      Validator: ['Idle', 'Pairing']\n == FUNCTIONS:\n  - string getPairingStatus()\n  - void startPairing()\n  - void stopPairing()\n  - void reset((bool reboot))\n  - string getRFPI()\n  - string getStandardVersion()\n  - string getPIN()\n  - void setPIN((string pin))\n  - string getVersion()\n  - string getName()\n  - bool getRadioState()\n  - void setRadioState((bool state))\n  - int8 getRSSI((string name), (bool synchronous))\n  - void setHandsetDebugMode((bool enable))\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: DECT.Repeater.Device - Name: DECT.Repeater.Device\n == PARAMETERS:\n  - Id (type: uint16)\n      Attributes: read_only, persistent\n  - SoftwareVersion (type: string)\n      Attributes: read_only, persistent\n  - HardwareVersion (type: string)\n      Attributes: read_only, persistent\n  - IPUI (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '11'}\n  - Active (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void deregister()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DHCPv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DHCPv6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DHCPv6Client.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DHCPv6Client\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DLNA.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DLNA\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DNSSD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DSPGDECT.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPGDECT\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DSPPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DeviceInfo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - variant getDebugInformation((bool filedesc), (debug_options_t options))\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DeviceLookup.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceLookup\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DeviceManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DeviceManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Devices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Config.global - Name: Devices.Config.global\n == PARAMETERS:\n  - MaxLanDevices (type: string)\n      Attributes: persistent\n  - MaxLanDevicesAccept (type: string)\n      Attributes: persistent\n  - MaxLanDevicesDeleteActive (type: string)\n      Attributes: persistent\n  - MaxInactiveAge (type: string)\n      Attributes: persistent\n  - DeviceTypeOrder (type: string)\n      Attributes: persistent\n  - NameOrder (type: string)\n      Attributes: persistent\n  - MDNSDisable (type: string)\n      Attributes: persistent\n  - KeepLink (type: string)\n      Attributes: persistent\n  - AcceptIntfs (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.Priority - Name: Devices.Config.Priority\n == PARAMETERS:\n  - Types (type: string)\n      Attributes: persistent\n  - Configurations (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.WANAccess - Name: Devices.Config.WANAccess\n == PARAMETERS:\n  - BlockedReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.eth - Name: Devices.Config.eth\n == PARAMETERS:\n  - DHCPPools (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selfphysical - Name: Devices.Config.selfphysical\n == PARAMETERS:\n  - Blocked (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selflan - Name: Devices.Config.selflan\n == PARAMETERS:\n  - Interfaces (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.events - Name: Devices.Config.events\n == PARAMETERS:\n  - CPUInterval (type: string)\n      Attributes: persistent\n  - SysInfoInterval (type: string)\n      Attributes: persistent\n  - Log (type: string)\n      Attributes: persistent\n  - LogType (type: string)\n      Attributes: persistent\n  - LogSize (type: string)\n      Attributes: persistent\n  - LogEntries (type: string)\n      Attributes: persistent\n  - LogPath (type: string)\n      Attributes: persistent\n  - DevicesInterval (type: string)\n      Attributes: persistent\n  - WANInterfaces (type: string)\n      Attributes: persistent\n  - MaxWlanStatMonStations (type: string)\n      Attributes: persistent\n  - WlanPersistentLogsInterval (type: string)\n      Attributes: persistent\n  - WlanPersistentAggregationInterval (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.mqtt - Name: Devices.Config.mqtt\n == PARAMETERS:\n  - Server (type: string)\n      Attributes: persistent\n  - AlarmTopic (type: string)\n      Attributes: persistent\n  - AddedTopic (type: string)\n      Attributes: persistent\n  - InfoChangedTopic (type: string)\n      Attributes: persistent\n  - DataChangedTopic (type: string)\n      Attributes: persistent\n  - DeleteTopic (type: string)\n      Attributes: persistent\n  - EventsEnable (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.ieee1905_gmap - Name: Devices.Config.ieee1905_gmap\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Domino.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DummyPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DummyPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/DynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/FaultMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"FaultMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Firewall.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Flowstats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Flowstats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/GenLog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .GenLog - Name: .GenLog\n == FUNCTIONS:\n  - variant readLogs(int32 nrecords, (string source), (string topic), (datetime since), (datetime until))\n  - variant nextLogs(variant iterator, int32 nrecords)\n  - void clearLogs(string topic, (string source))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/HTTPService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/History.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/HomeLan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/IEEE1905.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IEEE1905\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/IPPingDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPPingDiagnostics\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/IPsec.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPsec\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Invocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Invocation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/IoTService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/KMCD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"KMCD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/LLMNR.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LLMNR\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/LXCManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LXCManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Launcher.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Launcher\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Locations.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/MQTTBroker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTBroker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/MQTTMessages.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTMessages\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/MSS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Maculan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ManagementServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ManagementServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Manifests.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NMC.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data - Name: NeMo.Intf.24\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.ULIntf - Name: NeMo.Intf.24.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.LLIntf - Name: NeMo.Intf.24.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.Query - Name: NeMo.Intf.24.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.IPv4Addr - Name: NeMo.Intf.24.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.IPv6Addr - Name: NeMo.Intf.24.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.IPv4Route - Name: NeMo.Intf.24.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.IPv6Route - Name: NeMo.Intf.24.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_data.StatMon - Name: NeMo.Intf.24.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1 - Name: NeMo.Intf.27\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.ULIntf - Name: NeMo.Intf.27.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.LLIntf - Name: NeMo.Intf.27.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.Query - Name: NeMo.Intf.27.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.IPv4Addr - Name: NeMo.Intf.27.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.IPv6Addr - Name: NeMo.Intf.27.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.IPv4Route - Name: NeMo.Intf.27.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.IPv6Route - Name: NeMo.Intf.27.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv1.StatMon - Name: NeMo.Intf.27.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2 - Name: NeMo.Intf.28\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.ULIntf - Name: NeMo.Intf.28.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.LLIntf - Name: NeMo.Intf.28.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.Query - Name: NeMo.Intf.28.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.IPv4Addr - Name: NeMo.Intf.28.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.IPv6Addr - Name: NeMo.Intf.28.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.IPv4Route - Name: NeMo.Intf.28.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.IPv6Route - Name: NeMo.Intf.28.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv2.StatMon - Name: NeMo.Intf.28.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_iptv3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3 - Name: NeMo.Intf.29\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.ULIntf - Name: NeMo.Intf.29.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.LLIntf - Name: NeMo.Intf.29.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.Query - Name: NeMo.Intf.29.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.IPv4Addr - Name: NeMo.Intf.29.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.IPv6Addr - Name: NeMo.Intf.29.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.IPv4Route - Name: NeMo.Intf.29.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.IPv6Route - Name: NeMo.Intf.29.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv3.StatMon - Name: NeMo.Intf.29.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_iptv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4 - Name: NeMo.Intf.30\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.ULIntf - Name: NeMo.Intf.30.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.LLIntf - Name: NeMo.Intf.30.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.Query - Name: NeMo.Intf.30.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.IPv4Addr - Name: NeMo.Intf.30.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.IPv6Addr - Name: NeMo.Intf.30.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.IPv4Route - Name: NeMo.Intf.30.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.IPv6Route - Name: NeMo.Intf.30.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_iptv4.StatMon - Name: NeMo.Intf.30.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi - Name: NeMo.Intf.25\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.ULIntf - Name: NeMo.Intf.25.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.LLIntf - Name: NeMo.Intf.25.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.Query - Name: NeMo.Intf.25.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv4Addr - Name: NeMo.Intf.25.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv6Addr - Name: NeMo.Intf.25.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv4Route - Name: NeMo.Intf.25.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv6Route - Name: NeMo.Intf.25.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv6Router - Name: NeMo.Intf.25.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.IPv6Router.Option - Name: NeMo.Intf.25.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_multi.StatMon - Name: NeMo.Intf.25.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.atm_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip - Name: NeMo.Intf.26\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LinkType (type: string)\n      Attributes: persistent\n      Validator: ['EoA', 'IPoA', 'PPPoA']\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - DestinationAddress (type: string)\n      Attributes: persistent\n  - Encapsulation (type: string)\n      Attributes: persistent\n      Validator: ['LLC', 'VCMUX']\n  - FCSPreserved (type: bool)\n      Attributes: persistent\n  - QoSClass (type: string)\n      Attributes: persistent\n      Validator: ['UBR', 'CBR', 'GFR', 'VBR-nrt', 'VBR-rt', 'UBR+', 'ABR']\n  - PeakCellRate (type: uint32)\n      Attributes: persistent\n  - MaximumBurstSize (type: uint32)\n      Attributes: persistent\n  - SustainableCellRate (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - bool oamPing()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.ULIntf - Name: NeMo.Intf.26.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.LLIntf - Name: NeMo.Intf.26.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.Query - Name: NeMo.Intf.26.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.IPv4Addr - Name: NeMo.Intf.26.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.IPv6Addr - Name: NeMo.Intf.26.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.IPv4Route - Name: NeMo.Intf.26.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.IPv6Route - Name: NeMo.Intf.26.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.atm_voip.StatMon - Name: NeMo.Intf.26.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.brguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/brguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge - Name: NeMo.Intf.8\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.ULIntf - Name: NeMo.Intf.8.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.LLIntf - Name: NeMo.Intf.8.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.Query - Name: NeMo.Intf.8.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Addr - Name: NeMo.Intf.8.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Addr - Name: NeMo.Intf.8.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Route - Name: NeMo.Intf.8.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Route - Name: NeMo.Intf.8.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router - Name: NeMo.Intf.8.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router.Option - Name: NeMo.Intf.8.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_aiptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_aiptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_ctr.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_ctr\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_viptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_viptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_vmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti - Name: NeMo.Intf.12\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.ULIntf - Name: NeMo.Intf.12.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.LLIntf - Name: NeMo.Intf.12.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.Query - Name: NeMo.Intf.12.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Addr - Name: NeMo.Intf.12.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Addr - Name: NeMo.Intf.12.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Route - Name: NeMo.Intf.12.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Route - Name: NeMo.Intf.12.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router - Name: NeMo.Intf.12.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router.Option - Name: NeMo.Intf.12.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_vviptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_vviptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.bridge_vvmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti - Name: NeMo.Intf.19\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.ULIntf - Name: NeMo.Intf.19.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.LLIntf - Name: NeMo.Intf.19.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.Query - Name: NeMo.Intf.19.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv4Addr - Name: NeMo.Intf.19.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv6Addr - Name: NeMo.Intf.19.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv4Route - Name: NeMo.Intf.19.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv6Route - Name: NeMo.Intf.19.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv6Router - Name: NeMo.Intf.19.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vvmulti.IPv6Router.Option - Name: NeMo.Intf.19.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.container.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/container\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.data - Name: NeMo.Intf.39\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.data.ULIntf - Name: NeMo.Intf.39.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.LLIntf - Name: NeMo.Intf.39.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.Query - Name: NeMo.Intf.39.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dhcp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data - Name: NeMo.Intf.35\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ULIntf - Name: NeMo.Intf.35.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.LLIntf - Name: NeMo.Intf.35.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.Query - Name: NeMo.Intf.35.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.SentOption - Name: NeMo.Intf.35.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ReqOption - Name: NeMo.Intf.35.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dhcp_iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_iptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dhcp_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dhcp_wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan - Name: NeMo.Intf.46\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ULIntf - Name: NeMo.Intf.46.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.LLIntf - Name: NeMo.Intf.46.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.Query - Name: NeMo.Intf.46.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.SentOption - Name: NeMo.Intf.46.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ReqOption - Name: NeMo.Intf.46.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dhcpv6_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data - Name: NeMo.Intf.36\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Validator: ['Idle', 'Init', 'Selecting', 'Requesting', 'Bound', 'BoundCheck', 'Release', 'Decline', 'Renew', 'Rebind', 'Release', 'InformationRequest', 'InformationBound', 'Error']\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: uint8)\n      Attributes: persistent\n  - DUID (type: string)\n      Attributes: persistent\n  - RequestAddresses (type: bool)\n      Attributes: persistent\n  - RequestPrefixes (type: bool)\n      Attributes: persistent\n  - RapidCommit (type: bool)\n      Attributes: persistent\n  - IAID (type: uint32)\n      Attributes: persistent\n  - SuggestedT1 (type: int32)\n      Attributes: persistent\n  - SuggestedT2 (type: int32)\n      Attributes: persistent\n  - SupportedOptions (type: string)\n      Attributes: persistent\n  - RequestedOptions (type: string)\n      Attributes: persistent\n  - Renew (type: bool)\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInfo (type: string)\n      Attributes: persistent\n  - RetryOnFailedAuth (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ULIntf - Name: NeMo.Intf.36.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.LLIntf - Name: NeMo.Intf.36.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.Query - Name: NeMo.Intf.36.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.SentOption - Name: NeMo.Intf.36.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint16)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ReceivedOption - Name: NeMo.Intf.36.ReceivedOption\n == PARAMETERS:\n  - Tag (type: uint16)\n  - Alias (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dsl0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.dsl0 - Name: NeMo.Intf.7\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DSLPlugin (type: string)\n      Attributes: read_only\n  - XTMPlugin (type: string)\n      Attributes: read_only\n  - DSLIPC (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - UpstreamCurrRate (type: uint32)\n  - DownstreamCurrRate (type: uint32)\n  - LinkStatus (type: string)\n      Validator: ['Up', 'Down', 'Unknown', 'NotPresent', 'LowerLayerDown', 'Error']\n  - UpstreamMaxRate (type: uint32)\n  - DownstreamMaxRate (type: uint32)\n  - UpstreamAttenuation (type: int32)\n  - DownstreamAttenuation (type: int32)\n  - DownstreamLineAttenuation (type: int32)\n  - UpstreamLineAttenuation (type: int32)\n  - UpstreamNoiseMargin (type: int32)\n  - DownstreamNoiseMargin (type: int32)\n  - UpstreamPower (type: int32)\n  - DownstreamPower (type: int32)\n  - FirmwareVersion (type: string)\n      Validator: {'max': '64'}\n  - StandardsSupported (type: string)\n  - StandardUsed (type: string)\n      Validator: ['G.992.1_Annex_A', 'G.992.1_Annex_B', 'G.992.1_Annex_C', 'T1.413', 'T1.413i2', 'ETSI_101_388', 'G.992.2', 'G.992.3_Annex_A', 'G.992.3_Annex_B', 'G.992.3_Annex_C', 'G.992.3_Annex_I', 'G.992.3_Annex_J', 'G.992.3_Annex_L', 'G.992.3_Annex_M', 'G.992.4', 'G.992.5_Annex_A', 'G.992.5_Annex_B', 'G.992.5_Annex_C', 'G.992.5_Annex_I', 'G.992.5_Annex_J', 'G.992.5_Annex_M', 'G.993.1', 'G.993.1_Annex_A', 'G.993.2_Annex_A', 'G.993.2_Annex_B', 'G.993.2_Annex_C', 'G.9701', '']\n  - DataPath (type: string)\n      Validator: ['Interleaved', 'Fast', 'None']\n  - InterleaveDepth (type: uint32)\n  - ModulationType (type: string)\n      Validator: ['ADSL', 'ADSL_G.dmt', 'ADSL_G.lite', 'ADSL_G.dmt.bis', 'ADSL_re-adsl', 'ADSL_2plus', 'ADLS_four', 'ADSL_ANSI_T1.413', 'G.shdsl', 'IDSL', 'HDSL', 'SDSL', 'VDSL', 'G.Fast', '', 'Bonding_ADSL', 'Bonding_VDSL']\n  - ChannelEncapsulationType (type: string)\n      Validator: ['', 'G.992.3_Annex_K_ATM', 'G.992.3_Annex_K_PTM', 'G.993.2_Annex_K_ATM', 'G.993.2_Annex_K_PTM', 'G.994.1', 'G.9701_PTM']\n  - ModulationHint (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'ADSL', 'VDSL']\n  - AllowedProfiles (type: string)\n  - CurrentProfile (type: string)\n      Validator: ['', '8a', '8b', '8c', '8d', '12a', '12b', '17a', '17b', '30a', '35b', '106a', '212a', '106b']\n  - UPBOKLE (type: uint32)\n      Validator: {'min': '0', 'max': '1280'}\n  - Line_LastChangeTime (type: uint32)\n      Attributes: read_only\n  - Line_LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - LineStatus (type: string)\n      Validator: ['Up', 'Initializing', 'EstablishingLink', 'NoSignal', 'Disabled', 'Error']\n  - Line_UpstreamCurrRate (type: uint32)\n  - Line_DownstreamCurrRate (type: uint32)\n  - Line_UpstreamMaxRate (type: uint32)\n  - Line_DownstreamMaxRate (type: uint32)\n  - Line_UpstreamNoiseMargin (type: int32)\n  - Line_DownstreamNoiseMargin (type: int32)\n  - Line_UpstreamAttenuation (type: int32)\n  - Line_DownstreamLineAttenuation (type: int32)\n  - Line_UpstreamLineAttenuation (type: int32)\n  - Line_DownstreamAttenuation (type: int32)\n  - Line_UpstreamPower (type: int32)\n  - Line_DownstreamPower (type: int32)\n  - Line_DataPath (type: string)\n      Validator: ['Interleaved', 'Fast', 'None']\n  - Line_InterleaveDepth (type: uint32)\n  - Line_ActualInterleavingDelay (type: uint32)\n  - Line_ACTINP (type: int32)\n  - Line_INPREPORT (type: bool)\n  - Line_ModulationType (type: string)\n      Validator: ['ADSL', 'ADSL_G.dmt', 'ADSL_G.lite', 'ADSL_G.dmt.bis', 'ADSL_re-adsl', 'ADSL_2plus', 'ADLS_four', 'ADSL_ANSI_T1.413', 'G.shdsl', 'IDSL', 'HDSL', 'SDSL', 'VDSL', 'G.Fast', '', 'Bonding_ADSL', 'Bonding_VDSL']\n  - Line_ModulationHint (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'ADSL', 'VDSL']\n  - Line_FirmwareVersion (type: string)\n      Validator: {'max': '64'}\n  - Line_StandardsSupported (type: string)\n  - Line_StandardUsed (type: string)\n      Validator: ['G.992.1_Annex_A', 'G.992.1_Annex_B', 'G.992.1_Annex_C', 'T1.413', 'T1.413i2', 'ETSI_101_388', 'G.992.2', 'G.992.3_Annex_A', 'G.992.3_Annex_B', 'G.992.3_Annex_C', 'G.992.3_Annex_I', 'G.992.3_Annex_J', 'G.992.3_Annex_L', 'G.992.3_Annex_M', 'G.992.4', 'G.992.5_Annex_A', 'G.992.5_Annex_B', 'G.992.5_Annex_C', 'G.992.5_Annex_I', 'G.992.5_Annex_J', 'G.992.5_Annex_M', 'G.993.1', 'G.993.1_Annex_A', 'G.993.2_Annex_A', 'G.993.2_Annex_B', 'G.993.2_Annex_C', '']\n  - Line_AllowedProfiles (type: string)\n  - Line_CurrentProfile (type: string)\n      Validator: ['', '8a', '8b', '8c', '8d', '12a', '12b', '17a', '17b', '30a', '35b', '106a', '212a', '106b']\n  - Line_UPBOKLE (type: uint32)\n      Validator: {'min': '0', 'max': '1280'}\n  - Line_TRELLISds (type: bool)\n  - Line_TRELLISus (type: bool)\n  - Line_ATN70 (type: string)\n  - Line_CO_Manufacturer (type: string)\n  - Line_FsmVectoring (type: string)\n      Validator: ['WAIT_FOR_CONFIG', 'FULL', 'WAIT_FOR_TRIGGER', 'RUNNING', 'DISABLED', 'UNCONFIGURED', '']\n  - Line_VCE_MAC (type: string)\n  - Line_LATNpbds (type: string)\n  - Line_LATNpbus (type: string)\n  - Line_SATNpbds (type: string)\n  - Line_SATNpbus (type: string)\n  - Line_SNRMpbds (type: string)\n  - Line_SNRMpbus (type: string)\n  - Line_XTURVendor (type: string)\n  - Line_XTUCVendor (type: string)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void getDSLLineStats()\n  - void getDSLStats()\n  - void getXDSLNoiseMeasure(string typeMeasure)\n  - void getDSLChannelStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.dsl0.ULIntf - Name: NeMo.Intf.7.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dsl0.LLIntf - Name: NeMo.Intf.7.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dsl0.Query - Name: NeMo.Intf.7.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dsl0.StatMon - Name: NeMo.Intf.7.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.dslite.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dslite\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0 - Name: NeMo.Intf.2\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n  - PhysicalInterface (type: string)\n  - SFP_ModDef0 (type: int32)\n      Attributes: read_only\n  - SFP_LOS (type: int32)\n      Attributes: read_only\n  - SFP_TXFault (type: int32)\n      Attributes: read_only\n  - SFP_VendorName (type: string)\n      Attributes: read_only\n  - SFP_VendorPN (type: string)\n      Attributes: read_only\n  - SFP_VendorSN (type: string)\n      Attributes: read_only\n  - SFP_VendorRev (type: string)\n      Attributes: read_only\n  - SFP_VendorOUI (type: string)\n      Attributes: read_only\n  - SFP_Identifier (type: string)\n      Attributes: read_only\n  - SFP_Connector (type: string)\n      Attributes: read_only\n  - SFP_Transceiver (type: string)\n      Attributes: read_only\n  - SFP_BRnominal (type: uint8)\n      Attributes: read_only\n  - SFP_Wavelength (type: uint16)\n      Attributes: read_only\n  - SFP_Temperature (type: int16)\n      Attributes: read_only, volatile\n  - SFP_Voltage (type: uint16)\n      Attributes: read_only, volatile\n  - SFP_TxBias (type: uint32)\n      Attributes: read_only, volatile\n  - SFP_TxPower (type: int32)\n      Attributes: read_only, volatile\n  - SFP_RxPower (type: int32)\n      Attributes: read_only, volatile\n  - SFP_DiagnosticMonitoringType (type: string)\n      Attributes: read_only\n  - SFP_EnhancedOptions (type: string)\n      Attributes: read_only\n  - SFP_SFF8472Compliance (type: string)\n      Attributes: read_only\n  - SFP_Datecode (type: string)\n      Attributes: read_only\n  - SFP_Type (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setSFP_TXDisable((bool value))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.ULIntf - Name: NeMo.Intf.2.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.LLIntf - Name: NeMo.Intf.2.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.Query - Name: NeMo.Intf.2.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv4Addr - Name: NeMo.Intf.2.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv6Addr - Name: NeMo.Intf.2.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv4Route - Name: NeMo.Intf.2.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv6Route - Name: NeMo.Intf.2.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.StatMon - Name: NeMo.Intf.2.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1 - Name: NeMo.Intf.3\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.ULIntf - Name: NeMo.Intf.3.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.LLIntf - Name: NeMo.Intf.3.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.Query - Name: NeMo.Intf.3.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv4Addr - Name: NeMo.Intf.3.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv6Addr - Name: NeMo.Intf.3.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv4Route - Name: NeMo.Intf.3.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv6Route - Name: NeMo.Intf.3.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.StatMon - Name: NeMo.Intf.3.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2 - Name: NeMo.Intf.4\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.ULIntf - Name: NeMo.Intf.4.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.LLIntf - Name: NeMo.Intf.4.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.Query - Name: NeMo.Intf.4.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv4Addr - Name: NeMo.Intf.4.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv6Addr - Name: NeMo.Intf.4.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv4Route - Name: NeMo.Intf.4.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv6Route - Name: NeMo.Intf.4.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.StatMon - Name: NeMo.Intf.4.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3 - Name: NeMo.Intf.5\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.ULIntf - Name: NeMo.Intf.5.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.LLIntf - Name: NeMo.Intf.5.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.Query - Name: NeMo.Intf.5.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv4Addr - Name: NeMo.Intf.5.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv6Addr - Name: NeMo.Intf.5.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv4Route - Name: NeMo.Intf.5.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv6Route - Name: NeMo.Intf.5.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.StatMon - Name: NeMo.Intf.5.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4 - Name: NeMo.Intf.6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ULIntf - Name: NeMo.Intf.6.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.LLIntf - Name: NeMo.Intf.6.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.Query - Name: NeMo.Intf.6.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv4Addr - Name: NeMo.Intf.6.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv6Addr - Name: NeMo.Intf.6.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv4Route - Name: NeMo.Intf.6.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv6Route - Name: NeMo.Intf.6.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.StatMon - Name: NeMo.Intf.6.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.eth6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6 - Name: NeMo.Intf.51\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.ULIntf - Name: NeMo.Intf.51.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.LLIntf - Name: NeMo.Intf.51.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.Query - Name: NeMo.Intf.51.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IPv4Addr - Name: NeMo.Intf.51.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IPv6Addr - Name: NeMo.Intf.51.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IPv4Route - Name: NeMo.Intf.51.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IPv6Route - Name: NeMo.Intf.51.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.Vendor - Name: NeMo.Intf.51.Vendor\n == PARAMETERS:\n  - PNCheckEnabled (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IEEE80211r - Name: NeMo.Intf.51.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.IEEE80211u - Name: NeMo.Intf.51.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.Security - Name: NeMo.Intf.51.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.WPS - Name: NeMo.Intf.51.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.MACFiltering - Name: NeMo.Intf.51.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.MACFiltering.Entry - Name: NeMo.Intf.51.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.MACFiltering.TempEntry - Name: NeMo.Intf.51.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.ProbeFiltering - Name: NeMo.Intf.51.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.ProbeFiltering.TempEntry - Name: NeMo.Intf.51.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.VendorIEs - Name: NeMo.Intf.51.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.VendorIEs.VendorIE - Name: NeMo.Intf.51.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.HotSpot2 - Name: NeMo.Intf.51.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.AssociatedDevice - Name: NeMo.Intf.51.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.51.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.AssociationCount - Name: NeMo.Intf.51.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.51.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.MgtStats - Name: NeMo.Intf.51.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.ErrorToggleConfig - Name: NeMo.Intf.51.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.ErrorToggleStats - Name: NeMo.Intf.51.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.Neighbour - Name: NeMo.Intf.51.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.RssiEventing - Name: NeMo.Intf.51.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.StaKickOnError - Name: NeMo.Intf.51.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.StaKickOnError.GenericTests - Name: NeMo.Intf.51.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.StaKickOnError.VendorTests - Name: NeMo.Intf.51.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.DriverConfig - Name: NeMo.Intf.51.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.eth6.StatMon - Name: NeMo.Intf.51.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.guest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.guest - Name: NeMo.Intf.45\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.ULIntf - Name: NeMo.Intf.45.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.LLIntf - Name: NeMo.Intf.45.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.Query - Name: NeMo.Intf.45.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv - Name: NeMo.Intf.41\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.ULIntf - Name: NeMo.Intf.41.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.LLIntf - Name: NeMo.Intf.41.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.Query - Name: NeMo.Intf.41.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.lan - Name: NeMo.Intf.37\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.ULIntf - Name: NeMo.Intf.37.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.LLIntf - Name: NeMo.Intf.37.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.Query - Name: NeMo.Intf.37.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.lo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.lo - Name: NeMo.Intf.1\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.ULIntf - Name: NeMo.Intf.1.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.LLIntf - Name: NeMo.Intf.1.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.Query - Name: NeMo.Intf.1.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Addr - Name: NeMo.Intf.1.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Addr - Name: NeMo.Intf.1.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Route - Name: NeMo.Intf.1.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Route - Name: NeMo.Intf.1.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router - Name: NeMo.Intf.1.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router.Option - Name: NeMo.Intf.1.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.ppp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data - Name: NeMo.Intf.32\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - ConnectionStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - MaxMRUSize (type: uint32)\n      Attributes: persistent\n  - PPPoESessionID (type: uint32)\n      Attributes: read_only\n  - PPPoEACName (type: string)\n  - PPPoEServiceName (type: string)\n  - RemoteIPAddress (type: string)\n      Attributes: read_only\n  - LocalIPAddress (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - DNSServers (type: string)\n      Attributes: read_only\n  - TransportType (type: string)\n      Attributes: read_only\n  - LCPEcho (type: uint32)\n      Attributes: persistent\n  - LCPEchoRetry (type: uint32)\n      Attributes: persistent\n  - IPCPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPLocalInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - IPv6CPRemoteInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - ConnectionTrigger (type: string)\n      Attributes: persistent\n      Validator: ['AlwaysOn', 'OnDemand', 'Manual']\n  - IdleDisconnectTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.ULIntf - Name: NeMo.Intf.32.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.LLIntf - Name: NeMo.Intf.32.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.Query - Name: NeMo.Intf.32.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Addr - Name: NeMo.Intf.32.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Addr - Name: NeMo.Intf.32.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Route - Name: NeMo.Intf.32.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Route - Name: NeMo.Intf.32.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.primdata.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/primdata\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.ptm0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/ptm0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.superguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.superlan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superlan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data - Name: NeMo.Intf.10\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.ULIntf - Name: NeMo.Intf.10.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.LLIntf - Name: NeMo.Intf.10.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.Query - Name: NeMo.Intf.10.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Addr - Name: NeMo.Intf.10.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Addr - Name: NeMo.Intf.10.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Route - Name: NeMo.Intf.10.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Route - Name: NeMo.Intf.10.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.QoS - Name: NeMo.Intf.10.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.StatMon - Name: NeMo.Intf.10.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi - Name: NeMo.Intf.11\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.ULIntf - Name: NeMo.Intf.11.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.LLIntf - Name: NeMo.Intf.11.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.Query - Name: NeMo.Intf.11.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Addr - Name: NeMo.Intf.11.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Addr - Name: NeMo.Intf.11.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Route - Name: NeMo.Intf.11.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Route - Name: NeMo.Intf.11.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.QoS - Name: NeMo.Intf.11.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.StatMon - Name: NeMo.Intf.11.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.voip - Name: NeMo.Intf.40\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.ULIntf - Name: NeMo.Intf.40.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.LLIntf - Name: NeMo.Intf.40.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.Query - Name: NeMo.Intf.40.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vpnc_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpnc_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vpns_default.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_default\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vpns_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vvlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data - Name: NeMo.Intf.17\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.ULIntf - Name: NeMo.Intf.17.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.LLIntf - Name: NeMo.Intf.17.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.Query - Name: NeMo.Intf.17.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.IPv4Addr - Name: NeMo.Intf.17.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.IPv6Addr - Name: NeMo.Intf.17.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.IPv4Route - Name: NeMo.Intf.17.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.IPv6Route - Name: NeMo.Intf.17.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.QoS - Name: NeMo.Intf.17.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_data.StatMon - Name: NeMo.Intf.17.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vvlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vvlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vvlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vvlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vvlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi - Name: NeMo.Intf.18\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.ULIntf - Name: NeMo.Intf.18.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.LLIntf - Name: NeMo.Intf.18.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.Query - Name: NeMo.Intf.18.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.IPv4Addr - Name: NeMo.Intf.18.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.IPv6Addr - Name: NeMo.Intf.18.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.IPv4Route - Name: NeMo.Intf.18.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.IPv6Route - Name: NeMo.Intf.18.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.QoS - Name: NeMo.Intf.18.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vvlan_multi.StatMon - Name: NeMo.Intf.18.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.vvlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vvlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wifi0_bcm.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm - Name: NeMo.Intf.48\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ULIntf - Name: NeMo.Intf.48.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.LLIntf - Name: NeMo.Intf.48.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Query - Name: NeMo.Intf.48.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DFS - Name: NeMo.Intf.48.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DFS.Event - Name: NeMo.Intf.48.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults - Name: NeMo.Intf.48.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels - Name: NeMo.Intf.48.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.48.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.48.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.RadCaps - Name: NeMo.Intf.48.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt - Name: NeMo.Intf.48.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.TargetChanspec - Name: NeMo.Intf.48.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.48.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.BgDfs - Name: NeMo.Intf.48.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.48.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.48.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.Stats - Name: NeMo.Intf.48.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.Band - Name: NeMo.Intf.48.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelChanges - Name: NeMo.Intf.48.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats - Name: NeMo.Intf.48.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmPacketsSent - Name: NeMo.Intf.48.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedSent - Name: NeMo.Intf.48.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmPacketsReceived - Name: NeMo.Intf.48.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedReceived - Name: NeMo.Intf.48.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmBytesSent - Name: NeMo.Intf.48.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedbytesSent - Name: NeMo.Intf.48.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmBytesReceived - Name: NeMo.Intf.48.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.48.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor - Name: NeMo.Intf.48.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.RssiEventing - Name: NeMo.Intf.48.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.48.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.48.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.EventCounter - Name: NeMo.Intf.48.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor - Name: NeMo.Intf.48.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.Event - Name: NeMo.Intf.48.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.FullStats - Name: NeMo.Intf.48.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.48.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor - Name: NeMo.Intf.48.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.Event - Name: NeMo.Intf.48.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.EventType - Name: NeMo.Intf.48.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.Config - Name: NeMo.Intf.48.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.TrafficMonitor - Name: NeMo.Intf.48.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.AirstatsMonitor - Name: NeMo.Intf.48.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.BackgroundScanner - Name: NeMo.Intf.48.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DriverConfig - Name: NeMo.Intf.48.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.MACConfig - Name: NeMo.Intf.48.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DriverStatus - Name: NeMo.Intf.48.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanConfig - Name: NeMo.Intf.48.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanStats - Name: NeMo.Intf.48.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanStats.ScanReason - Name: NeMo.Intf.48.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor - Name: NeMo.Intf.48.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.WlMsgLevel - Name: NeMo.Intf.48.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.DhdMsgLevel - Name: NeMo.Intf.48.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Trap - Name: NeMo.Intf.48.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.48.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Logging - Name: NeMo.Intf.48.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.DhdMemUse - Name: NeMo.Intf.48.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.AirIQScanner - Name: NeMo.Intf.48.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.HealthMonitor - Name: NeMo.Intf.48.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wifi0_quan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan - Name: NeMo.Intf.49\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ULIntf - Name: NeMo.Intf.49.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.LLIntf - Name: NeMo.Intf.49.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Query - Name: NeMo.Intf.49.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DFS - Name: NeMo.Intf.49.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DFS.Event - Name: NeMo.Intf.49.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults - Name: NeMo.Intf.49.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels - Name: NeMo.Intf.49.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.49.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.49.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.RadCaps - Name: NeMo.Intf.49.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt - Name: NeMo.Intf.49.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.TargetChanspec - Name: NeMo.Intf.49.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.49.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.BgDfs - Name: NeMo.Intf.49.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.49.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.49.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.Stats - Name: NeMo.Intf.49.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.Band - Name: NeMo.Intf.49.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelChanges - Name: NeMo.Intf.49.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats - Name: NeMo.Intf.49.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmPacketsSent - Name: NeMo.Intf.49.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedSent - Name: NeMo.Intf.49.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmPacketsReceived - Name: NeMo.Intf.49.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedReceived - Name: NeMo.Intf.49.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmBytesSent - Name: NeMo.Intf.49.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedbytesSent - Name: NeMo.Intf.49.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmBytesReceived - Name: NeMo.Intf.49.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.49.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor - Name: NeMo.Intf.49.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.RssiEventing - Name: NeMo.Intf.49.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.49.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.49.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.EventCounter - Name: NeMo.Intf.49.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor - Name: NeMo.Intf.49.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.Event - Name: NeMo.Intf.49.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.FullStats - Name: NeMo.Intf.49.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.49.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor - Name: NeMo.Intf.49.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.Event - Name: NeMo.Intf.49.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.EventType - Name: NeMo.Intf.49.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.Config - Name: NeMo.Intf.49.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.TrafficMonitor - Name: NeMo.Intf.49.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.AirstatsMonitor - Name: NeMo.Intf.49.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.BackgroundScanner - Name: NeMo.Intf.49.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DriverConfig - Name: NeMo.Intf.49.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.MACConfig - Name: NeMo.Intf.49.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DriverStatus - Name: NeMo.Intf.49.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanConfig - Name: NeMo.Intf.49.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanStats - Name: NeMo.Intf.49.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanStats.ScanReason - Name: NeMo.Intf.49.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Vendor - Name: NeMo.Intf.49.Vendor\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wl0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0 - Name: NeMo.Intf.50\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ULIntf - Name: NeMo.Intf.50.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.LLIntf - Name: NeMo.Intf.50.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Query - Name: NeMo.Intf.50.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IEEE80211r - Name: NeMo.Intf.50.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IEEE80211u - Name: NeMo.Intf.50.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Security - Name: NeMo.Intf.50.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.WPS - Name: NeMo.Intf.50.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering - Name: NeMo.Intf.50.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering.Entry - Name: NeMo.Intf.50.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering.TempEntry - Name: NeMo.Intf.50.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ProbeFiltering - Name: NeMo.Intf.50.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ProbeFiltering.TempEntry - Name: NeMo.Intf.50.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.VendorIEs - Name: NeMo.Intf.50.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.VendorIEs.VendorIE - Name: NeMo.Intf.50.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.HotSpot2 - Name: NeMo.Intf.50.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociatedDevice - Name: NeMo.Intf.50.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.50.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociationCount - Name: NeMo.Intf.50.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.50.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MgtStats - Name: NeMo.Intf.50.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ErrorToggleConfig - Name: NeMo.Intf.50.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ErrorToggleStats - Name: NeMo.Intf.50.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Neighbour - Name: NeMo.Intf.50.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.RssiEventing - Name: NeMo.Intf.50.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError - Name: NeMo.Intf.50.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError.GenericTests - Name: NeMo.Intf.50.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError.VendorTests - Name: NeMo.Intf.50.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.DriverConfig - Name: NeMo.Intf.50.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv4Addr - Name: NeMo.Intf.50.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv6Addr - Name: NeMo.Intf.50.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv4Route - Name: NeMo.Intf.50.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv6Route - Name: NeMo.Intf.50.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StatMon - Name: NeMo.Intf.50.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wlguest2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2 - Name: NeMo.Intf.52\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ULIntf - Name: NeMo.Intf.52.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.LLIntf - Name: NeMo.Intf.52.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Query - Name: NeMo.Intf.52.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IEEE80211r - Name: NeMo.Intf.52.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IEEE80211u - Name: NeMo.Intf.52.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Security - Name: NeMo.Intf.52.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.WPS - Name: NeMo.Intf.52.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering - Name: NeMo.Intf.52.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering.Entry - Name: NeMo.Intf.52.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering.TempEntry - Name: NeMo.Intf.52.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ProbeFiltering - Name: NeMo.Intf.52.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ProbeFiltering.TempEntry - Name: NeMo.Intf.52.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.VendorIEs - Name: NeMo.Intf.52.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.VendorIEs.VendorIE - Name: NeMo.Intf.52.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.HotSpot2 - Name: NeMo.Intf.52.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociatedDevice - Name: NeMo.Intf.52.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.52.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociationCount - Name: NeMo.Intf.52.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.52.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MgtStats - Name: NeMo.Intf.52.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ErrorToggleConfig - Name: NeMo.Intf.52.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ErrorToggleStats - Name: NeMo.Intf.52.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Neighbour - Name: NeMo.Intf.52.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.RssiEventing - Name: NeMo.Intf.52.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError - Name: NeMo.Intf.52.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError.GenericTests - Name: NeMo.Intf.52.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError.VendorTests - Name: NeMo.Intf.52.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.DriverConfig - Name: NeMo.Intf.52.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv4Addr - Name: NeMo.Intf.52.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv6Addr - Name: NeMo.Intf.52.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv4Route - Name: NeMo.Intf.52.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv6Route - Name: NeMo.Intf.52.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StatMon - Name: NeMo.Intf.52.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wlguest5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5 - Name: NeMo.Intf.53\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void closeQuery((string subscriber), (string class))\n      Attributes: variadic\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id), (string state), (string returnValue), (list errors))\n      Attributes: variadic\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ULIntf - Name: NeMo.Intf.53.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.LLIntf - Name: NeMo.Intf.53.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Query - Name: NeMo.Intf.53.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv4Addr - Name: NeMo.Intf.53.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv6Addr - Name: NeMo.Intf.53.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv4Route - Name: NeMo.Intf.53.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv6Route - Name: NeMo.Intf.53.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Vendor - Name: NeMo.Intf.53.Vendor\n == PARAMETERS:\n  - PNCheckEnabled (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IEEE80211r - Name: NeMo.Intf.53.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IEEE80211u - Name: NeMo.Intf.53.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Security - Name: NeMo.Intf.53.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.WPS - Name: NeMo.Intf.53.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering - Name: NeMo.Intf.53.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering.Entry - Name: NeMo.Intf.53.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering.TempEntry - Name: NeMo.Intf.53.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ProbeFiltering - Name: NeMo.Intf.53.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ProbeFiltering.TempEntry - Name: NeMo.Intf.53.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.VendorIEs - Name: NeMo.Intf.53.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.VendorIEs.VendorIE - Name: NeMo.Intf.53.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.HotSpot2 - Name: NeMo.Intf.53.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociatedDevice - Name: NeMo.Intf.53.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.53.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociationCount - Name: NeMo.Intf.53.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.53.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MgtStats - Name: NeMo.Intf.53.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ErrorToggleConfig - Name: NeMo.Intf.53.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ErrorToggleStats - Name: NeMo.Intf.53.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Neighbour - Name: NeMo.Intf.53.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.RssiEventing - Name: NeMo.Intf.53.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError - Name: NeMo.Intf.53.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError.GenericTests - Name: NeMo.Intf.53.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError.VendorTests - Name: NeMo.Intf.53.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.DriverConfig - Name: NeMo.Intf.53.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StatMon - Name: NeMo.Intf.53.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.Intf.wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan - Name: NeMo.Intf.42\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - DNSServers (type: string)\n  - IPRouter (type: string)\n  - LocalIPAddress (type: string)\n  - ConnectionStatus (type: string)\n      Validator: ['NotPresent', 'Unconfigured', 'Connecting', 'Connected', 'PendingDisconnect', 'Disconnecting', 'Disconnected']\n  - SignalStrength (type: uint8)\n  - Technology (type: string)\n      Validator: ['none', 'gprs', 'edge', 'umts', 'hsdpa', 'hsupa', 'hspa', 'lte']\n  - Manufacturer (type: string)\n  - Model (type: string)\n  - PinType (type: string)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n  - void configureConnection((string apn), (string username), (string Password))\n  - string getPinType()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.ULIntf - Name: NeMo.Intf.42.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.LLIntf - Name: NeMo.Intf.42.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.Query - Name: NeMo.Intf.42.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Addr - Name: NeMo.Intf.42.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Addr - Name: NeMo.Intf.42.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Route - Name: NeMo.Intf.42.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Route - Name: NeMo.Intf.42.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router - Name: NeMo.Intf.42.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router.Option - Name: NeMo.Intf.42.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NeMo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NetDev.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NetDev\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/NetMaster.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite - Name: NetMaster.IPv4.DSLite\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - InterfaceSettingNumberOfEntries (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite.InterfaceSetting - Name: NetMaster.IPv4.DSLite.InterfaceSetting\n == PARAMETERS:\n  - EndpointName (type: string)\n  - Enable (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/OUI.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OUI\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ObjectMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ObjectMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/OopsTracker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OopsTracker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/OrangeDynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OrangeDynDNS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/OrangeRemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Plugins (type: string)\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/OrangeServices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/PPP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PPP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Pass.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Pass\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/PasswordRecovery.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PasswordRecovery\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Phonebook.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/PnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/PowerManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Probe.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - FileSizeCritical (type: bool)\n  - firstXferMaxTimer (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - xferTimeVariation (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - MaxSize (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '50000'}\n  - Anonymization (type: bool)\n      Attributes: persistent\n  - ExternalID (type: string)\n      Attributes: persistent\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n  - Tags (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n  - bool addTag(string tag)\n  - bool removeTag(string tag)\n  - bool clearTags()\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: Probe.Configuration.Type - Name: Probe.Configuration.Type\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only, persistent\n  - ID (type: int32)\n      Attributes: read_only, persistent\n  - Timestamp (type: date_time)\n      Attributes: read_only, persistent\n  - Interval (type: int32)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Process.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"error\": 13,\n    \"description\": \"Permission denied\",\n    \"info\": \"Process\"\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ProcessMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ProcessMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Profiles.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/QueueManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"QueueManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/RemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/RouterAdvertisement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"RouterAdvertisement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SAHPairing.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SFP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .SFP - Name: .SFP\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['No_detected', 'Detected', 'OrangeSFP', 'No_OrangeSFP', 'Optical_NOK', 'Optical_OK', 'RequestID', 'ONT_Ready', 'ONT_NOK', 'Unknown']\n  - LocalRegistrationID (type: string)\n      Attributes: read_only, persistent\n  - DeviceState (type: uint8)\n      Attributes: read_only\n  - FirmwareUpgrade (type: uint8)\n      Attributes: read_only\n  - ModelName (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - ProductClass (type: uint8)\n      Attributes: read_only\n  - Orange (type: bool)\n      Attributes: read_only\n  - Software1Version (type: string)\n      Attributes: read_only\n  - Software1Status (type: uint8)\n      Attributes: read_only\n  - Software2Version (type: string)\n      Attributes: read_only\n  - Software2Status (type: uint8)\n      Attributes: read_only\n  - Manufacturer (type: string)\n      Attributes: read_only\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - ONTReady (type: bool)\n      Attributes: read_only\n  - OperatingState (type: uint8)\n      Attributes: read_only\n  - HostCommunication (type: uint8)\n      Attributes: read_only\n  - PonID (type: string)\n      Attributes: read_only\n  - RegistrationID (type: string)\n      Attributes: read_only\n  - OpticalSignalLevel (type: int16)\n      Attributes: read_only\n  - TransmitOpticalLevel (type: int16)\n      Attributes: read_only\n  - ChipsetTemperature (type: int16)\n      Attributes: read_only\n  - Timer (type: uint8)\n  - Retry (type: uint8)\n == FUNCTIONS:\n  - bool setRegistrationID(string RegistrationID)\n  - variant get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SSLEServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSLEServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SSW.FeatureConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: SSW.FeatureConfig - Name: SSW.FeatureConfig\n == FUNCTIONS:\n  - void startEventing((string MAC))\n  - void stopEventing((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul - Name: SSW.FeatureConfig.MultiBackhaul\n == FUNCTIONS:\n  - void debugMultiBackhaul()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules - Name: SSW.FeatureConfig.MultiBackhaul.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules.Station - Name: SSW.FeatureConfig.MultiBackhaul.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config - Name: SSW.FeatureConfig.MultiBackhaul.Config\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n  - PrioTargets (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config.Station - Name: SSW.FeatureConfig.MultiBackhaul.Config.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving - Name: SSW.FeatureConfig.EnergySaving\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - FeaturesRunning (type: string)\n      Attributes: read_only\n  - MaxStatsLength (type: uint32)\n      Attributes: persistent\n  - RssiThreshold (type: int32)\n      Attributes: persistent\n  - DeltaThreshold (type: uint8)\n      Attributes: persistent\n  - AirtimeThreshold (type: uint32)\n      Attributes: persistent\n  - ModesEnabled (type: string)\n      Attributes: persistent\n  - AntennaConfiguration (type: string)\n      Attributes: persistent\n      Validator: ['Divided', 'Minimum']\n == FUNCTIONS:\n  - void getStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving.Stats - Name: SSW.FeatureConfig.EnergySaving.Stats\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrActivations (type: uint32)\n      Attributes: read_only\n  - LastUpTime (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery - Name: SSW.FeatureConfig.BackhaulRecovery\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - AttemptTimeout (type: uint32)\n      Attributes: persistent\n  - SlaveCertsFolder (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery.Stats - Name: SSW.FeatureConfig.BackhaulRecovery.Stats\n == PARAMETERS:\n  - NrTrigger (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AddOnMode - Name: SSW.FeatureConfig.AddOnMode\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Invalid', 'Disabled', 'Enabled', 'Active', 'ActiveNotConnected']\n  - LastStateChange (type: date_time)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - AddonMACAddress (type: string)\n      Attributes: read_only\n  - ActiveTimeout (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1'}\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.LongStats - Name: SSW.FeatureConfig.LongStats\n == PARAMETERS:\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getLongHistoryStats()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SSW.Steering.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: SSW.Steering - Name: SSW.Steering\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Up']\n == FUNCTIONS:\n  - void getNodeBackhaul((string MAC))\n  - void getUplinkInfo((string MAC))\n  - void getRoamInfo((string MAC))\n  - stationInfo getStationStats((string MAC))\n  - void getAllStationsCompactInfo()\n  - void getStationAssocLog((string MAC))\n  - list getAllStations((string ap))\n  - stationsStandards getAllStationsStandards((string ap))\n  - bool deleteStationInfo((string MAC))\n  - void setModeConfig((string mode), (string targetBroker))\n  - void getTopologyScoreInfo()\n\n=======================================================================\nOBJECT: SSW.Steering.MasterConfig - Name: SSW.Steering.MasterConfig\n == PARAMETERS:\n  - SyncEnableField (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList - Name: SSW.Steering.ExceptionList\n == PARAMETERS:\n  - MaxNumberOfExceptions (type: uint32)\n      Attributes: persistent\n  - DeployExceptions (type: bool)\n      Attributes: persistent\n  - VideoAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n  - SlaveAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n == FUNCTIONS:\n  - void createGmapAutoException(string query, (string target), (string type), (bool persistent), (string key))\n  - void deleteGmapAutoExceptionByKey(string key)\n  - void deleteGmapAutoExceptionByQuery(string query)\n  - void createException((string MAC), (uint8 mask), (string target), (string type))\n  - void deleteException((string MAC), (uint8 mask))\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList.Station - Name: SSW.Steering.ExceptionList.Station\n == PARAMETERS:\n  - MAC (type: string)\n      Attributes: persistent\n  - Mask (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '6'}\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Force', 'ForceNoSteer']\n  - Target (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade - Name: SSW.Steering.QoSUpgrade\n == PARAMETERS:\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['ftos', 'wmm-mark']\n == FUNCTIONS:\n  - void createRule(string mac, (uint8 tid))\n  - void deleteRule(string mac)\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules - Name: SSW.Steering.QoSUpgrade.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - TID (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '7'}\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules.Station - Name: SSW.Steering.QoSUpgrade.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - IPv4Address (type: string)\n  - IPv6Address (type: string)\n\n=======================================================================\nOBJECT: SSW.Steering.Policy - Name: SSW.Steering.Policy\n == PARAMETERS:\n  - BandSteeringStatus (type: bool)\n      Attributes: read_only\n  - ClientSteeringStatus (type: bool)\n      Attributes: read_only\n  - NrHandovers (type: uint32)\n      Attributes: read_only\n  - NrHandbacks (type: uint32)\n      Attributes: read_only\n  - NrFalseHandovers (type: uint32)\n      Attributes: read_only\n  - NrTriggers (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n  - NrFail (type: uint32)\n      Attributes: read_only\n  - NrAbort (type: uint32)\n      Attributes: read_only\n  - NrFastFail (type: uint32)\n      Attributes: read_only\n  - AvgReconnectTime (type: uint32)\n      Attributes: read_only\n  - AvgSteeringTime (type: uint32)\n      Attributes: read_only\n  - NrReconnectMeasurements (type: uint32)\n      Attributes: read_only\n  - AvgFailReconnectTime (type: uint32)\n      Attributes: read_only\n  - MaxSteerReached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice - Name: SSW.Steering.ExternalDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice.Station - Name: SSW.Steering.ExternalDevice.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SSW.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSW\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SambaService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Scheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Screen.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setShowWifiPassword((bool Enable))\n  - bool getShowWifiPassword()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ServiceInvocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool reloadAclScript()\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SpeedTest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/SrvInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SrvInterface\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/StorageService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n  - bool getDiskUri((string uri))\n  - bool getDiskInfo((string uri), (variant diskinfo))\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Time.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/ToD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ToD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/TopologyDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UDPEchoConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UDPEchoConfig\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UPnP-IGD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UPnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UPnP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/URLMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .URLMon - Name: .URLMon\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ModeCurrent (type: string)\n      Attributes: read_only\n  - ModeAfterReboot (type: string)\n      Attributes: persistent\n      Validator: ['Internal']\n  - PatternNum (type: uint32)\n      Attributes: read_only\n  - PatternLength (type: uint32)\n      Attributes: read_only\n  - BackupHostBroadcast (type: bool)\n      Attributes: persistent\n  - NumberOfHost (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool getRedirectDecision(httpconnprop_t connproperties, (string redirect_url), (string decision_mode))\n  - list classify(string url)\n  - list categories()\n  - void getDevices((list devices))\n  - void enableDevice(string mac, bool enable)\n  - void deleteDevice(string mac)\n  - void getListMode(string mac, (string mode))\n  - void setListMode(string mac, string mode)\n  - void getList(string mac, (list patterns))\n  - void setList(string mac, (list patterns), (bool clean))\n  - void copyList(string mac_src, string mac_dst)\n  - void getModeCurrent((string mode))\n  - void getModeAfterReboot((string mode))\n  - void setModeAfterReboot(string mode)\n  - void getPatternLimits((uint32 patternNum), (uint32 patternLength))\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.Host.List - Name: URLMon.Host.List\n == PARAMETERS:\n  - Pattern (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/USBHosts.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/Upgrade.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Upgrade\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UplinkMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UserInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/UserManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/VPN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VPN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/VoWifi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/VoiceActivation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceActivation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/VoiceService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WLanScheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WOL.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WOLProxy.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WOLProxy\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WatchDog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WatchDog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WebuiupgradeService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WiFiBCM.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiBCM\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/WiFiQUAN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiQUAN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 4/_ALL MODULES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: . - Name: .\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setShowWifiPassword((bool Enable))\n  - bool getShowWifiPassword()\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n=======================================================================\nOBJECT: .DECT - Name: .DECT\n == PARAMETERS:\n  - PairingStatus (type: string)\n      Attributes: read_only\n      Validator: ['Idle', 'Pairing']\n == FUNCTIONS:\n  - string getPairingStatus()\n  - void startPairing()\n  - void stopPairing()\n  - void reset((bool reboot))\n  - string getRFPI()\n  - string getStandardVersion()\n  - string getPIN()\n  - void setPIN((string pin))\n  - string getVersion()\n  - string getName()\n  - bool getRadioState()\n  - void setRadioState((bool state))\n  - int8 getRSSI((string name), (bool synchronous))\n  - void setHandsetDebugMode((bool enable))\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: DECT.Repeater.Device - Name: DECT.Repeater.Device\n == PARAMETERS:\n  - Id (type: uint16)\n      Attributes: read_only, persistent\n  - SoftwareVersion (type: string)\n      Attributes: read_only, persistent\n  - HardwareVersion (type: string)\n      Attributes: read_only, persistent\n  - IPUI (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '11'}\n  - Active (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void deregister()\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n=======================================================================\nOBJECT: .GenLog - Name: .GenLog\n == FUNCTIONS:\n  - variant readLogs(int32 nrecords, (string source), (string topic), (datetime since), (datetime until))\n  - variant nextLogs(variant iterator, int32 nrecords)\n  - void clearLogs(string topic, (string source))\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool reloadAclScript()\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - variant getDebugInformation((bool filedesc), (debug_options_t options))\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - FileSizeCritical (type: bool)\n  - firstXferMaxTimer (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - xferTimeVariation (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - MaxSize (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '50000'}\n  - Anonymization (type: bool)\n      Attributes: persistent\n  - ExternalID (type: string)\n      Attributes: persistent\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n  - Tags (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n  - bool addTag(string tag)\n  - bool removeTag(string tag)\n  - bool clearTags()\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: Probe.Configuration.Type - Name: Probe.Configuration.Type\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only, persistent\n  - ID (type: int32)\n      Attributes: read_only, persistent\n  - Timestamp (type: date_time)\n      Attributes: read_only, persistent\n  - Interval (type: int32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .URLMon - Name: .URLMon\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ModeCurrent (type: string)\n      Attributes: read_only\n  - ModeAfterReboot (type: string)\n      Attributes: persistent\n      Validator: ['Internal']\n  - PatternNum (type: uint32)\n      Attributes: read_only\n  - PatternLength (type: uint32)\n      Attributes: read_only\n  - BackupHostBroadcast (type: bool)\n      Attributes: persistent\n  - NumberOfHost (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool getRedirectDecision(httpconnprop_t connproperties, (string redirect_url), (string decision_mode))\n  - list classify(string url)\n  - list categories()\n  - void getDevices((list devices))\n  - void enableDevice(string mac, bool enable)\n  - void deleteDevice(string mac)\n  - void getListMode(string mac, (string mode))\n  - void setListMode(string mac, string mode)\n  - void getList(string mac, (list patterns))\n  - void setList(string mac, (list patterns), (bool clean))\n  - void copyList(string mac_src, string mac_dst)\n  - void getModeCurrent((string mode))\n  - void getModeAfterReboot((string mode))\n  - void setModeAfterReboot(string mode)\n  - void getPatternLimits((uint32 patternNum), (uint32 patternLength))\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.Host.List - Name: URLMon.Host.List\n == PARAMETERS:\n  - Pattern (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n  - bool getDiskUri((string uri))\n  - bool getDiskInfo((string uri), (variant diskinfo))\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite - Name: NetMaster.IPv4.DSLite\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - InterfaceSettingNumberOfEntries (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite.InterfaceSetting - Name: NetMaster.IPv4.DSLite.InterfaceSetting\n == PARAMETERS:\n  - EndpointName (type: string)\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n=======================================================================\nOBJECT: .SFP - Name: .SFP\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['No_detected', 'Detected', 'OrangeSFP', 'No_OrangeSFP', 'Optical_NOK', 'Optical_OK', 'RequestID', 'ONT_Ready', 'ONT_NOK', 'Unknown']\n  - LocalRegistrationID (type: string)\n      Attributes: read_only, persistent\n  - DeviceState (type: uint8)\n      Attributes: read_only\n  - FirmwareUpgrade (type: uint8)\n      Attributes: read_only\n  - ModelName (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - ProductClass (type: uint8)\n      Attributes: read_only\n  - Orange (type: bool)\n      Attributes: read_only\n  - Software1Version (type: string)\n      Attributes: read_only\n  - Software1Status (type: uint8)\n      Attributes: read_only\n  - Software2Version (type: string)\n      Attributes: read_only\n  - Software2Status (type: uint8)\n      Attributes: read_only\n  - Manufacturer (type: string)\n      Attributes: read_only\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - ONTReady (type: bool)\n      Attributes: read_only\n  - OperatingState (type: uint8)\n      Attributes: read_only\n  - HostCommunication (type: uint8)\n      Attributes: read_only\n  - PonID (type: string)\n      Attributes: read_only\n  - RegistrationID (type: string)\n      Attributes: read_only\n  - OpticalSignalLevel (type: int16)\n      Attributes: read_only\n  - TransmitOpticalLevel (type: int16)\n      Attributes: read_only\n  - ChipsetTemperature (type: int16)\n      Attributes: read_only\n  - Timer (type: uint8)\n  - Retry (type: uint8)\n == FUNCTIONS:\n  - bool setRegistrationID(string RegistrationID)\n  - variant get()\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Plugins (type: string)\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Config.global - Name: Devices.Config.global\n == PARAMETERS:\n  - MaxLanDevices (type: string)\n      Attributes: persistent\n  - MaxLanDevicesAccept (type: string)\n      Attributes: persistent\n  - MaxLanDevicesDeleteActive (type: string)\n      Attributes: persistent\n  - MaxInactiveAge (type: string)\n      Attributes: persistent\n  - DeviceTypeOrder (type: string)\n      Attributes: persistent\n  - NameOrder (type: string)\n      Attributes: persistent\n  - MDNSDisable (type: string)\n      Attributes: persistent\n  - KeepLink (type: string)\n      Attributes: persistent\n  - AcceptIntfs (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.Priority - Name: Devices.Config.Priority\n == PARAMETERS:\n  - Types (type: string)\n      Attributes: persistent\n  - Configurations (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.WANAccess - Name: Devices.Config.WANAccess\n == PARAMETERS:\n  - BlockedReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.eth - Name: Devices.Config.eth\n == PARAMETERS:\n  - DHCPPools (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selfphysical - Name: Devices.Config.selfphysical\n == PARAMETERS:\n  - Blocked (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selflan - Name: Devices.Config.selflan\n == PARAMETERS:\n  - Interfaces (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.events - Name: Devices.Config.events\n == PARAMETERS:\n  - CPUInterval (type: string)\n      Attributes: persistent\n  - SysInfoInterval (type: string)\n      Attributes: persistent\n  - Log (type: string)\n      Attributes: persistent\n  - LogType (type: string)\n      Attributes: persistent\n  - LogSize (type: string)\n      Attributes: persistent\n  - LogEntries (type: string)\n      Attributes: persistent\n  - LogPath (type: string)\n      Attributes: persistent\n  - DevicesInterval (type: string)\n      Attributes: persistent\n  - WANInterfaces (type: string)\n      Attributes: persistent\n  - MaxWlanStatMonStations (type: string)\n      Attributes: persistent\n  - WlanPersistentLogsInterval (type: string)\n      Attributes: persistent\n  - WlanPersistentAggregationInterval (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.mqtt - Name: Devices.Config.mqtt\n == PARAMETERS:\n  - Server (type: string)\n      Attributes: persistent\n  - AlarmTopic (type: string)\n      Attributes: persistent\n  - AddedTopic (type: string)\n      Attributes: persistent\n  - InfoChangedTopic (type: string)\n      Attributes: persistent\n  - DataChangedTopic (type: string)\n      Attributes: persistent\n  - DeleteTopic (type: string)\n      Attributes: persistent\n  - EventsEnable (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.ieee1905_gmap - Name: Devices.Config.ieee1905_gmap\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/_PROCESSES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: Process.sysbus - Name: Process.1\n\n=======================================================================\nOBJECT: Process.sysbus_objectmonitor - Name: Process.2\n\n=======================================================================\nOBJECT: Process.sysbus_watchdog - Name: Process.3\n\n=======================================================================\nOBJECT: Process.sysbus_usermngt - Name: Process.4\n\n=======================================================================\nOBJECT: Process.sysbus_faultmonitorplugin - Name: Process.5\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6_plugin - Name: Process.6\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-core - Name: Process.7\n\n=======================================================================\nOBJECT: Process.sysbus_dsl_broadcom - Name: Process.8\n\n=======================================================================\nOBJECT: Process.sysbus_netdev - Name: Process.9\n\n=======================================================================\nOBJECT: Process.sysbus_netmaster - Name: Process.10\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_core - Name: Process.11\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client - Name: Process.12\n\n=======================================================================\nOBJECT: Process.sysbus_www-backend - Name: Process.13\n\n=======================================================================\nOBJECT: Process.sysbus_firewall - Name: Process.14\n\n=======================================================================\nOBJECT: Process.sysbus_bcmeth - Name: Process.15\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-clients - Name: Process.16\n\n=======================================================================\nOBJECT: Process.sysbus_raplugin - Name: Process.17\n\n=======================================================================\nOBJECT: Process.sysbus_screen_plugin - Name: Process.18\n\n=======================================================================\nOBJECT: Process.sysbus_sfp - Name: Process.19\n\n=======================================================================\nOBJECT: Process.sysbus_dhcp - Name: Process.20\n\n=======================================================================\nOBJECT: Process.sysbus_dnsplugin - Name: Process.21\n\n=======================================================================\nOBJECT: Process.sysbus_kmcd - Name: Process.22\n\n=======================================================================\nOBJECT: Process.sysbus_pppd_plugin - Name: Process.23\n\n=======================================================================\nOBJECT: Process.sysbus_upmonitor - Name: Process.24\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6d_plugin - Name: Process.25\n\n=======================================================================\nOBJECT: Process.sysbus_dslite - Name: Process.26\n\n=======================================================================\nOBJECT: Process.sysbus_ipsec - Name: Process.27\n\n=======================================================================\nOBJECT: Process.sysbus_conntrack_plugin - Name: Process.28\n\n=======================================================================\nOBJECT: Process.sysbus_flowstats - Name: Process.29\n\n=======================================================================\nOBJECT: Process.sysbus_maculan - Name: Process.30\n\n=======================================================================\nOBJECT: Process.sysbus_vowifi - Name: Process.31\n\n=======================================================================\nOBJECT: Process.sysbus_ssle-server - Name: Process.32\n\n=======================================================================\nOBJECT: Process.sysbus_deviceinfo_plugin - Name: Process.33\n\n=======================================================================\nOBJECT: Process.sysbus_devicemngt - Name: Process.34\n\n=======================================================================\nOBJECT: Process.sysbus_mqttmessages - Name: Process.35\n\n=======================================================================\nOBJECT: Process.sysbus_wld_bcm - Name: Process.36\n\n=======================================================================\nOBJECT: Process.sysbus_wld_quan - Name: Process.37\n\n=======================================================================\nOBJECT: Process.sysbus_dnssd - Name: Process.38\n\n=======================================================================\nOBJECT: Process.sysbus_llmnr - Name: Process.39\n\n=======================================================================\nOBJECT: Process.sysbus_pnp - Name: Process.40\n\n=======================================================================\nOBJECT: Process.sysbus_vpn - Name: Process.41\n\n=======================================================================\nOBJECT: Process.sysbus_gmap - Name: Process.42\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_self - Name: Process.43\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_eth - Name: Process.44\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hgw - Name: Process.45\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_devtype - Name: Process.46\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dns - Name: Process.47\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_upnp - Name: Process.48\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_wan - Name: Process.49\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_usb - Name: Process.50\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mdns - Name: Process.51\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_events - Name: Process.52\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcav - Name: Process.53\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcdevolo - Name: Process.54\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ieee1905 - Name: Process.55\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_db - Name: Process.56\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_owner - Name: Process.57\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_location - Name: Process.58\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_lltd - Name: Process.59\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ssw - Name: Process.60\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_voice - Name: Process.61\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mqtt - Name: Process.62\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dect_ule - Name: Process.63\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hue - Name: Process.64\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_vdev - Name: Process.65\n\n=======================================================================\nOBJECT: Process.sysbus_manifest - Name: Process.66\n\n=======================================================================\nOBJECT: Process.sysbus_passwordrecovery - Name: Process.67\n\n=======================================================================\nOBJECT: Process.sysbus_wlan-manager - Name: Process.68\n\n=======================================================================\nOBJECT: Process.sysbus_eventmanager - Name: Process.69\n\n=======================================================================\nOBJECT: Process.sysbus_captiveportal - Name: Process.70\n\n=======================================================================\nOBJECT: Process.sysbus_urlmon - Name: Process.71\n\n=======================================================================\nOBJECT: Process.sysbus_dyndns_plugin - Name: Process.72\n\n=======================================================================\nOBJECT: Process.sysbus_time-plugin - Name: Process.73\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_client - Name: Process.74\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_plugin - Name: Process.75\n\n=======================================================================\nOBJECT: Process.sysbus_phonebook_plugin - Name: Process.76\n\n=======================================================================\nOBJECT: Process.sysbus_httpd - Name: Process.77\n\n=======================================================================\nOBJECT: Process.sysbus_voipapp - Name: Process.78\n\n=======================================================================\nOBJECT: Process.sysbus_tr181 - Name: Process.79\n\n=======================================================================\nOBJECT: Process.sysbus_voipaad_plugin - Name: Process.80\n\n=======================================================================\nOBJECT: Process.sysbus_scheduler-plugin - Name: Process.81\n\n=======================================================================\nOBJECT: Process.sysbus_udpechoconfig - Name: Process.82\n\n=======================================================================\nOBJECT: Process.sysbus_usbhosts - Name: Process.83\n\n=======================================================================\nOBJECT: Process.sysbus_dlnadms - Name: Process.84\n\n=======================================================================\nOBJECT: Process.sysbus_tod-plugin - Name: Process.85\n\n=======================================================================\nOBJECT: Process.sysbus_wakeonlan-plugin - Name: Process.86\n\n=======================================================================\nOBJECT: Process.sysbus_wlanscheduler-plugin - Name: Process.87\n\n=======================================================================\nOBJECT: Process.sysbus_cups_plugin - Name: Process.88\n\n=======================================================================\nOBJECT: Process.sysbus_cwmp-plugin - Name: Process.89\n\n=======================================================================\nOBJECT: Process.sysbus_launcher - Name: Process.90\n\n=======================================================================\nOBJECT: Process.sysbus_location - Name: Process.91\n\n=======================================================================\nOBJECT: Process.sysbus_lxcmanager - Name: Process.92\n\n=======================================================================\nOBJECT: Process.sysbus_mqttbroker - Name: Process.93\n\n=======================================================================\nOBJECT: Process.sysbus_oui - Name: Process.94\n\n=======================================================================\nOBJECT: Process.sysbus_remoteaccess - Name: Process.95\n\n=======================================================================\nOBJECT: Process.sysbus_sahpairing - Name: Process.96\n\n=======================================================================\nOBJECT: Process.sysbus_srvinterface - Name: Process.97\n\n=======================================================================\nOBJECT: Process.sysbus_ssw - Name: Process.98\n\n=======================================================================\nOBJECT: Process.sysbus_rule-engine - Name: Process.99\n\n=======================================================================\nOBJECT: Process.sysbus_upgraded_plugin - Name: Process.100\n\n=======================================================================\nOBJECT: Process.sysbus_storage - Name: Process.101\n\n=======================================================================\nOBJECT: Process.sysbus_bcm_fxs - Name: Process.102\n\n=======================================================================\nOBJECT: Process.sysbus_webuiupgrade_plugin - Name: Process.103\n\n=======================================================================\nOBJECT: Process.sysbus_pass - Name: Process.104\n\n=======================================================================\nOBJECT: Process.sysbus_account-remoteaccess - Name: Process.105\n\n=======================================================================\nOBJECT: Process.sysbus_rule-factory - Name: Process.106\n\n=======================================================================\nOBJECT: Process.sysbus_accountmanager - Name: Process.107\n\n=======================================================================\nOBJECT: Process.sysbus_autodiag - Name: Process.108\n\n=======================================================================\nOBJECT: Process.sysbus_bulkdata - Name: Process.109\n\n=======================================================================\nOBJECT: Process.sysbus_cifscl - Name: Process.110\n\n=======================================================================\nOBJECT: Process.sysbus_ConMon - Name: Process.111\n\n=======================================================================\nOBJECT: Process.sysbus_cpu_monitor - Name: Process.112\n\n=======================================================================\nOBJECT: Process.sysbus_devicelookup - Name: Process.113\n\n=======================================================================\nOBJECT: Process.sysbus_domino_plugin - Name: Process.114\n\n=======================================================================\nOBJECT: Process.sysbus_dummyplugin - Name: Process.115\n\n=======================================================================\nOBJECT: Process.sysbus_genlog - Name: Process.116\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_orange - Name: Process.117\n\n=======================================================================\nOBJECT: Process.sysbus_history - Name: Process.118\n\n=======================================================================\nOBJECT: Process.sysbus_homelan - Name: Process.119\n\n=======================================================================\nOBJECT: Process.sysbus_ieee1905-registrar - Name: Process.120\n\n=======================================================================\nOBJECT: Process.sysbus_iot-service - Name: Process.121\n\n=======================================================================\nOBJECT: Process.sysbus_ippingdiagnostics - Name: Process.122\n\n=======================================================================\nOBJECT: Process.sysbus_mss - Name: Process.123\n\n=======================================================================\nOBJECT: Process.sysbus_oopstracker - Name: Process.124\n\n=======================================================================\nOBJECT: Process.sysbus_orange-dyndns_plugin - Name: Process.125\n\n=======================================================================\nOBJECT: Process.sysbus_orange-invoc - Name: Process.126\n\n=======================================================================\nOBJECT: Process.sysbus_powermanagement - Name: Process.127\n\n=======================================================================\nOBJECT: Process.sysbus_probe_plugin - Name: Process.128\n\n=======================================================================\nOBJECT: Process.sysbus_probe_client - Name: Process.129\n\n=======================================================================\nOBJECT: Process.sysbus_processmonitor - Name: Process.130\n\n=======================================================================\nOBJECT: Process.sysbus_qrcode - Name: Process.131\n\n=======================================================================\nOBJECT: Process.sysbus_dect - Name: Process.132\n\n=======================================================================\nOBJECT: Process.sysbus_speedtest - Name: Process.133\n\n=======================================================================\nOBJECT: Process.sysbus_topologydiagnostics - Name: Process.134\n\n=======================================================================\nOBJECT: Process.sysbus_upnp-igd_plugin - Name: Process.135\n\n=======================================================================\nOBJECT: Process.sysbus_upnpdiscd_plugin - Name: Process.136\n\n=======================================================================\nOBJECT: Process.sysbus_WOLProxy - Name: Process.137\n\n=======================================================================\nOBJECT: Process.sysbus_wt_plugin - Name: Process.138\n\n=======================================================================\nOBJECT: Process.sysbus_invoc - Name: Process.139\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/eventmanager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 4/sah.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SR40-fr-G06.R01.C05_02\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/AccountManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"AccountManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Audiphone.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Audiphone\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/AutoDiag.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/BCMPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BCMPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/BulkData.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BulkData\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/CPUStats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CPUStats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/CaptivePortal.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CaptivePortal\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ConMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ConMon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Conntrack.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Conntrack\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DECT.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DECT - Name: .DECT\n == PARAMETERS:\n  - PairingStatus (type: string)\n      Attributes: read_only\n      Validator: ['Idle', 'Pairing']\n == FUNCTIONS:\n  - string getPairingStatus()\n  - void startPairing()\n  - void stopPairing()\n  - void reset((bool reboot))\n  - string getRFPI()\n  - string getStandardVersion()\n  - string getPIN()\n  - void setPIN((string pin))\n  - string getVersion()\n  - string getName()\n  - bool getRadioState()\n  - void setRadioState((bool state))\n  - int8 getRSSI((string name), (bool synchronous))\n  - void setHandsetDebugMode((bool enable))\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: DECT.Repeater.Device - Name: DECT.Repeater.Device\n == PARAMETERS:\n  - Id (type: uint16)\n      Attributes: read_only, persistent\n  - SoftwareVersion (type: string)\n      Attributes: read_only, persistent\n  - HardwareVersion (type: string)\n      Attributes: read_only, persistent\n  - IPUI (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '11'}\n  - Active (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void deregister()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DHCPv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DHCPv6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv6.Server.Pool - Name: DHCPv6.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - SNTPServers (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DHCPv6.Server.Pool.Prefix - Name: DHCPv6.Server.Pool.Prefix\n == PARAMETERS:\n  - Prefix (type: string)\n  - PrefixLength (type: int32)\n      Validator: {'max': '128'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DHCPv6Client.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DHCPv6Client\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DLNA.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DLNA\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DNSSD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DSPGDECT.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPGDECT\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DSPPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DeviceInfo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DeviceManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DeviceManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Devices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Domino.Airbox.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino/Airbox\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Domino.Cellular.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface - Name: Domino.Cellular.Interface\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - SupportedAccessTechnologies (type: string)\n      Attributes: read_only\n  - PreferredAccessTechnology (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'LTE', 'WCDMA']\n  - CurrentAccessTechnology (type: string)\n      Attributes: read_only, persistent\n  - RSSI (type: int32)\n      Attributes: read_only\n  - PINCheck (type: string)\n      Attributes: persistent\n  - PIN (type: string)\n      Attributes: persistent\n  - X_ORANGE-COM_PINTry (type: uint32)\n      Attributes: persistent\n  - InterferenceMode (type: string)\n      Attributes: persistent\n      Validator: ['NONE', '3G2100', '4GB7', '3G2100+4GB7']\n  - Upstream (type: bool)\n == FUNCTIONS:\n  - bool setTechnologyMode(string mode, string interference)\n  - bool setGlobalPin(string pin)\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface.USIM - Name: Domino.Cellular.Interface.USIM\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['', 'None', 'Available', 'Valid', 'Blocked', 'Error', 'New']\n  - ICCID (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool authorizeICCID((bool enable))\n\n=======================================================================\nOBJECT: Domino.Cellular.AccessPoint - Name: Domino.Cellular.AccessPoint\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n == FUNCTIONS:\n  - bool setAPSettings(string apn, string username, string password)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Domino.Intf.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == PARAMETERS:\n  - Status (type: int32)\n      Attributes: read_only\n  - StateMachine (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Intf.ConnectionContext - Name: Domino.Intf.ConnectionContext\n == FUNCTIONS:\n  - bool setAdminPassword((string password))\n  - bool resetAdminPassword((string currpwd), (string newpwd))\n\n=======================================================================\nOBJECT: Domino.Intf.SIM - Name: Domino.Intf.SIM\n == FUNCTIONS:\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Domino.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DummyPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DummyPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/DynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/FaultMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"FaultMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Firewall.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Config (type: string)\n      Attributes: persistent\n  - AdvancedLevel (type: string)\n      Attributes: persistent\n  - AdvancedIPv6Level (type: string)\n      Attributes: persistent\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - PCPServerMaxlifetime (type: uint32)\n      Attributes: persistent\n  - PCPServerMinlifetime (type: uint32)\n      Attributes: persistent\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.Stats - Name: Firewall.PCP.Stats\n == PARAMETERS:\n  - SuccessPCPMAPCount (type: uint32)\n      Attributes: read_only\n  - FailurePCPMAPCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Flowstats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Flowstats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/GenLog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"GenLog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Gpon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Gpon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/HTTPService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/History.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/HomeLan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/IPPingDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPPingDiagnostics\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/IPsec.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPsec\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Invocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Invocation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/KMCD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"KMCD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/LLMNR.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LLMNR\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/LXCManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LXCManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Launcher.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Launcher\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/MQTTBroker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTBroker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/MSS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Maculan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ManagementServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ManagementServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Manifests.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NMC.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - FlushCacheEnable (type: bool)\n      Attributes: persistent\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - RebootSinceLastUpgrade (type: uint32)\n      Attributes: read_only, persistent\n  - RebootMaxDuration (type: uint32)\n      Attributes: persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported', 'Oops']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '19'}\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility - Name: NMC.ServiceEligibility\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.Criteria - Name: NMC.ServiceEligibility.Criteria\n == PARAMETERS:\n  - Value (type: bool)\n  - LastUpdate (type: date_time)\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.CgnOption - Name: NMC.ServiceEligibility.CgnOption\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.CgnOption.SentOption - Name: NMC.ServiceEligibility.CgnOption.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Intfname (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.brguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/brguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge - Name: NeMo.Intf.7\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.ULIntf - Name: NeMo.Intf.7.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.LLIntf - Name: NeMo.Intf.7.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.Query - Name: NeMo.Intf.7.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Addr - Name: NeMo.Intf.7.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Addr - Name: NeMo.Intf.7.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Route - Name: NeMo.Intf.7.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Route - Name: NeMo.Intf.7.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router - Name: NeMo.Intf.7.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n  - Status (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router.Option - Name: NeMo.Intf.7.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge_ctr.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_ctr\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge_gviptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_gviptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge_gvmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti - Name: NeMo.Intf.17\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.ULIntf - Name: NeMo.Intf.17.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.LLIntf - Name: NeMo.Intf.17.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.Query - Name: NeMo.Intf.17.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Addr - Name: NeMo.Intf.17.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Addr - Name: NeMo.Intf.17.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Route - Name: NeMo.Intf.17.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Route - Name: NeMo.Intf.17.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router - Name: NeMo.Intf.17.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n  - Status (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router.Option - Name: NeMo.Intf.17.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge_viptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_viptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.bridge_vmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti - Name: NeMo.Intf.10\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.ULIntf - Name: NeMo.Intf.10.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.LLIntf - Name: NeMo.Intf.10.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.Query - Name: NeMo.Intf.10.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Addr - Name: NeMo.Intf.10.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Addr - Name: NeMo.Intf.10.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Route - Name: NeMo.Intf.10.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Route - Name: NeMo.Intf.10.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router - Name: NeMo.Intf.10.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n  - Status (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router.Option - Name: NeMo.Intf.10.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.container.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/container\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.data - Name: NeMo.Intf.29\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.data.ULIntf - Name: NeMo.Intf.29.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.LLIntf - Name: NeMo.Intf.29.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.Query - Name: NeMo.Intf.29.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dhcp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data - Name: NeMo.Intf.25\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay), (string reason))\n  - void rebind((int32 numberOfRebind), (int32 delay), (string reason))\n  - void restart((string reason))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ULIntf - Name: NeMo.Intf.25.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.LLIntf - Name: NeMo.Intf.25.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.Query - Name: NeMo.Intf.25.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.SentOption - Name: NeMo.Intf.25.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ReqOption - Name: NeMo.Intf.25.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dhcp_iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_iptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dhcp_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dhcp_wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan - Name: NeMo.Intf.37\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay), (string reason))\n  - void rebind((int32 numberOfRebind), (int32 delay), (string reason))\n  - void restart((string reason))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ULIntf - Name: NeMo.Intf.37.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.LLIntf - Name: NeMo.Intf.37.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.Query - Name: NeMo.Intf.37.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.SentOption - Name: NeMo.Intf.37.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ReqOption - Name: NeMo.Intf.37.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dhcpv6_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data - Name: NeMo.Intf.26\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Validator: ['Idle', 'Init', 'Selecting', 'Requesting', 'Bound', 'BoundCheck', 'Release', 'Decline', 'Renew', 'Rebind', 'Release', 'InformationRequest', 'InformationBound', 'Error']\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: uint8)\n      Attributes: persistent\n  - DUID (type: string)\n      Attributes: persistent\n  - RequestAddresses (type: bool)\n      Attributes: persistent\n  - RequestPrefixes (type: bool)\n      Attributes: persistent\n  - RapidCommit (type: bool)\n      Attributes: persistent\n  - IAID (type: uint32)\n      Attributes: persistent\n  - SuggestedT1 (type: int32)\n      Attributes: persistent\n  - SuggestedT2 (type: int32)\n      Attributes: persistent\n  - SupportedOptions (type: string)\n      Attributes: persistent\n  - RequestedOptions (type: string)\n      Attributes: persistent\n  - Reason (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInfo (type: string)\n      Attributes: persistent\n  - RetryOnFailedAuth (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew()\n  - void restart((string reason))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ULIntf - Name: NeMo.Intf.26.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.LLIntf - Name: NeMo.Intf.26.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.Query - Name: NeMo.Intf.26.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.SentOption - Name: NeMo.Intf.26.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint16)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ReceivedOption - Name: NeMo.Intf.26.ReceivedOption\n == PARAMETERS:\n  - Tag (type: uint16)\n  - Alias (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.dslite.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite - Name: NeMo.Intf.38\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LocalEndpointAddress (type: string)\n  - RemoteEndpointAddress (type: string)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.ULIntf - Name: NeMo.Intf.38.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.LLIntf - Name: NeMo.Intf.38.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.Query - Name: NeMo.Intf.38.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.IPv4Addr - Name: NeMo.Intf.38.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.IPv6Addr - Name: NeMo.Intf.38.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.IPv4Route - Name: NeMo.Intf.38.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.IPv6Route - Name: NeMo.Intf.38.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dslite.StatMon - Name: NeMo.Intf.38.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0 - Name: NeMo.Intf.3\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.ULIntf - Name: NeMo.Intf.3.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.LLIntf - Name: NeMo.Intf.3.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.Query - Name: NeMo.Intf.3.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv4Addr - Name: NeMo.Intf.3.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv6Addr - Name: NeMo.Intf.3.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv4Route - Name: NeMo.Intf.3.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.IPv6Route - Name: NeMo.Intf.3.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth0.StatMon - Name: NeMo.Intf.3.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1 - Name: NeMo.Intf.4\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.ULIntf - Name: NeMo.Intf.4.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.LLIntf - Name: NeMo.Intf.4.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.Query - Name: NeMo.Intf.4.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv4Addr - Name: NeMo.Intf.4.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv6Addr - Name: NeMo.Intf.4.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv4Route - Name: NeMo.Intf.4.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.IPv6Route - Name: NeMo.Intf.4.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth1.StatMon - Name: NeMo.Intf.4.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2 - Name: NeMo.Intf.5\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.ULIntf - Name: NeMo.Intf.5.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.LLIntf - Name: NeMo.Intf.5.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.Query - Name: NeMo.Intf.5.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv4Addr - Name: NeMo.Intf.5.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv6Addr - Name: NeMo.Intf.5.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv4Route - Name: NeMo.Intf.5.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.IPv6Route - Name: NeMo.Intf.5.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth2.StatMon - Name: NeMo.Intf.5.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3 - Name: NeMo.Intf.6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.ULIntf - Name: NeMo.Intf.6.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.LLIntf - Name: NeMo.Intf.6.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.Query - Name: NeMo.Intf.6.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv4Addr - Name: NeMo.Intf.6.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv6Addr - Name: NeMo.Intf.6.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv4Route - Name: NeMo.Intf.6.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.IPv6Route - Name: NeMo.Intf.6.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth3.StatMon - Name: NeMo.Intf.6.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4 - Name: NeMo.Intf.42\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ULIntf - Name: NeMo.Intf.42.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.LLIntf - Name: NeMo.Intf.42.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.Query - Name: NeMo.Intf.42.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv4Addr - Name: NeMo.Intf.42.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv6Addr - Name: NeMo.Intf.42.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv4Route - Name: NeMo.Intf.42.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IPv6Route - Name: NeMo.Intf.42.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.Vendor - Name: NeMo.Intf.42.Vendor\n == PARAMETERS:\n  - PNCheckEnabled (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IEEE80211r - Name: NeMo.Intf.42.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.IEEE80211u - Name: NeMo.Intf.42.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.Security - Name: NeMo.Intf.42.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.WPS - Name: NeMo.Intf.42.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.MACFiltering - Name: NeMo.Intf.42.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.MACFiltering.Entry - Name: NeMo.Intf.42.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.MACFiltering.TempEntry - Name: NeMo.Intf.42.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ProbeFiltering - Name: NeMo.Intf.42.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ProbeFiltering.TempEntry - Name: NeMo.Intf.42.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.VendorIEs - Name: NeMo.Intf.42.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.VendorIEs.VendorIE - Name: NeMo.Intf.42.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.HotSpot2 - Name: NeMo.Intf.42.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.AssociatedDevice - Name: NeMo.Intf.42.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.42.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.AssociationCount - Name: NeMo.Intf.42.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.42.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.MgtStats - Name: NeMo.Intf.42.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ErrorToggleConfig - Name: NeMo.Intf.42.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.ErrorToggleStats - Name: NeMo.Intf.42.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.Neighbour - Name: NeMo.Intf.42.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.RssiEventing - Name: NeMo.Intf.42.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.StaKickOnError - Name: NeMo.Intf.42.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.StaKickOnError.GenericTests - Name: NeMo.Intf.42.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.StaKickOnError.VendorTests - Name: NeMo.Intf.42.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.DriverConfig - Name: NeMo.Intf.42.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.eth4.StatMon - Name: NeMo.Intf.42.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth4_lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/eth4_lan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.eth4_mgmt.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/eth4_mgmt\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.guest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.guest - Name: NeMo.Intf.36\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.ULIntf - Name: NeMo.Intf.36.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.LLIntf - Name: NeMo.Intf.36.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.Query - Name: NeMo.Intf.36.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.gvlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data - Name: NeMo.Intf.15\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.ULIntf - Name: NeMo.Intf.15.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.LLIntf - Name: NeMo.Intf.15.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.Query - Name: NeMo.Intf.15.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Addr - Name: NeMo.Intf.15.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Addr - Name: NeMo.Intf.15.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Route - Name: NeMo.Intf.15.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Route - Name: NeMo.Intf.15.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.QoS - Name: NeMo.Intf.15.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.StatMon - Name: NeMo.Intf.15.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.gvlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.gvlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.gvlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi - Name: NeMo.Intf.16\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.ULIntf - Name: NeMo.Intf.16.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.LLIntf - Name: NeMo.Intf.16.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.Query - Name: NeMo.Intf.16.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Addr - Name: NeMo.Intf.16.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Addr - Name: NeMo.Intf.16.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Route - Name: NeMo.Intf.16.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Route - Name: NeMo.Intf.16.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.QoS - Name: NeMo.Intf.16.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.StatMon - Name: NeMo.Intf.16.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.gvlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv - Name: NeMo.Intf.31\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.ULIntf - Name: NeMo.Intf.31.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.LLIntf - Name: NeMo.Intf.31.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.Query - Name: NeMo.Intf.31.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.lan - Name: NeMo.Intf.27\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.ULIntf - Name: NeMo.Intf.27.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.LLIntf - Name: NeMo.Intf.27.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.Query - Name: NeMo.Intf.27.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.lo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.lo - Name: NeMo.Intf.1\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.ULIntf - Name: NeMo.Intf.1.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.LLIntf - Name: NeMo.Intf.1.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.Query - Name: NeMo.Intf.1.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Addr - Name: NeMo.Intf.1.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Addr - Name: NeMo.Intf.1.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Route - Name: NeMo.Intf.1.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Route - Name: NeMo.Intf.1.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router - Name: NeMo.Intf.1.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n  - Status (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router.Option - Name: NeMo.Intf.1.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.ppp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data - Name: NeMo.Intf.22\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - ConnectionStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - MaxMRUSize (type: uint32)\n      Attributes: persistent\n  - PPPoESessionID (type: uint32)\n      Attributes: read_only\n  - PPPoEACName (type: string)\n  - PPPoEServiceName (type: string)\n  - RemoteIPAddress (type: string)\n      Attributes: read_only\n  - LocalIPAddress (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - DNSServers (type: string)\n      Attributes: read_only\n  - TransportType (type: string)\n      Attributes: read_only\n  - LCPEcho (type: uint32)\n      Attributes: persistent\n  - LCPEchoRetry (type: uint32)\n      Attributes: persistent\n  - IPCPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPLocalInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - IPv6CPRemoteInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - ConnectionTrigger (type: string)\n      Attributes: persistent\n      Validator: ['AlwaysOn', 'OnDemand', 'Manual']\n  - IdleDisconnectTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.ULIntf - Name: NeMo.Intf.22.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.LLIntf - Name: NeMo.Intf.22.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.Query - Name: NeMo.Intf.22.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Addr - Name: NeMo.Intf.22.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Addr - Name: NeMo.Intf.22.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Route - Name: NeMo.Intf.22.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Route - Name: NeMo.Intf.22.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.primdata.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/primdata\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.superguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.superlan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superlan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.veip0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0 - Name: NeMo.Intf.2\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - RegistrationID (type: string)\n      Validator: {'max': '10'}\n  - VeipPptpUni (type: bool)\n      Attributes: persistent\n  - OmciIsTmOwner (type: bool)\n      Attributes: persistent\n  - MaxBitRateSupported (type: int32)\n  - SignalRxPower (type: int32)\n      Attributes: read_only, volatile\n  - SignalTxPower (type: int32)\n      Attributes: read_only, volatile\n  - Temperature (type: int16)\n      Attributes: read_only, volatile\n  - Voltage (type: uint16)\n      Attributes: read_only, volatile\n  - Bias (type: uint32)\n      Attributes: read_only, volatile\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - EquipmentId (type: string)\n      Attributes: read_only\n      Validator: {'max': '20'}\n  - VendorId (type: string)\n      Attributes: read_only\n      Validator: {'max': '4'}\n  - VendorProductCode (type: uint16)\n      Attributes: read_only\n  - PonId (type: string)\n      Attributes: read_only\n      Validator: {'max': '7'}\n  - ONTSoftwareVersion0 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersion1 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersionActive (type: uint8)\n      Attributes: read_only\n  - ONUState (type: string)\n      Attributes: read_only\n  - DownstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - UpstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - DownstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - UpstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.ULIntf - Name: NeMo.Intf.2.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.LLIntf - Name: NeMo.Intf.2.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.Query - Name: NeMo.Intf.2.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Addr - Name: NeMo.Intf.2.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Addr - Name: NeMo.Intf.2.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Route - Name: NeMo.Intf.2.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Route - Name: NeMo.Intf.2.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.StatMon - Name: NeMo.Intf.2.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data - Name: NeMo.Intf.8\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.ULIntf - Name: NeMo.Intf.8.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.LLIntf - Name: NeMo.Intf.8.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.Query - Name: NeMo.Intf.8.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Addr - Name: NeMo.Intf.8.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Addr - Name: NeMo.Intf.8.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Route - Name: NeMo.Intf.8.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Route - Name: NeMo.Intf.8.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.QoS - Name: NeMo.Intf.8.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.StatMon - Name: NeMo.Intf.8.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi - Name: NeMo.Intf.9\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.ULIntf - Name: NeMo.Intf.9.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.LLIntf - Name: NeMo.Intf.9.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.Query - Name: NeMo.Intf.9.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Addr - Name: NeMo.Intf.9.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Addr - Name: NeMo.Intf.9.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Route - Name: NeMo.Intf.9.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Route - Name: NeMo.Intf.9.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.QoS - Name: NeMo.Intf.9.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.StatMon - Name: NeMo.Intf.9.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.voip - Name: NeMo.Intf.30\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.ULIntf - Name: NeMo.Intf.30.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.LLIntf - Name: NeMo.Intf.30.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.Query - Name: NeMo.Intf.30.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vpnc_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpnc_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vpns_default.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_default\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.vpns_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wifi0_bcm.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm - Name: NeMo.Intf.39\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ULIntf - Name: NeMo.Intf.39.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.LLIntf - Name: NeMo.Intf.39.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Query - Name: NeMo.Intf.39.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DFS - Name: NeMo.Intf.39.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DFS.Event - Name: NeMo.Intf.39.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults - Name: NeMo.Intf.39.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels - Name: NeMo.Intf.39.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.RadCaps - Name: NeMo.Intf.39.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt - Name: NeMo.Intf.39.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.TargetChanspec - Name: NeMo.Intf.39.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.39.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.BgDfs - Name: NeMo.Intf.39.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.Stats - Name: NeMo.Intf.39.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.Band - Name: NeMo.Intf.39.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ChannelMgt.ChannelChanges - Name: NeMo.Intf.39.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats - Name: NeMo.Intf.39.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmPacketsSent - Name: NeMo.Intf.39.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedSent - Name: NeMo.Intf.39.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmPacketsReceived - Name: NeMo.Intf.39.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedReceived - Name: NeMo.Intf.39.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmBytesSent - Name: NeMo.Intf.39.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedbytesSent - Name: NeMo.Intf.39.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmBytesReceived - Name: NeMo.Intf.39.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.39.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor - Name: NeMo.Intf.39.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.RssiEventing - Name: NeMo.Intf.39.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.39.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.39.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.EventCounter - Name: NeMo.Intf.39.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor - Name: NeMo.Intf.39.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.Event - Name: NeMo.Intf.39.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.FullStats - Name: NeMo.Intf.39.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.39.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor - Name: NeMo.Intf.39.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.Event - Name: NeMo.Intf.39.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.EventType - Name: NeMo.Intf.39.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.HealthMonitor.Config - Name: NeMo.Intf.39.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.TrafficMonitor - Name: NeMo.Intf.39.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.AirstatsMonitor - Name: NeMo.Intf.39.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.BackgroundScanner - Name: NeMo.Intf.39.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DriverConfig - Name: NeMo.Intf.39.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.MACConfig - Name: NeMo.Intf.39.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.DriverStatus - Name: NeMo.Intf.39.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanConfig - Name: NeMo.Intf.39.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanStats - Name: NeMo.Intf.39.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.ScanStats.ScanReason - Name: NeMo.Intf.39.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor - Name: NeMo.Intf.39.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.WlMsgLevel - Name: NeMo.Intf.39.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.DhdMsgLevel - Name: NeMo.Intf.39.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Trap - Name: NeMo.Intf.39.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.39.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.Logging - Name: NeMo.Intf.39.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.DhdMemUse - Name: NeMo.Intf.39.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.AirIQScanner - Name: NeMo.Intf.39.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_bcm.Vendor.HealthMonitor - Name: NeMo.Intf.39.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wifi0_quan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan - Name: NeMo.Intf.40\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ULIntf - Name: NeMo.Intf.40.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.LLIntf - Name: NeMo.Intf.40.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Query - Name: NeMo.Intf.40.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DFS - Name: NeMo.Intf.40.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DFS.Event - Name: NeMo.Intf.40.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults - Name: NeMo.Intf.40.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels - Name: NeMo.Intf.40.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.RadCaps - Name: NeMo.Intf.40.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt - Name: NeMo.Intf.40.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.TargetChanspec - Name: NeMo.Intf.40.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.40.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.BgDfs - Name: NeMo.Intf.40.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.Stats - Name: NeMo.Intf.40.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.Band - Name: NeMo.Intf.40.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ChannelMgt.ChannelChanges - Name: NeMo.Intf.40.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats - Name: NeMo.Intf.40.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmPacketsSent - Name: NeMo.Intf.40.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedSent - Name: NeMo.Intf.40.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmPacketsReceived - Name: NeMo.Intf.40.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedReceived - Name: NeMo.Intf.40.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmBytesSent - Name: NeMo.Intf.40.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedbytesSent - Name: NeMo.Intf.40.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmBytesReceived - Name: NeMo.Intf.40.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.40.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor - Name: NeMo.Intf.40.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.RssiEventing - Name: NeMo.Intf.40.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.40.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.40.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.EventCounter - Name: NeMo.Intf.40.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor - Name: NeMo.Intf.40.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.Event - Name: NeMo.Intf.40.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.FullStats - Name: NeMo.Intf.40.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.40.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor - Name: NeMo.Intf.40.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.Event - Name: NeMo.Intf.40.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.EventType - Name: NeMo.Intf.40.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.HealthMonitor.Config - Name: NeMo.Intf.40.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.TrafficMonitor - Name: NeMo.Intf.40.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.AirstatsMonitor - Name: NeMo.Intf.40.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.BackgroundScanner - Name: NeMo.Intf.40.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DriverConfig - Name: NeMo.Intf.40.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.MACConfig - Name: NeMo.Intf.40.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.DriverStatus - Name: NeMo.Intf.40.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanConfig - Name: NeMo.Intf.40.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanStats - Name: NeMo.Intf.40.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.ScanStats.ScanReason - Name: NeMo.Intf.40.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wifi0_quan.Vendor - Name: NeMo.Intf.40.Vendor\n == PARAMETERS:\n  - DFS_S_ReentryEnabled (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wl0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0 - Name: NeMo.Intf.41\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ULIntf - Name: NeMo.Intf.41.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.LLIntf - Name: NeMo.Intf.41.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Query - Name: NeMo.Intf.41.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IEEE80211r - Name: NeMo.Intf.41.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IEEE80211u - Name: NeMo.Intf.41.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Security - Name: NeMo.Intf.41.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.WPS - Name: NeMo.Intf.41.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering - Name: NeMo.Intf.41.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering.Entry - Name: NeMo.Intf.41.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MACFiltering.TempEntry - Name: NeMo.Intf.41.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ProbeFiltering - Name: NeMo.Intf.41.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ProbeFiltering.TempEntry - Name: NeMo.Intf.41.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.VendorIEs - Name: NeMo.Intf.41.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.VendorIEs.VendorIE - Name: NeMo.Intf.41.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.HotSpot2 - Name: NeMo.Intf.41.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociatedDevice - Name: NeMo.Intf.41.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.41.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociationCount - Name: NeMo.Intf.41.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.41.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.MgtStats - Name: NeMo.Intf.41.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ErrorToggleConfig - Name: NeMo.Intf.41.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.ErrorToggleStats - Name: NeMo.Intf.41.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.Neighbour - Name: NeMo.Intf.41.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.RssiEventing - Name: NeMo.Intf.41.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError - Name: NeMo.Intf.41.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError.GenericTests - Name: NeMo.Intf.41.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StaKickOnError.VendorTests - Name: NeMo.Intf.41.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.DriverConfig - Name: NeMo.Intf.41.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv4Addr - Name: NeMo.Intf.41.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv6Addr - Name: NeMo.Intf.41.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv4Route - Name: NeMo.Intf.41.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.IPv6Route - Name: NeMo.Intf.41.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wl0.StatMon - Name: NeMo.Intf.41.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wlguest2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2 - Name: NeMo.Intf.45\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ULIntf - Name: NeMo.Intf.45.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.LLIntf - Name: NeMo.Intf.45.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Query - Name: NeMo.Intf.45.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IEEE80211r - Name: NeMo.Intf.45.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IEEE80211u - Name: NeMo.Intf.45.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Security - Name: NeMo.Intf.45.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.WPS - Name: NeMo.Intf.45.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering - Name: NeMo.Intf.45.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering.Entry - Name: NeMo.Intf.45.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MACFiltering.TempEntry - Name: NeMo.Intf.45.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ProbeFiltering - Name: NeMo.Intf.45.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ProbeFiltering.TempEntry - Name: NeMo.Intf.45.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.VendorIEs - Name: NeMo.Intf.45.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.VendorIEs.VendorIE - Name: NeMo.Intf.45.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.HotSpot2 - Name: NeMo.Intf.45.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociatedDevice - Name: NeMo.Intf.45.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.45.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociationCount - Name: NeMo.Intf.45.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.45.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.MgtStats - Name: NeMo.Intf.45.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ErrorToggleConfig - Name: NeMo.Intf.45.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.ErrorToggleStats - Name: NeMo.Intf.45.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.Neighbour - Name: NeMo.Intf.45.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.RssiEventing - Name: NeMo.Intf.45.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError - Name: NeMo.Intf.45.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError.GenericTests - Name: NeMo.Intf.45.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StaKickOnError.VendorTests - Name: NeMo.Intf.45.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.DriverConfig - Name: NeMo.Intf.45.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv4Addr - Name: NeMo.Intf.45.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv6Addr - Name: NeMo.Intf.45.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv4Route - Name: NeMo.Intf.45.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.IPv6Route - Name: NeMo.Intf.45.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest2.StatMon - Name: NeMo.Intf.45.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wlguest5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5 - Name: NeMo.Intf.46\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ULIntf - Name: NeMo.Intf.46.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.LLIntf - Name: NeMo.Intf.46.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Query - Name: NeMo.Intf.46.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv4Addr - Name: NeMo.Intf.46.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv6Addr - Name: NeMo.Intf.46.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv4Route - Name: NeMo.Intf.46.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IPv6Route - Name: NeMo.Intf.46.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Vendor - Name: NeMo.Intf.46.Vendor\n == PARAMETERS:\n  - PNCheckEnabled (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IEEE80211r - Name: NeMo.Intf.46.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.IEEE80211u - Name: NeMo.Intf.46.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Security - Name: NeMo.Intf.46.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.WPS - Name: NeMo.Intf.46.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering - Name: NeMo.Intf.46.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering.Entry - Name: NeMo.Intf.46.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MACFiltering.TempEntry - Name: NeMo.Intf.46.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ProbeFiltering - Name: NeMo.Intf.46.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ProbeFiltering.TempEntry - Name: NeMo.Intf.46.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.VendorIEs - Name: NeMo.Intf.46.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.VendorIEs.VendorIE - Name: NeMo.Intf.46.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.HotSpot2 - Name: NeMo.Intf.46.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociatedDevice - Name: NeMo.Intf.46.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.46.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociationCount - Name: NeMo.Intf.46.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.46.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.MgtStats - Name: NeMo.Intf.46.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ErrorToggleConfig - Name: NeMo.Intf.46.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.ErrorToggleStats - Name: NeMo.Intf.46.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.Neighbour - Name: NeMo.Intf.46.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.RssiEventing - Name: NeMo.Intf.46.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError - Name: NeMo.Intf.46.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError.GenericTests - Name: NeMo.Intf.46.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StaKickOnError.VendorTests - Name: NeMo.Intf.46.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.DriverConfig - Name: NeMo.Intf.46.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.wlguest5.StatMon - Name: NeMo.Intf.46.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.Intf.wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan - Name: NeMo.Intf.32\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - PINCode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - DNSServers (type: string)\n  - IPRouter (type: string)\n  - LocalIPAddress (type: string)\n  - ConnectionStatus (type: string)\n      Validator: ['NotPresent', 'Unconfigured', 'Connecting', 'Connected', 'PendingDisconnect', 'Disconnecting', 'Disconnected']\n  - SignalStrength (type: uint8)\n  - Technology (type: string)\n      Validator: ['none', 'gprs', 'edge', 'umts', 'hsdpa', 'hsupa', 'hspa', 'lte']\n  - Manufacturer (type: string)\n  - Model (type: string)\n  - PinType (type: string)\n  - PinRetryCount (type: int32)\n  - PukRetryCount (type: int32)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6AcceptDAD (type: uint32)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n  - void configureConnection((string apn), (string username), (string Password))\n  - string getPinType()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.ULIntf - Name: NeMo.Intf.32.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.LLIntf - Name: NeMo.Intf.32.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.Query - Name: NeMo.Intf.32.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Addr - Name: NeMo.Intf.32.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Addr - Name: NeMo.Intf.32.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Route - Name: NeMo.Intf.32.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv4', 'OSPF', 'IPCP', 'RIP', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Route - Name: NeMo.Intf.32.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['System', 'DHCPv6', 'OSPF', 'RA', 'RIPng', 'Static']\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router - Name: NeMo.Intf.32.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n  - Status (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router.Option - Name: NeMo.Intf.32.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NeMo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NetDev.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NetDev\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/NetMaster.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n  - DomainName (type: string)\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable), (bool DHCPAuthoritative))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable), (bool DHCPAuthoritative))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n  - void setHostName(string Key, string HostName, (uint8 IpVersion))\n  - void removeHostName(string Key)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.HostName - Name: NetMaster.LAN.Bridge.HostName\n == PARAMETERS:\n  - Name (type: string)\n  - IPVersion (type: uint8)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Authoritative (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite - Name: NetMaster.IPv4.DSLite\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - TTLEnable (type: bool)\n  - InterfaceSettingNumberOfEntries (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite.InterfaceSetting - Name: NetMaster.IPv4.DSLite.InterfaceSetting\n == PARAMETERS:\n  - EndpointName (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ObjectMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ObjectMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/OopsTracker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OopsTracker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/OrangeDynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OrangeDynDNS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/OrangeRemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/OrangeServices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == PARAMETERS:\n  - Body (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/PPP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PPP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Pass.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Pass\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/PasswordRecovery.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Phonebook.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/PnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/PowerManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant setElements(list elements)\n  - variant getElements((list elements))\n  - void removeElements((list elements))\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant setExpressions(list expressions)\n  - variant getExpressions((list expressions))\n  - void removeExpressions((list expressions))\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Probe.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - LicenseStatus (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Process.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"error\": 13,\n    \"description\": \"Permission denied\",\n    \"info\": \"Process\"\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ProcessMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ProcessMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Profiles.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/QueueManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"QueueManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/RemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/RouterAdvertisement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"RouterAdvertisement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SAHPairing.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SSLEServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSLEServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SSW.FeatureConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: SSW.FeatureConfig - Name: SSW.FeatureConfig\n == FUNCTIONS:\n  - void startEventing((string MAC))\n  - void stopEventing((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul - Name: SSW.FeatureConfig.MultiBackhaul\n == FUNCTIONS:\n  - void debugMultiBackhaul()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules - Name: SSW.FeatureConfig.MultiBackhaul.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules.Station - Name: SSW.FeatureConfig.MultiBackhaul.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config - Name: SSW.FeatureConfig.MultiBackhaul.Config\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n  - PrioTargets (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config.Station - Name: SSW.FeatureConfig.MultiBackhaul.Config.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving - Name: SSW.FeatureConfig.EnergySaving\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - FeaturesRunning (type: string)\n      Attributes: read_only\n  - MaxStatsLength (type: uint32)\n      Attributes: persistent\n  - RssiThreshold (type: int32)\n      Attributes: persistent\n  - DeltaThreshold (type: uint8)\n      Attributes: persistent\n  - AirtimeThreshold (type: uint32)\n      Attributes: persistent\n  - ModesEnabled (type: string)\n      Attributes: persistent\n  - AntennaConfiguration (type: string)\n      Attributes: persistent\n      Validator: ['Divided', 'Minimum']\n == FUNCTIONS:\n  - void getStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving.Stats - Name: SSW.FeatureConfig.EnergySaving.Stats\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrActivations (type: uint32)\n      Attributes: read_only\n  - LastUpTime (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery - Name: SSW.FeatureConfig.BackhaulRecovery\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - AttemptTimeout (type: uint32)\n      Attributes: persistent\n  - SlaveCertsFolder (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery.Stats - Name: SSW.FeatureConfig.BackhaulRecovery.Stats\n == PARAMETERS:\n  - NrTrigger (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AddOnMode - Name: SSW.FeatureConfig.AddOnMode\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Invalid', 'Disabled', 'Enabled', 'Active', 'ActiveNotConnected']\n  - LastStateChange (type: date_time)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - AddonMACAddress (type: string)\n      Attributes: read_only\n  - ActiveTimeout (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1'}\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.LongStats - Name: SSW.FeatureConfig.LongStats\n == PARAMETERS:\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getLongHistoryStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AssocMonitor - Name: SSW.FeatureConfig.AssocMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - MaxNbFailuresToSend (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getRecentAssocFailures()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SSW.Steering.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: SSW.Steering - Name: SSW.Steering\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Up']\n == FUNCTIONS:\n  - void getNodeBackhaul((string MAC))\n  - void getUplinkInfo((string MAC))\n  - void getRoamInfo((string MAC))\n  - stationInfo getStationStats((string MAC))\n  - void getAllStationsCompactInfo()\n  - void getStationAssocLog((string MAC))\n  - list getAllStations((string ap))\n  - stationsStandards getAllStationsStandards((string ap))\n  - bool deleteStationInfo((string MAC))\n  - void setModeConfig((string mode), (string targetBroker))\n  - void getTopologyScoreInfo()\n\n=======================================================================\nOBJECT: SSW.Steering.MasterConfig - Name: SSW.Steering.MasterConfig\n == PARAMETERS:\n  - SyncEnableField (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList - Name: SSW.Steering.ExceptionList\n == PARAMETERS:\n  - MaxNumberOfExceptions (type: uint32)\n      Attributes: persistent\n  - DeployExceptions (type: bool)\n      Attributes: persistent\n  - VideoAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n  - SlaveAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n == FUNCTIONS:\n  - void createGmapAutoException(string query, (string target), (string type), (bool persistent), (string key))\n  - void deleteGmapAutoExceptionByKey(string key)\n  - void deleteGmapAutoExceptionByQuery(string query)\n  - void createException((string MAC), (uint8 mask), (string target), (string type))\n  - void deleteException((string MAC), (uint8 mask))\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList.Station - Name: SSW.Steering.ExceptionList.Station\n == PARAMETERS:\n  - MAC (type: string)\n      Attributes: persistent\n  - Mask (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '6'}\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Force', 'ForceNoSteer']\n  - Target (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade - Name: SSW.Steering.QoSUpgrade\n == PARAMETERS:\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['ftos', 'wmm-mark']\n == FUNCTIONS:\n  - void createRule(string mac, (uint8 tid))\n  - void deleteRule(string mac)\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules - Name: SSW.Steering.QoSUpgrade.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - TID (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '7'}\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules.Station - Name: SSW.Steering.QoSUpgrade.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - IPv4Address (type: string)\n  - IPv6Address (type: string)\n\n=======================================================================\nOBJECT: SSW.Steering.Policy - Name: SSW.Steering.Policy\n == PARAMETERS:\n  - BandSteeringStatus (type: bool)\n      Attributes: read_only\n  - ClientSteeringStatus (type: bool)\n      Attributes: read_only\n  - NrHandovers (type: uint32)\n      Attributes: read_only\n  - NrHandbacks (type: uint32)\n      Attributes: read_only\n  - NrFalseHandovers (type: uint32)\n      Attributes: read_only\n  - NrTriggers (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n  - NrFail (type: uint32)\n      Attributes: read_only\n  - NrAbort (type: uint32)\n      Attributes: read_only\n  - NrFastFail (type: uint32)\n      Attributes: read_only\n  - AvgReconnectTime (type: uint32)\n      Attributes: read_only\n  - AvgSteeringTime (type: uint32)\n      Attributes: read_only\n  - NrReconnectMeasurements (type: uint32)\n      Attributes: read_only\n  - AvgFailReconnectTime (type: uint32)\n      Attributes: read_only\n  - MaxSteerReached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice - Name: SSW.Steering.ExternalDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice.Station - Name: SSW.Steering.ExternalDevice.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SSW.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSW\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Scheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ServiceInvocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool reloadAclScript()\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Port (type: string)\n      Attributes: persistent\n  - Duration (type: uint32)\n      Attributes: persistent\n  - ActivationDate (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand.Server - Name: ServiceInvocation.OnDemand.Server\n == PARAMETERS:\n  - CommonName (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SpeedTest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - DNSCacheTimer (type: int32)\n      Attributes: persistent\n  - OffloadEnable (type: bool)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/SrvInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SrvInterface\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/StorageService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Time.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/ToD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ToD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/TopologyDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/UPnP-IGD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/UPnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UPnP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/URLMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .URLMon - Name: .URLMon\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ModeCurrent (type: string)\n      Attributes: read_only\n  - ModeAfterReboot (type: string)\n      Attributes: persistent\n      Validator: ['Internal']\n  - PatternNum (type: uint32)\n      Attributes: read_only\n  - PatternLength (type: uint32)\n      Attributes: read_only\n  - BackupHostBroadcast (type: bool)\n      Attributes: persistent\n  - NumberOfHost (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool getRedirectDecision(httpconnprop_t connproperties, (string redirect_url), (string decision_mode))\n  - list classify(string url)\n  - list categories()\n  - void getDevices((list devices))\n  - void enableDevice(string mac, bool enable)\n  - void deleteDevice(string mac)\n  - void getListMode(string mac, (string mode))\n  - void setListMode(string mac, string mode)\n  - void getList(string mac, (list patterns))\n  - void setList(string mac, (list patterns), (bool clean))\n  - void copyList(string mac_src, string mac_dst)\n  - void getModeCurrent((string mode))\n  - void getModeAfterReboot((string mode))\n  - void setModeAfterReboot(string mode)\n  - void getPatternLimits((uint32 patternNum), (uint32 patternLength))\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.Host.List - Name: URLMon.Host.List\n == PARAMETERS:\n  - Pattern (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/USBHosts.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/Upgrade.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Upgrade\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/UplinkMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/UserInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/UserManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/VPN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VPN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/VoWifi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/VoiceActivation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceActivation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/VoiceService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WLanScheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WOL.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WOLProxy.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WOLProxy\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WatchDog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WatchDog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WebuiupgradeService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WiFiBCM.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiBCM\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/WiFiQUAN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiQUAN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 5/_ALL SERVICES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: . - Name: .\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n=======================================================================\nOBJECT: .DECT - Name: .DECT\n == PARAMETERS:\n  - PairingStatus (type: string)\n      Attributes: read_only\n      Validator: ['Idle', 'Pairing']\n == FUNCTIONS:\n  - string getPairingStatus()\n  - void startPairing()\n  - void stopPairing()\n  - void reset((bool reboot))\n  - string getRFPI()\n  - string getStandardVersion()\n  - string getPIN()\n  - void setPIN((string pin))\n  - string getVersion()\n  - string getName()\n  - bool getRadioState()\n  - void setRadioState((bool state))\n  - int8 getRSSI((string name), (bool synchronous))\n  - void setHandsetDebugMode((bool enable))\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: DECT.Repeater.Device - Name: DECT.Repeater.Device\n == PARAMETERS:\n  - Id (type: uint16)\n      Attributes: read_only, persistent\n  - SoftwareVersion (type: string)\n      Attributes: read_only, persistent\n  - HardwareVersion (type: string)\n      Attributes: read_only, persistent\n  - IPUI (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '11'}\n  - Active (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void deregister()\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool reloadAclScript()\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Port (type: string)\n      Attributes: persistent\n  - Duration (type: uint32)\n      Attributes: persistent\n  - ActivationDate (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand.Server - Name: ServiceInvocation.OnDemand.Server\n == PARAMETERS:\n  - CommonName (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant setElements(list elements)\n  - variant getElements((list elements))\n  - void removeElements((list elements))\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant setExpressions(list expressions)\n  - variant getExpressions((list expressions))\n  - void removeExpressions((list expressions))\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Config (type: string)\n      Attributes: persistent\n  - AdvancedLevel (type: string)\n      Attributes: persistent\n  - AdvancedIPv6Level (type: string)\n      Attributes: persistent\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - PCPServerMaxlifetime (type: uint32)\n      Attributes: persistent\n  - PCPServerMinlifetime (type: uint32)\n      Attributes: persistent\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.Stats - Name: Firewall.PCP.Stats\n == PARAMETERS:\n  - SuccessPCPMAPCount (type: uint32)\n      Attributes: read_only\n  - FailurePCPMAPCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: .URLMon - Name: .URLMon\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ModeCurrent (type: string)\n      Attributes: read_only\n  - ModeAfterReboot (type: string)\n      Attributes: persistent\n      Validator: ['Internal']\n  - PatternNum (type: uint32)\n      Attributes: read_only\n  - PatternLength (type: uint32)\n      Attributes: read_only\n  - BackupHostBroadcast (type: bool)\n      Attributes: persistent\n  - NumberOfHost (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool getRedirectDecision(httpconnprop_t connproperties, (string redirect_url), (string decision_mode))\n  - list classify(string url)\n  - list categories()\n  - void getDevices((list devices))\n  - void enableDevice(string mac, bool enable)\n  - void deleteDevice(string mac)\n  - void getListMode(string mac, (string mode))\n  - void setListMode(string mac, string mode)\n  - void getList(string mac, (list patterns))\n  - void setList(string mac, (list patterns), (bool clean))\n  - void copyList(string mac_src, string mac_dst)\n  - void getModeCurrent((string mode))\n  - void getModeAfterReboot((string mode))\n  - void setModeAfterReboot(string mode)\n  - void getPatternLimits((uint32 patternNum), (uint32 patternLength))\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.Host.List - Name: URLMon.Host.List\n == PARAMETERS:\n  - Pattern (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - DNSCacheTimer (type: int32)\n      Attributes: persistent\n  - OffloadEnable (type: bool)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == PARAMETERS:\n  - Body (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - LicenseStatus (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n  - DomainName (type: string)\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable), (bool DHCPAuthoritative))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable), (bool DHCPAuthoritative))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n  - void setHostName(string Key, string HostName, (uint8 IpVersion))\n  - void removeHostName(string Key)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.HostName - Name: NetMaster.LAN.Bridge.HostName\n == PARAMETERS:\n  - Name (type: string)\n  - IPVersion (type: uint8)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Authoritative (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite - Name: NetMaster.IPv4.DSLite\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - TTLEnable (type: bool)\n  - InterfaceSettingNumberOfEntries (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4.DSLite.InterfaceSetting - Name: NetMaster.IPv4.DSLite.InterfaceSetting\n == PARAMETERS:\n  - EndpointName (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv6.Server.Pool - Name: DHCPv6.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - SNTPServers (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DHCPv6.Server.Pool.Prefix - Name: DHCPv6.Server.Pool.Prefix\n == PARAMETERS:\n  - Prefix (type: string)\n  - PrefixLength (type: int32)\n      Validator: {'max': '128'}\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - FlushCacheEnable (type: bool)\n      Attributes: persistent\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - RebootSinceLastUpgrade (type: uint32)\n      Attributes: read_only, persistent\n  - RebootMaxDuration (type: uint32)\n      Attributes: persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported', 'Oops']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '19'}\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility - Name: NMC.ServiceEligibility\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.Criteria - Name: NMC.ServiceEligibility.Criteria\n == PARAMETERS:\n  - Value (type: bool)\n  - LastUpdate (type: date_time)\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.CgnOption - Name: NMC.ServiceEligibility.CgnOption\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility.CgnOption.SentOption - Name: NMC.ServiceEligibility.CgnOption.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Intfname (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/_PROCESSES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: Process.sysbus - Name: Process.1\n\n=======================================================================\nOBJECT: Process.sysbus_objectmonitor - Name: Process.2\n\n=======================================================================\nOBJECT: Process.sysbus_watchdog - Name: Process.3\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client_led - Name: Process.4\n\n=======================================================================\nOBJECT: Process.sysbus_usermngt - Name: Process.5\n\n=======================================================================\nOBJECT: Process.sysbus_faultmonitorplugin - Name: Process.6\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6_plugin - Name: Process.7\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-core - Name: Process.8\n\n=======================================================================\nOBJECT: Process.sysbus_netdev - Name: Process.9\n\n=======================================================================\nOBJECT: Process.sysbus_netmaster - Name: Process.10\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_core - Name: Process.11\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client - Name: Process.12\n\n=======================================================================\nOBJECT: Process.sysbus_www-backend - Name: Process.13\n\n=======================================================================\nOBJECT: Process.sysbus_deviceinfo_plugin - Name: Process.14\n\n=======================================================================\nOBJECT: Process.sysbus_firewall - Name: Process.15\n\n=======================================================================\nOBJECT: Process.sysbus_kmcd - Name: Process.16\n\n=======================================================================\nOBJECT: Process.sysbus_bcmeth - Name: Process.17\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-clients - Name: Process.18\n\n=======================================================================\nOBJECT: Process.sysbus_raplugin - Name: Process.19\n\n=======================================================================\nOBJECT: Process.sysbus_wld_quan - Name: Process.20\n\n=======================================================================\nOBJECT: Process.sysbus_dhcp - Name: Process.21\n\n=======================================================================\nOBJECT: Process.sysbus_dnsplugin - Name: Process.22\n\n=======================================================================\nOBJECT: Process.sysbus_pppd_plugin - Name: Process.23\n\n=======================================================================\nOBJECT: Process.sysbus_upmonitor - Name: Process.24\n\n=======================================================================\nOBJECT: Process.sysbus_gpon-plugin - Name: Process.25\n\n=======================================================================\nOBJECT: Process.sysbus_gpon-link-monitor - Name: Process.26\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6d_plugin - Name: Process.27\n\n=======================================================================\nOBJECT: Process.sysbus_dslite - Name: Process.28\n\n=======================================================================\nOBJECT: Process.sysbus_ipsec - Name: Process.29\n\n=======================================================================\nOBJECT: Process.sysbus_conntrack_plugin - Name: Process.30\n\n=======================================================================\nOBJECT: Process.sysbus_flowstats - Name: Process.31\n\n=======================================================================\nOBJECT: Process.sysbus_maculan - Name: Process.32\n\n=======================================================================\nOBJECT: Process.sysbus_vowifi - Name: Process.33\n\n=======================================================================\nOBJECT: Process.sysbus_ssle-server - Name: Process.34\n\n=======================================================================\nOBJECT: Process.sysbus_devicemngt - Name: Process.35\n\n=======================================================================\nOBJECT: Process.sysbus_wld_bcm - Name: Process.36\n\n=======================================================================\nOBJECT: Process.sysbus_dnssd - Name: Process.37\n\n=======================================================================\nOBJECT: Process.sysbus_llmnr - Name: Process.38\n\n=======================================================================\nOBJECT: Process.sysbus_pnp - Name: Process.39\n\n=======================================================================\nOBJECT: Process.sysbus_vpn - Name: Process.40\n\n=======================================================================\nOBJECT: Process.sysbus_gmap - Name: Process.41\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_self - Name: Process.42\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_eth - Name: Process.43\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hgw - Name: Process.44\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_devtype - Name: Process.45\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dns - Name: Process.46\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_upnp - Name: Process.47\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_wan - Name: Process.48\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_usb - Name: Process.49\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mdns - Name: Process.50\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_events - Name: Process.51\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_useragents - Name: Process.52\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcav - Name: Process.53\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcdevolo - Name: Process.54\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_db - Name: Process.55\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_owner - Name: Process.56\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_lltd - Name: Process.57\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ssw - Name: Process.58\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_voice - Name: Process.59\n\n=======================================================================\nOBJECT: Process.sysbus_manifest - Name: Process.60\n\n=======================================================================\nOBJECT: Process.sysbus_passwordrecovery - Name: Process.61\n\n=======================================================================\nOBJECT: Process.sysbus_wlan-manager - Name: Process.62\n\n=======================================================================\nOBJECT: Process.sysbus_eventmanager - Name: Process.63\n\n=======================================================================\nOBJECT: Process.sysbus_captiveportal - Name: Process.64\n\n=======================================================================\nOBJECT: Process.sysbus_urlmon - Name: Process.65\n\n=======================================================================\nOBJECT: Process.sysbus_dyndns_plugin - Name: Process.66\n\n=======================================================================\nOBJECT: Process.sysbus_time-plugin - Name: Process.67\n\n=======================================================================\nOBJECT: Process.sysbus_netmon - Name: Process.68\n\n=======================================================================\nOBJECT: Process.sysbus_httpd - Name: Process.69\n\n=======================================================================\nOBJECT: Process.sysbus_phonebook_plugin - Name: Process.70\n\n=======================================================================\nOBJECT: Process.sysbus_voipapp - Name: Process.71\n\n=======================================================================\nOBJECT: Process.sysbus_tr181 - Name: Process.72\n\n=======================================================================\nOBJECT: Process.sysbus_voipaad_plugin - Name: Process.73\n\n=======================================================================\nOBJECT: Process.sysbus_scheduler-plugin - Name: Process.74\n\n=======================================================================\nOBJECT: Process.sysbus_usbhosts - Name: Process.75\n\n=======================================================================\nOBJECT: Process.sysbus_dlnadms - Name: Process.76\n\n=======================================================================\nOBJECT: Process.sysbus_tod-plugin - Name: Process.77\n\n=======================================================================\nOBJECT: Process.sysbus_wakeonlan-plugin - Name: Process.78\n\n=======================================================================\nOBJECT: Process.sysbus_wlanscheduler-plugin - Name: Process.79\n\n=======================================================================\nOBJECT: Process.sysbus_cwmp-plugin - Name: Process.80\n\n=======================================================================\nOBJECT: Process.sysbus_launcher - Name: Process.81\n\n=======================================================================\nOBJECT: Process.sysbus_lxcmanager - Name: Process.82\n\n=======================================================================\nOBJECT: Process.sysbus_mqttbroker - Name: Process.83\n\n=======================================================================\nOBJECT: Process.sysbus_remoteaccess - Name: Process.84\n\n=======================================================================\nOBJECT: Process.sysbus_sahpairing - Name: Process.85\n\n=======================================================================\nOBJECT: Process.sysbus_speedtest - Name: Process.86\n\n=======================================================================\nOBJECT: Process.sysbus_srvinterface - Name: Process.87\n\n=======================================================================\nOBJECT: Process.sysbus_ssw - Name: Process.88\n\n=======================================================================\nOBJECT: Process.sysbus_upgraded_plugin - Name: Process.89\n\n=======================================================================\nOBJECT: Process.sysbus_storage - Name: Process.90\n\n=======================================================================\nOBJECT: Process.sysbus_pass - Name: Process.91\n\n=======================================================================\nOBJECT: Process.sysbus_bcm_fxs - Name: Process.92\n\n=======================================================================\nOBJECT: Process.sysbus_webuiupgrade_plugin - Name: Process.93\n\n=======================================================================\nOBJECT: Process.sysbus_account-remoteaccess - Name: Process.94\n\n=======================================================================\nOBJECT: Process.sysbus_accountmanager - Name: Process.95\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_client - Name: Process.96\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_plugin - Name: Process.97\n\n=======================================================================\nOBJECT: Process.sysbus_autodiag - Name: Process.98\n\n=======================================================================\nOBJECT: Process.sysbus_bulkdata - Name: Process.99\n\n=======================================================================\nOBJECT: Process.sysbus_ConMon - Name: Process.100\n\n=======================================================================\nOBJECT: Process.sysbus_cpu_monitor - Name: Process.101\n\n=======================================================================\nOBJECT: Process.sysbus_domino_plugin - Name: Process.102\n\n=======================================================================\nOBJECT: Process.sysbus_dummyplugin - Name: Process.103\n\n=======================================================================\nOBJECT: Process.sysbus_genlog - Name: Process.104\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_orange - Name: Process.105\n\n=======================================================================\nOBJECT: Process.sysbus_history - Name: Process.106\n\n=======================================================================\nOBJECT: Process.sysbus_homelan - Name: Process.107\n\n=======================================================================\nOBJECT: Process.sysbus_ippingdiagnostics - Name: Process.108\n\n=======================================================================\nOBJECT: Process.sysbus_mss - Name: Process.109\n\n=======================================================================\nOBJECT: Process.sysbus_invoc - Name: Process.110\n\n=======================================================================\nOBJECT: Process.sysbus_oopstracker - Name: Process.111\n\n=======================================================================\nOBJECT: Process.sysbus_orange-dyndns_plugin - Name: Process.112\n\n=======================================================================\nOBJECT: Process.sysbus_orange-invoc - Name: Process.113\n\n=======================================================================\nOBJECT: Process.sysbus_powermanagement - Name: Process.114\n\n=======================================================================\nOBJECT: Process.sysbus_probe_plugin - Name: Process.115\n\n=======================================================================\nOBJECT: Process.sysbus_probe_client - Name: Process.116\n\n=======================================================================\nOBJECT: Process.sysbus_processmonitor - Name: Process.117\n\n=======================================================================\nOBJECT: Process.sysbus_dect - Name: Process.118\n\n=======================================================================\nOBJECT: Process.sysbus_topologydiagnostics - Name: Process.119\n\n=======================================================================\nOBJECT: Process.sysbus_upnp-igd_plugin - Name: Process.120\n\n=======================================================================\nOBJECT: Process.sysbus_upnpdiscd_plugin - Name: Process.121\n\n=======================================================================\nOBJECT: Process.sysbus_WOLProxy - Name: Process.122\n\n=======================================================================\nOBJECT: Process.sysbus_wt_plugin - Name: Process.123\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - PCPServerMaxlifetime (type: uint32)\n      Attributes: persistent\n  - PCPServerMinlifetime (type: uint32)\n      Attributes: persistent\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: DECT.Repeater - Name: DECT.Repeater\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Init', 'Ready']\n == FUNCTIONS:\n  - void getRepeaters()\n  - void removeAllRepeaters()\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.IPv4 - Name: NetMaster.IPv4\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: URLMon.Config - Name: URLMon.Config\n == PARAMETERS:\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - RedirectURL (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: URLMon.Host - Name: URLMon.Host\n == PARAMETERS:\n  - Detected (type: bool)\n      Attributes: read_only\n  - Persistent (type: bool)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only, persistent\n  - ParentalControlActive (type: bool)\n      Attributes: persistent\n  - BlockedCategories (type: string)\n      Attributes: persistent\n  - WhiteBlackListMode (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'WhiteList', 'BlackList']\n  - NumberOfList (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: URLMon.UrlClassifier - Name: URLMon.UrlClassifier\n == PARAMETERS:\n  - PrimaryServer (type: string)\n      Attributes: persistent\n  - SecondaryServer (type: string)\n      Attributes: persistent\n  - MaxPendingHttpRequests (type: uint32)\n      Attributes: persistent\n  - MaxCacheEntries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Port (type: string)\n      Attributes: persistent\n  - Duration (type: uint32)\n      Attributes: persistent\n  - ActivationDate (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - bool activate()\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: ServiceInvocation.ACLConfigFile - Name: ServiceInvocation.ACLConfigFile\n == PARAMETERS:\n  - Version (type: string)\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - RebootSinceLastUpgrade (type: uint32)\n      Attributes: read_only, persistent\n  - RebootMaxDuration (type: uint32)\n      Attributes: persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.ServiceEligibility - Name: NMC.ServiceEligibility\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/eventmanager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 5/sah.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SGFI-fr-G06.R05.C05_16\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/AccountManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"AccountManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Audiphone.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Audiphone\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/AutoDiag.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/BCMPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BCMPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/BulkData.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BulkData\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/CPUStats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CPUStats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/CaptivePortal.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CaptivePortal\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ConMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ConMon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Conntrack.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Conntrack\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DHCPv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DHCPv6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DHCPv6Client.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DHCPv6Client\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DLNA.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DLNA\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DNSSD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DNSSD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DSPPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DeviceInfo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DeviceLookup.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceLookup\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DeviceManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DeviceManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Devices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Domino.Airbox.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino/Airbox\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Domino.Cellular.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface - Name: Domino.Cellular.Interface\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - SupportedAccessTechnologies (type: string)\n      Attributes: read_only\n  - PreferredAccessTechnology (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'LTE', 'WCDMA']\n  - CurrentAccessTechnology (type: string)\n      Attributes: read_only, persistent\n  - RSSI (type: int32)\n      Attributes: read_only\n  - PINCheck (type: string)\n      Attributes: persistent\n  - PIN (type: string)\n      Attributes: persistent\n  - X_ORANGE-COM_PINTry (type: uint32)\n      Attributes: persistent\n  - InterferenceMode (type: string)\n      Attributes: persistent\n      Validator: ['NONE', '3G2100', '4GB7', '3G2100+4GB7']\n  - Upstream (type: bool)\n == FUNCTIONS:\n  - bool setTechnologyMode(string mode, string interference)\n  - bool setGlobalPin(string pin)\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface.USIM - Name: Domino.Cellular.Interface.USIM\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['', 'None', 'Available', 'Valid', 'Blocked', 'Error', 'New']\n  - ICCID (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool authorizeICCID((bool enable))\n\n=======================================================================\nOBJECT: Domino.Cellular.AccessPoint - Name: Domino.Cellular.AccessPoint\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n == FUNCTIONS:\n  - bool setAPSettings(string apn, string username, string password)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Domino.Intf.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Intf.ConnectionContext - Name: Domino.Intf.ConnectionContext\n == FUNCTIONS:\n  - bool setAdminPassword((string password))\n  - bool resetAdminPassword((string currpwd), (string newpwd))\n\n=======================================================================\nOBJECT: Domino.Intf.SIM - Name: Domino.Intf.SIM\n == FUNCTIONS:\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Domino.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DummyPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DummyPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/DynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/FaultMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"FaultMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Firewall.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Flowstats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Flowstats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/GenLog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"GenLog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Gpon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Gpon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/HTTPService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/History.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/HomeLan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/IPPingDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPPingDiagnostics\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/IPsec.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPsec\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Invocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Invocation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/IoTService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/KMCD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"KMCD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/LEDs.LED.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: LEDs.LED - Name: LEDs.LED\n == PARAMETERS:\n  - Brightness (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Path (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/LLMNR.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LLMNR\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/LXCManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LXCManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Launcher.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Launcher\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Locations.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/MQTTBroker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTBroker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/MQTTMessages.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTMessages\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/MSS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MSS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Maculan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ManagementServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ManagementServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Manifests.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NMC.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ETH0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0 - Name: NeMo.Intf.3\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.ULIntf - Name: NeMo.Intf.3.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.LLIntf - Name: NeMo.Intf.3.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.Query - Name: NeMo.Intf.3.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Addr - Name: NeMo.Intf.3.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Addr - Name: NeMo.Intf.3.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Route - Name: NeMo.Intf.3.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Route - Name: NeMo.Intf.3.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.StatMon - Name: NeMo.Intf.3.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ETH1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1 - Name: NeMo.Intf.4\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.ULIntf - Name: NeMo.Intf.4.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.LLIntf - Name: NeMo.Intf.4.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.Query - Name: NeMo.Intf.4.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Addr - Name: NeMo.Intf.4.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Addr - Name: NeMo.Intf.4.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Route - Name: NeMo.Intf.4.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Route - Name: NeMo.Intf.4.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.StatMon - Name: NeMo.Intf.4.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ETH2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2 - Name: NeMo.Intf.5\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.ULIntf - Name: NeMo.Intf.5.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.LLIntf - Name: NeMo.Intf.5.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.Query - Name: NeMo.Intf.5.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Addr - Name: NeMo.Intf.5.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Addr - Name: NeMo.Intf.5.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Route - Name: NeMo.Intf.5.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Route - Name: NeMo.Intf.5.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.StatMon - Name: NeMo.Intf.5.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ETH3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3 - Name: NeMo.Intf.6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.ULIntf - Name: NeMo.Intf.6.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.LLIntf - Name: NeMo.Intf.6.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.Query - Name: NeMo.Intf.6.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Addr - Name: NeMo.Intf.6.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Addr - Name: NeMo.Intf.6.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Route - Name: NeMo.Intf.6.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Route - Name: NeMo.Intf.6.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.StatMon - Name: NeMo.Intf.6.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ETH4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4 - Name: NeMo.Intf.7\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.ULIntf - Name: NeMo.Intf.7.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.LLIntf - Name: NeMo.Intf.7.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.Query - Name: NeMo.Intf.7.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Addr - Name: NeMo.Intf.7.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Addr - Name: NeMo.Intf.7.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Route - Name: NeMo.Intf.7.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Route - Name: NeMo.Intf.7.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.StatMon - Name: NeMo.Intf.7.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.brguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest - Name: NeMo.Intf.36\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.ULIntf - Name: NeMo.Intf.36.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.LLIntf - Name: NeMo.Intf.36.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.Query - Name: NeMo.Intf.36.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Addr - Name: NeMo.Intf.36.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Addr - Name: NeMo.Intf.36.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Route - Name: NeMo.Intf.36.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Route - Name: NeMo.Intf.36.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router - Name: NeMo.Intf.36.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router.Option - Name: NeMo.Intf.36.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge - Name: NeMo.Intf.8\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.ULIntf - Name: NeMo.Intf.8.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.LLIntf - Name: NeMo.Intf.8.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.Query - Name: NeMo.Intf.8.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Addr - Name: NeMo.Intf.8.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Addr - Name: NeMo.Intf.8.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Route - Name: NeMo.Intf.8.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Route - Name: NeMo.Intf.8.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router - Name: NeMo.Intf.8.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router.Option - Name: NeMo.Intf.8.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge_ctr.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_ctr\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge_gviptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_gviptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge_gvmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti - Name: NeMo.Intf.18\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.ULIntf - Name: NeMo.Intf.18.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.LLIntf - Name: NeMo.Intf.18.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.Query - Name: NeMo.Intf.18.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Addr - Name: NeMo.Intf.18.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Addr - Name: NeMo.Intf.18.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Route - Name: NeMo.Intf.18.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Route - Name: NeMo.Intf.18.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router - Name: NeMo.Intf.18.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router.Option - Name: NeMo.Intf.18.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge_viptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_viptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.bridge_vmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti - Name: NeMo.Intf.11\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.ULIntf - Name: NeMo.Intf.11.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.LLIntf - Name: NeMo.Intf.11.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.Query - Name: NeMo.Intf.11.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Addr - Name: NeMo.Intf.11.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Addr - Name: NeMo.Intf.11.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Route - Name: NeMo.Intf.11.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Route - Name: NeMo.Intf.11.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router - Name: NeMo.Intf.11.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router.Option - Name: NeMo.Intf.11.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.container.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/container\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.data - Name: NeMo.Intf.30\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.data.ULIntf - Name: NeMo.Intf.30.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.LLIntf - Name: NeMo.Intf.30.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.Query - Name: NeMo.Intf.30.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.dhcp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data - Name: NeMo.Intf.26\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ULIntf - Name: NeMo.Intf.26.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.LLIntf - Name: NeMo.Intf.26.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.Query - Name: NeMo.Intf.26.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.SentOption - Name: NeMo.Intf.26.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ReqOption - Name: NeMo.Intf.26.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.dhcp_iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_iptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.dhcp_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.dhcp_wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan - Name: NeMo.Intf.38\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ULIntf - Name: NeMo.Intf.38.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.LLIntf - Name: NeMo.Intf.38.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.Query - Name: NeMo.Intf.38.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.SentOption - Name: NeMo.Intf.38.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ReqOption - Name: NeMo.Intf.38.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.dhcpv6_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data - Name: NeMo.Intf.27\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Validator: ['Idle', 'Init', 'Selecting', 'Requesting', 'Bound', 'BoundCheck', 'Release', 'Decline', 'Renew', 'Rebind', 'Release', 'InformationRequest', 'InformationBound', 'Error']\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: uint8)\n      Attributes: persistent\n  - DUID (type: string)\n      Attributes: persistent\n  - RequestAddresses (type: bool)\n      Attributes: persistent\n  - RequestPrefixes (type: bool)\n      Attributes: persistent\n  - RapidCommit (type: bool)\n      Attributes: persistent\n  - IAID (type: uint32)\n      Attributes: persistent\n  - SuggestedT1 (type: int32)\n      Attributes: persistent\n  - SuggestedT2 (type: int32)\n      Attributes: persistent\n  - SupportedOptions (type: string)\n      Attributes: persistent\n  - RequestedOptions (type: string)\n      Attributes: persistent\n  - Renew (type: bool)\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInfo (type: string)\n      Attributes: persistent\n  - RetryOnFailedAuth (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ULIntf - Name: NeMo.Intf.27.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.LLIntf - Name: NeMo.Intf.27.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.Query - Name: NeMo.Intf.27.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.SentOption - Name: NeMo.Intf.27.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint16)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ReceivedOption - Name: NeMo.Intf.27.ReceivedOption\n == PARAMETERS:\n  - Tag (type: uint16)\n  - Alias (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.guest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.guest - Name: NeMo.Intf.37\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.ULIntf - Name: NeMo.Intf.37.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.LLIntf - Name: NeMo.Intf.37.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.Query - Name: NeMo.Intf.37.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.gvlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data - Name: NeMo.Intf.16\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.ULIntf - Name: NeMo.Intf.16.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.LLIntf - Name: NeMo.Intf.16.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.Query - Name: NeMo.Intf.16.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Addr - Name: NeMo.Intf.16.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Addr - Name: NeMo.Intf.16.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Route - Name: NeMo.Intf.16.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Route - Name: NeMo.Intf.16.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.QoS - Name: NeMo.Intf.16.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.StatMon - Name: NeMo.Intf.16.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.gvlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.gvlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.gvlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi - Name: NeMo.Intf.17\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.ULIntf - Name: NeMo.Intf.17.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.LLIntf - Name: NeMo.Intf.17.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.Query - Name: NeMo.Intf.17.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Addr - Name: NeMo.Intf.17.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Addr - Name: NeMo.Intf.17.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Route - Name: NeMo.Intf.17.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Route - Name: NeMo.Intf.17.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.QoS - Name: NeMo.Intf.17.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.StatMon - Name: NeMo.Intf.17.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.gvlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv - Name: NeMo.Intf.32\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.ULIntf - Name: NeMo.Intf.32.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.LLIntf - Name: NeMo.Intf.32.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.Query - Name: NeMo.Intf.32.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.lan - Name: NeMo.Intf.28\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.ULIntf - Name: NeMo.Intf.28.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.LLIntf - Name: NeMo.Intf.28.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.Query - Name: NeMo.Intf.28.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.lo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.lo - Name: NeMo.Intf.1\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.ULIntf - Name: NeMo.Intf.1.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.LLIntf - Name: NeMo.Intf.1.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.Query - Name: NeMo.Intf.1.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Addr - Name: NeMo.Intf.1.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Addr - Name: NeMo.Intf.1.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Route - Name: NeMo.Intf.1.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Route - Name: NeMo.Intf.1.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router - Name: NeMo.Intf.1.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router.Option - Name: NeMo.Intf.1.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.ppp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data - Name: NeMo.Intf.23\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - ConnectionStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - MaxMRUSize (type: uint32)\n      Attributes: persistent\n  - PPPoESessionID (type: uint32)\n      Attributes: read_only\n  - PPPoEACName (type: string)\n  - PPPoEServiceName (type: string)\n  - RemoteIPAddress (type: string)\n      Attributes: read_only\n  - LocalIPAddress (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - DNSServers (type: string)\n      Attributes: read_only\n  - TransportType (type: string)\n      Attributes: read_only\n  - LCPEcho (type: uint32)\n      Attributes: persistent\n  - LCPEchoRetry (type: uint32)\n      Attributes: persistent\n  - IPCPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPLocalInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - IPv6CPRemoteInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - ConnectionTrigger (type: string)\n      Attributes: persistent\n      Validator: ['AlwaysOn', 'OnDemand', 'Manual']\n  - IdleDisconnectTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.ULIntf - Name: NeMo.Intf.23.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.LLIntf - Name: NeMo.Intf.23.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.Query - Name: NeMo.Intf.23.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Addr - Name: NeMo.Intf.23.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Addr - Name: NeMo.Intf.23.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Route - Name: NeMo.Intf.23.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Route - Name: NeMo.Intf.23.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.primdata.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/primdata\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.rad2g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0 - Name: NeMo.Intf.39\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ULIntf - Name: NeMo.Intf.39.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.LLIntf - Name: NeMo.Intf.39.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Query - Name: NeMo.Intf.39.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS - Name: NeMo.Intf.39.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS.Event - Name: NeMo.Intf.39.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults - Name: NeMo.Intf.39.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.39.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.RadCaps - Name: NeMo.Intf.39.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt - Name: NeMo.Intf.39.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.39.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.39.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.BgDfs - Name: NeMo.Intf.39.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Stats - Name: NeMo.Intf.39.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Band - Name: NeMo.Intf.39.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.39.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats - Name: NeMo.Intf.39.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsSent - Name: NeMo.Intf.39.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedSent - Name: NeMo.Intf.39.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.39.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedReceived - Name: NeMo.Intf.39.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesSent - Name: NeMo.Intf.39.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.39.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesReceived - Name: NeMo.Intf.39.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.39.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor - Name: NeMo.Intf.39.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.39.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.39.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.39.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.EventCounter - Name: NeMo.Intf.39.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor - Name: NeMo.Intf.39.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.Event - Name: NeMo.Intf.39.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.39.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.39.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor - Name: NeMo.Intf.39.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Event - Name: NeMo.Intf.39.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.EventType - Name: NeMo.Intf.39.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Config - Name: NeMo.Intf.39.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.TrafficMonitor - Name: NeMo.Intf.39.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.BackgroundScanner - Name: NeMo.Intf.39.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverConfig - Name: NeMo.Intf.39.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.MACConfig - Name: NeMo.Intf.39.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverStatus - Name: NeMo.Intf.39.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanConfig - Name: NeMo.Intf.39.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats - Name: NeMo.Intf.39.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats.ScanReason - Name: NeMo.Intf.39.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Sensing - Name: NeMo.Intf.39.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Sensing.CSIClient - Name: NeMo.Intf.39.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.MonitorConfig - Name: NeMo.Intf.39.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor - Name: NeMo.Intf.39.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.WlMsgLevel - Name: NeMo.Intf.39.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.39.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap - Name: NeMo.Intf.39.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.39.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Logging - Name: NeMo.Intf.39.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMemUse - Name: NeMo.Intf.39.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.AirIQScanner - Name: NeMo.Intf.39.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.HealthMonitor - Name: NeMo.Intf.39.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.rad5g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0 - Name: NeMo.Intf.40\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ULIntf - Name: NeMo.Intf.40.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.LLIntf - Name: NeMo.Intf.40.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Query - Name: NeMo.Intf.40.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS - Name: NeMo.Intf.40.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS.Event - Name: NeMo.Intf.40.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults - Name: NeMo.Intf.40.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.40.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.RadCaps - Name: NeMo.Intf.40.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt - Name: NeMo.Intf.40.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.40.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.40.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.BgDfs - Name: NeMo.Intf.40.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Stats - Name: NeMo.Intf.40.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Band - Name: NeMo.Intf.40.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.40.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats - Name: NeMo.Intf.40.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsSent - Name: NeMo.Intf.40.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedSent - Name: NeMo.Intf.40.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.40.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedReceived - Name: NeMo.Intf.40.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesSent - Name: NeMo.Intf.40.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.40.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesReceived - Name: NeMo.Intf.40.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.40.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor - Name: NeMo.Intf.40.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.40.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.40.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.40.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.EventCounter - Name: NeMo.Intf.40.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor - Name: NeMo.Intf.40.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.Event - Name: NeMo.Intf.40.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.40.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.40.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor - Name: NeMo.Intf.40.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Event - Name: NeMo.Intf.40.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.EventType - Name: NeMo.Intf.40.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Config - Name: NeMo.Intf.40.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.TrafficMonitor - Name: NeMo.Intf.40.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.BackgroundScanner - Name: NeMo.Intf.40.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverConfig - Name: NeMo.Intf.40.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.MACConfig - Name: NeMo.Intf.40.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverStatus - Name: NeMo.Intf.40.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanConfig - Name: NeMo.Intf.40.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats - Name: NeMo.Intf.40.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats.ScanReason - Name: NeMo.Intf.40.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Sensing - Name: NeMo.Intf.40.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Sensing.CSIClient - Name: NeMo.Intf.40.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.MonitorConfig - Name: NeMo.Intf.40.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor - Name: NeMo.Intf.40.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.WlMsgLevel - Name: NeMo.Intf.40.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.40.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap - Name: NeMo.Intf.40.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.40.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Logging - Name: NeMo.Intf.40.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMemUse - Name: NeMo.Intf.40.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.AirIQScanner - Name: NeMo.Intf.40.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.HealthMonitor - Name: NeMo.Intf.40.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.rad6g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0 - Name: NeMo.Intf.41\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ULIntf - Name: NeMo.Intf.41.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.LLIntf - Name: NeMo.Intf.41.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Query - Name: NeMo.Intf.41.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS - Name: NeMo.Intf.41.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS.Event - Name: NeMo.Intf.41.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults - Name: NeMo.Intf.41.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.41.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.RadCaps - Name: NeMo.Intf.41.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt - Name: NeMo.Intf.41.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.41.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.41.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.BgDfs - Name: NeMo.Intf.41.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Stats - Name: NeMo.Intf.41.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Band - Name: NeMo.Intf.41.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.41.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats - Name: NeMo.Intf.41.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsSent - Name: NeMo.Intf.41.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedSent - Name: NeMo.Intf.41.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.41.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedReceived - Name: NeMo.Intf.41.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesSent - Name: NeMo.Intf.41.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.41.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesReceived - Name: NeMo.Intf.41.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.41.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor - Name: NeMo.Intf.41.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.41.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.41.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.41.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.EventCounter - Name: NeMo.Intf.41.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor - Name: NeMo.Intf.41.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.Event - Name: NeMo.Intf.41.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.41.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.41.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor - Name: NeMo.Intf.41.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Event - Name: NeMo.Intf.41.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.EventType - Name: NeMo.Intf.41.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Config - Name: NeMo.Intf.41.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.TrafficMonitor - Name: NeMo.Intf.41.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.BackgroundScanner - Name: NeMo.Intf.41.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverConfig - Name: NeMo.Intf.41.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.MACConfig - Name: NeMo.Intf.41.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverStatus - Name: NeMo.Intf.41.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanConfig - Name: NeMo.Intf.41.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats - Name: NeMo.Intf.41.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats.ScanReason - Name: NeMo.Intf.41.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Sensing - Name: NeMo.Intf.41.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Sensing.CSIClient - Name: NeMo.Intf.41.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.MonitorConfig - Name: NeMo.Intf.41.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor - Name: NeMo.Intf.41.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.WlMsgLevel - Name: NeMo.Intf.41.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.41.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap - Name: NeMo.Intf.41.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.41.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Logging - Name: NeMo.Intf.41.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMemUse - Name: NeMo.Intf.41.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.AirIQScanner - Name: NeMo.Intf.41.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.HealthMonitor - Name: NeMo.Intf.41.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.superguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.superlan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superlan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap2g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0 - Name: NeMo.Intf.71\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ULIntf - Name: NeMo.Intf.71.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.LLIntf - Name: NeMo.Intf.71.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Query - Name: NeMo.Intf.71.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211r - Name: NeMo.Intf.71.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211u - Name: NeMo.Intf.71.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Security - Name: NeMo.Intf.71.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.WPS - Name: NeMo.Intf.71.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering - Name: NeMo.Intf.71.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.Entry - Name: NeMo.Intf.71.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.71.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering - Name: NeMo.Intf.71.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.71.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs - Name: NeMo.Intf.71.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.71.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.HotSpot2 - Name: NeMo.Intf.71.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice - Name: NeMo.Intf.71.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.71.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount - Name: NeMo.Intf.71.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.71.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MgtStats - Name: NeMo.Intf.71.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleConfig - Name: NeMo.Intf.71.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleStats - Name: NeMo.Intf.71.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Neighbour - Name: NeMo.Intf.71.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.RssiEventing - Name: NeMo.Intf.71.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError - Name: NeMo.Intf.71.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.71.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.71.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.DriverConfig - Name: NeMo.Intf.71.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaHistogram - Name: NeMo.Intf.71.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ApMonitorConfig - Name: NeMo.Intf.71.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Addr - Name: NeMo.Intf.71.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Addr - Name: NeMo.Intf.71.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Route - Name: NeMo.Intf.71.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Route - Name: NeMo.Intf.71.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StatMon - Name: NeMo.Intf.71.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap2g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0 - Name: NeMo.Intf.42\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ULIntf - Name: NeMo.Intf.42.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.LLIntf - Name: NeMo.Intf.42.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Query - Name: NeMo.Intf.42.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211r - Name: NeMo.Intf.42.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211u - Name: NeMo.Intf.42.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Security - Name: NeMo.Intf.42.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.WPS - Name: NeMo.Intf.42.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering - Name: NeMo.Intf.42.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.Entry - Name: NeMo.Intf.42.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.42.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering - Name: NeMo.Intf.42.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.42.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs - Name: NeMo.Intf.42.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.42.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.HotSpot2 - Name: NeMo.Intf.42.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice - Name: NeMo.Intf.42.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.42.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount - Name: NeMo.Intf.42.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.42.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MgtStats - Name: NeMo.Intf.42.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleConfig - Name: NeMo.Intf.42.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleStats - Name: NeMo.Intf.42.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Neighbour - Name: NeMo.Intf.42.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.RssiEventing - Name: NeMo.Intf.42.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError - Name: NeMo.Intf.42.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.42.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.42.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.DriverConfig - Name: NeMo.Intf.42.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaHistogram - Name: NeMo.Intf.42.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ApMonitorConfig - Name: NeMo.Intf.42.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Addr - Name: NeMo.Intf.42.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Addr - Name: NeMo.Intf.42.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Route - Name: NeMo.Intf.42.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Route - Name: NeMo.Intf.42.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StatMon - Name: NeMo.Intf.42.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap2g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1 - Name: NeMo.Intf.43\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ULIntf - Name: NeMo.Intf.43.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.LLIntf - Name: NeMo.Intf.43.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Query - Name: NeMo.Intf.43.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211r - Name: NeMo.Intf.43.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211u - Name: NeMo.Intf.43.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Security - Name: NeMo.Intf.43.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.WPS - Name: NeMo.Intf.43.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering - Name: NeMo.Intf.43.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.Entry - Name: NeMo.Intf.43.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.43.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering - Name: NeMo.Intf.43.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.43.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs - Name: NeMo.Intf.43.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.43.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.HotSpot2 - Name: NeMo.Intf.43.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice - Name: NeMo.Intf.43.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.43.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount - Name: NeMo.Intf.43.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.43.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MgtStats - Name: NeMo.Intf.43.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleConfig - Name: NeMo.Intf.43.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleStats - Name: NeMo.Intf.43.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Neighbour - Name: NeMo.Intf.43.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.RssiEventing - Name: NeMo.Intf.43.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError - Name: NeMo.Intf.43.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.43.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.43.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.DriverConfig - Name: NeMo.Intf.43.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaHistogram - Name: NeMo.Intf.43.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ApMonitorConfig - Name: NeMo.Intf.43.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Addr - Name: NeMo.Intf.43.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Addr - Name: NeMo.Intf.43.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Route - Name: NeMo.Intf.43.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Route - Name: NeMo.Intf.43.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StatMon - Name: NeMo.Intf.43.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap5g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0 - Name: NeMo.Intf.72\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ULIntf - Name: NeMo.Intf.72.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.LLIntf - Name: NeMo.Intf.72.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Query - Name: NeMo.Intf.72.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211r - Name: NeMo.Intf.72.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211u - Name: NeMo.Intf.72.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Security - Name: NeMo.Intf.72.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.WPS - Name: NeMo.Intf.72.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering - Name: NeMo.Intf.72.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.Entry - Name: NeMo.Intf.72.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.72.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering - Name: NeMo.Intf.72.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.72.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs - Name: NeMo.Intf.72.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.72.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.HotSpot2 - Name: NeMo.Intf.72.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice - Name: NeMo.Intf.72.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.72.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount - Name: NeMo.Intf.72.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.72.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MgtStats - Name: NeMo.Intf.72.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleConfig - Name: NeMo.Intf.72.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleStats - Name: NeMo.Intf.72.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Neighbour - Name: NeMo.Intf.72.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.RssiEventing - Name: NeMo.Intf.72.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError - Name: NeMo.Intf.72.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.72.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.72.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.DriverConfig - Name: NeMo.Intf.72.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaHistogram - Name: NeMo.Intf.72.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ApMonitorConfig - Name: NeMo.Intf.72.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Addr - Name: NeMo.Intf.72.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Addr - Name: NeMo.Intf.72.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Route - Name: NeMo.Intf.72.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Route - Name: NeMo.Intf.72.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StatMon - Name: NeMo.Intf.72.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap5g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0 - Name: NeMo.Intf.44\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ULIntf - Name: NeMo.Intf.44.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.LLIntf - Name: NeMo.Intf.44.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Query - Name: NeMo.Intf.44.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211r - Name: NeMo.Intf.44.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211u - Name: NeMo.Intf.44.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Security - Name: NeMo.Intf.44.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.WPS - Name: NeMo.Intf.44.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering - Name: NeMo.Intf.44.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.Entry - Name: NeMo.Intf.44.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.44.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering - Name: NeMo.Intf.44.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.44.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs - Name: NeMo.Intf.44.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.44.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.HotSpot2 - Name: NeMo.Intf.44.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice - Name: NeMo.Intf.44.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.44.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount - Name: NeMo.Intf.44.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.44.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MgtStats - Name: NeMo.Intf.44.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleConfig - Name: NeMo.Intf.44.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleStats - Name: NeMo.Intf.44.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Neighbour - Name: NeMo.Intf.44.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.RssiEventing - Name: NeMo.Intf.44.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError - Name: NeMo.Intf.44.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.44.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.44.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.DriverConfig - Name: NeMo.Intf.44.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaHistogram - Name: NeMo.Intf.44.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ApMonitorConfig - Name: NeMo.Intf.44.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Addr - Name: NeMo.Intf.44.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Addr - Name: NeMo.Intf.44.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Route - Name: NeMo.Intf.44.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Route - Name: NeMo.Intf.44.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StatMon - Name: NeMo.Intf.44.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap5g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1 - Name: NeMo.Intf.45\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ULIntf - Name: NeMo.Intf.45.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.LLIntf - Name: NeMo.Intf.45.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Query - Name: NeMo.Intf.45.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211r - Name: NeMo.Intf.45.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211u - Name: NeMo.Intf.45.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Security - Name: NeMo.Intf.45.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.WPS - Name: NeMo.Intf.45.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering - Name: NeMo.Intf.45.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.Entry - Name: NeMo.Intf.45.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.45.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering - Name: NeMo.Intf.45.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.45.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs - Name: NeMo.Intf.45.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.45.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.HotSpot2 - Name: NeMo.Intf.45.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice - Name: NeMo.Intf.45.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.45.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount - Name: NeMo.Intf.45.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.45.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MgtStats - Name: NeMo.Intf.45.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleConfig - Name: NeMo.Intf.45.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleStats - Name: NeMo.Intf.45.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Neighbour - Name: NeMo.Intf.45.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.RssiEventing - Name: NeMo.Intf.45.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError - Name: NeMo.Intf.45.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.45.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.45.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.DriverConfig - Name: NeMo.Intf.45.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaHistogram - Name: NeMo.Intf.45.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ApMonitorConfig - Name: NeMo.Intf.45.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Addr - Name: NeMo.Intf.45.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Addr - Name: NeMo.Intf.45.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Route - Name: NeMo.Intf.45.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Route - Name: NeMo.Intf.45.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StatMon - Name: NeMo.Intf.45.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vap6g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0 - Name: NeMo.Intf.46\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ULIntf - Name: NeMo.Intf.46.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.LLIntf - Name: NeMo.Intf.46.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Query - Name: NeMo.Intf.46.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211r - Name: NeMo.Intf.46.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211u - Name: NeMo.Intf.46.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Security - Name: NeMo.Intf.46.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.WPS - Name: NeMo.Intf.46.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering - Name: NeMo.Intf.46.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.Entry - Name: NeMo.Intf.46.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.46.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering - Name: NeMo.Intf.46.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.46.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs - Name: NeMo.Intf.46.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.46.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.HotSpot2 - Name: NeMo.Intf.46.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice - Name: NeMo.Intf.46.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.46.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount - Name: NeMo.Intf.46.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.46.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MgtStats - Name: NeMo.Intf.46.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleConfig - Name: NeMo.Intf.46.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleStats - Name: NeMo.Intf.46.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Neighbour - Name: NeMo.Intf.46.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.RssiEventing - Name: NeMo.Intf.46.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError - Name: NeMo.Intf.46.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.46.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.46.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.DriverConfig - Name: NeMo.Intf.46.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaHistogram - Name: NeMo.Intf.46.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ApMonitorConfig - Name: NeMo.Intf.46.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Addr - Name: NeMo.Intf.46.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Addr - Name: NeMo.Intf.46.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Route - Name: NeMo.Intf.46.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Route - Name: NeMo.Intf.46.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StatMon - Name: NeMo.Intf.46.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.veip0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0 - Name: NeMo.Intf.2\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - RegistrationID (type: string)\n      Validator: {'max': '36'}\n  - RegistrationIDIsInHexFormat (type: bool)\n  - VeipPptpUni (type: bool)\n      Attributes: persistent\n  - MaxBitRateSupported (type: int32)\n  - SignalRxPower (type: int32)\n      Attributes: read_only, volatile\n  - SignalTxPower (type: int32)\n      Attributes: read_only, volatile\n  - Temperature (type: int16)\n      Attributes: read_only, volatile\n  - Voltage (type: uint16)\n      Attributes: read_only, volatile\n  - Bias (type: uint32)\n      Attributes: read_only, volatile\n  - PonMode (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'GPON', 'XGS-PON']\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - EquipmentId (type: string)\n      Attributes: read_only\n      Validator: {'max': '20'}\n  - VendorId (type: string)\n      Attributes: read_only\n      Validator: {'max': '4'}\n  - VendorProductCode (type: uint16)\n      Attributes: read_only\n  - ONTSoftwareVersion0 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersion1 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersionActive (type: uint8)\n      Attributes: read_only\n  - LowerOpticalThreshold (type: int32)\n      Attributes: read_only\n  - UpperOpticalThreshold (type: int32)\n      Attributes: read_only\n  - LowerTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - UpperTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Normal', 'Custom']\n  - CustomVendorID (type: string)\n      Attributes: persistent\n      Validator: {'max': '4'}\n  - CustomEquipmentID (type: string)\n      Attributes: persistent\n      Validator: {'max': '20'}\n  - VLANs (type: string)\n      Attributes: read_only\n      Validator: {'max': '128'}\n  - RogueOnu (type: bool)\n      Attributes: read_only\n  - RogueOnuCount (type: uint32)\n      Attributes: read_only\n  - RogueOnuLastOccurence (type: date_time)\n      Attributes: read_only\n  - OnuState (type: string)\n      Attributes: read_only\n  - OnuId (type: uint16)\n      Attributes: read_only\n  - PonId (type: string)\n      Attributes: read_only\n      Validator: {'max': '7'}\n  - DownstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - UpstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - DownstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - UpstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.ULIntf - Name: NeMo.Intf.2.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.LLIntf - Name: NeMo.Intf.2.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.Query - Name: NeMo.Intf.2.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Addr - Name: NeMo.Intf.2.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Addr - Name: NeMo.Intf.2.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Route - Name: NeMo.Intf.2.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Route - Name: NeMo.Intf.2.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.StatMon - Name: NeMo.Intf.2.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data - Name: NeMo.Intf.9\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.ULIntf - Name: NeMo.Intf.9.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.LLIntf - Name: NeMo.Intf.9.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.Query - Name: NeMo.Intf.9.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Addr - Name: NeMo.Intf.9.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Addr - Name: NeMo.Intf.9.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Route - Name: NeMo.Intf.9.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Route - Name: NeMo.Intf.9.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.QoS - Name: NeMo.Intf.9.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.StatMon - Name: NeMo.Intf.9.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi - Name: NeMo.Intf.10\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.ULIntf - Name: NeMo.Intf.10.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.LLIntf - Name: NeMo.Intf.10.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.Query - Name: NeMo.Intf.10.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Addr - Name: NeMo.Intf.10.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Addr - Name: NeMo.Intf.10.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Route - Name: NeMo.Intf.10.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Route - Name: NeMo.Intf.10.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.QoS - Name: NeMo.Intf.10.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.StatMon - Name: NeMo.Intf.10.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.voip - Name: NeMo.Intf.31\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.ULIntf - Name: NeMo.Intf.31.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.LLIntf - Name: NeMo.Intf.31.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.Query - Name: NeMo.Intf.31.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vpnc_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpnc_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vpns_default.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_default\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.vpns_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds2g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds2g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds5g0priv1_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wds6g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.Intf.wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan - Name: NeMo.Intf.33\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - PINCode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - DNSServers (type: string)\n  - IPRouter (type: string)\n  - LocalIPAddress (type: string)\n  - ConnectionStatus (type: string)\n      Validator: ['NotPresent', 'Unconfigured', 'Connecting', 'Connected', 'PendingDisconnect', 'Disconnecting', 'Disconnected']\n  - SignalStrength (type: uint8)\n  - Technology (type: string)\n      Validator: ['none', 'gprs', 'edge', 'umts', 'hsdpa', 'hsupa', 'hspa', 'lte']\n  - Manufacturer (type: string)\n  - Model (type: string)\n  - PinType (type: string)\n  - PinRetryCount (type: int32)\n  - PukRetryCount (type: int32)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n  - void configureConnection((string apn), (string username), (string Password))\n  - string getPinType()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.ULIntf - Name: NeMo.Intf.33.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.LLIntf - Name: NeMo.Intf.33.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.Query - Name: NeMo.Intf.33.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Addr - Name: NeMo.Intf.33.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Addr - Name: NeMo.Intf.33.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Route - Name: NeMo.Intf.33.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Route - Name: NeMo.Intf.33.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router - Name: NeMo.Intf.33.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router.Option - Name: NeMo.Intf.33.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NeMo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NetDev.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NetDev\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/NetMaster.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/OUI.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OUI\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ObjectMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ObjectMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/OopsTracker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OopsTracker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/OrangeDynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OrangeDynDNS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/OrangeRemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/OrangeServices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/PPP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PPP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Pass.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Pass\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/PasswordRecovery.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Phonebook.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/PnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/PowerManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Probe.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Process.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"error\": 13,\n    \"description\": \"Permission denied\",\n    \"info\": \"Process\"\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ProcessMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ProcessMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Profiles.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/QueueManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"QueueManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/RemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/RouterAdvertisement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"RouterAdvertisement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SAHPairing.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SSLEServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSLEServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SSW.FeatureConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: SSW.FeatureConfig - Name: SSW.FeatureConfig\n == FUNCTIONS:\n  - void startEventing((string MAC))\n  - void stopEventing((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul - Name: SSW.FeatureConfig.MultiBackhaul\n == PARAMETERS:\n  - SteeringEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void debugMultiBackhaul()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules - Name: SSW.FeatureConfig.MultiBackhaul.Rules\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Score', 'Gmap']\n  - Query (type: string)\n      Attributes: persistent\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules.Station - Name: SSW.FeatureConfig.MultiBackhaul.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n  - RuleName (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config - Name: SSW.FeatureConfig.MultiBackhaul.Config\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n  - PrioTargets (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config.Station - Name: SSW.FeatureConfig.MultiBackhaul.Config.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n  - RuleName (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving - Name: SSW.FeatureConfig.EnergySaving\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - FeaturesRunning (type: string)\n      Attributes: read_only\n  - MaxStatsLength (type: uint32)\n      Attributes: persistent\n  - RssiThreshold (type: int32)\n      Attributes: persistent\n  - DeltaThreshold (type: uint8)\n      Attributes: persistent\n  - AirtimeThreshold (type: uint32)\n      Attributes: persistent\n  - EnableThreshold (type: uint32)\n      Attributes: persistent\n  - ModesEnabled (type: string)\n      Attributes: persistent\n  - AntennaConfiguration (type: string)\n      Attributes: persistent\n      Validator: ['Divided', 'Minimum']\n == FUNCTIONS:\n  - void getStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving.Stats - Name: SSW.FeatureConfig.EnergySaving.Stats\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrActivations (type: uint32)\n      Attributes: read_only\n  - LastUpTime (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery - Name: SSW.FeatureConfig.BackhaulRecovery\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ProvisioningEnable (type: bool)\n      Attributes: persistent\n  - AttemptTimeout (type: uint32)\n      Attributes: persistent\n  - SlaveCertsFolder (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void provisionMAC((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery.Stats - Name: SSW.FeatureConfig.BackhaulRecovery.Stats\n == PARAMETERS:\n  - NrTrigger (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AddOnMode - Name: SSW.FeatureConfig.AddOnMode\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Invalid', 'Disabled', 'Enabled', 'Active', 'ActiveNotConnected']\n  - LastStateChange (type: date_time)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - AddonMACAddress (type: string)\n      Attributes: read_only\n  - ActiveTimeout (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1'}\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.LongStats - Name: SSW.FeatureConfig.LongStats\n == PARAMETERS:\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getLongHistoryStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.NodeModel - Name: SSW.FeatureConfig.NodeModel\n == PARAMETERS:\n  - HistogramCycleInterval (type: uint32)\n      Attributes: persistent\n  - SendTopologyEvent (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AutoPairing - Name: SSW.FeatureConfig.AutoPairing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RSSIThreshold (type: int32)\n      Attributes: persistent\n  - IEEE80211kRequestTimeout (type: uint32)\n      Attributes: persistent\n  - PairingTimeout (type: uint32)\n      Attributes: persistent\n  - MonitoringTimeout (type: uint32)\n      Attributes: persistent\n  - VendorIEData (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void startAutoPairing(string MAC, uint8 channel)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AutoPairing.Stats - Name: SSW.FeatureConfig.AutoPairing.Stats\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NrAttempts (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n  - IsSuccess (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.SlaveScan - Name: SSW.FeatureConfig.SlaveScan\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SSW.Steering.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: SSW.Steering - Name: SSW.Steering\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Up']\n == FUNCTIONS:\n  - void getNodeBackhaul((string MAC))\n  - void getUplinkInfo((string MAC))\n  - void getRoamInfo((string MAC))\n  - stationInfo getStationStats((string MAC))\n  - void getAllStationsCompactInfo()\n  - void getStationAssocLog((string MAC))\n  - list getAllStations((string ap))\n  - stationsStandards getAllStationsStandards((string ap))\n  - bool deleteStationInfo((string MAC))\n  - void setModeConfig((string mode), (string targetBroker))\n  - void getTopologyScoreInfo()\n\n=======================================================================\nOBJECT: SSW.Steering.MasterConfig - Name: SSW.Steering.MasterConfig\n == PARAMETERS:\n  - SyncEnableField (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList - Name: SSW.Steering.ExceptionList\n == PARAMETERS:\n  - MaxNumberOfExceptions (type: uint32)\n      Attributes: persistent\n  - DeployExceptions (type: bool)\n      Attributes: persistent\n  - VideoAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n  - SlaveAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n == FUNCTIONS:\n  - void createGmapAutoException(string query, (string target), (string type), (bool persistent), (string key))\n  - void deleteGmapAutoExceptionByKey(string key)\n  - void deleteGmapAutoExceptionByQuery(string query)\n  - void createException((string MAC), (uint8 mask), (string target), (string type))\n  - void deleteException((string MAC), (uint8 mask))\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList.Station - Name: SSW.Steering.ExceptionList.Station\n == PARAMETERS:\n  - MAC (type: string)\n      Attributes: persistent\n  - Mask (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '6'}\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Force', 'ForceNoSteer']\n  - Target (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade - Name: SSW.Steering.QoSUpgrade\n == PARAMETERS:\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['ftos', 'wmm-mark']\n == FUNCTIONS:\n  - void createRule(string mac, (uint8 tid))\n  - void deleteRule(string mac)\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules - Name: SSW.Steering.QoSUpgrade.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - TID (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '7'}\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules.Station - Name: SSW.Steering.QoSUpgrade.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - IPv4Address (type: string)\n  - IPv6Address (type: string)\n\n=======================================================================\nOBJECT: SSW.Steering.Policy - Name: SSW.Steering.Policy\n == PARAMETERS:\n  - BandSteeringStatus (type: bool)\n      Attributes: read_only\n  - ClientSteeringStatus (type: bool)\n      Attributes: read_only\n  - NrHandovers (type: uint32)\n      Attributes: read_only\n  - NrHandbacks (type: uint32)\n      Attributes: read_only\n  - NrFalseHandovers (type: uint32)\n      Attributes: read_only\n  - NrTriggers (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n  - NrFail (type: uint32)\n      Attributes: read_only\n  - NrAbort (type: uint32)\n      Attributes: read_only\n  - NrFastFail (type: uint32)\n      Attributes: read_only\n  - AvgReconnectTime (type: uint32)\n      Attributes: read_only\n  - AvgSteeringTime (type: uint32)\n      Attributes: read_only\n  - NrReconnectMeasurements (type: uint32)\n      Attributes: read_only\n  - AvgFailReconnectTime (type: uint32)\n      Attributes: read_only\n  - MaxSteerReached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice - Name: SSW.Steering.ExternalDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice.Station - Name: SSW.Steering.ExternalDevice.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SSW.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSW\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SambaService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Scheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Screen.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setAnonymousDisplay(string name)\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ServiceInvocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SpeedTest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - MaxRetriesPerServer (type: uint8)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/SrvInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SrvInterface\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/StorageService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Time.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/ToD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ToD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/TopologyDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - JSONUploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/UDPEchoConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UDPEchoConfig\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/UPnP-IGD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/UPnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UPnP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/USBHosts.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/Upgrade.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Upgrade\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/UserInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/UserManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/VPN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VPN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/VoWifi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoWifi\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/VoiceActivation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceActivation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/VoiceService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WLanScheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WOL.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WOLProxy.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WOLProxy\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WatchDog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WatchDog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WebuiupgradeService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - ReleaseNotesPubkey (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - UpgradeOnly (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/WiFiBCM.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiBCM\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6/_ALL MODULES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: . - Name: .\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setAnonymousDisplay(string name)\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - MaxRetriesPerServer (type: uint8)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - ReleaseNotesPubkey (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - UpgradeOnly (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - JSONUploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: .RuleEngine - Name: .RuleEngine\n == PARAMETERS:\n  - Initialized (type: bool)\n      Attributes: read_only\n  - CurrentMode (type: string)\n      Attributes: read_only\n  - MQTTMessageServer (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - string addConnector(string type, (string connectorId), (variant data))\n  - bool removeRule(uint32 index, (string scenarioName))\n  - bool removeAllRules()\n  - bool enableRule(uint32 index, (bool enable))\n  - bool runRule(uint32 index, (string scenarioName))\n  - void setMode(string modeId, string name, (list rules))\n  - list getModes()\n  - void removeMode(string modeId)\n  - void setCurrentMode(string modeId)\n  - void modesAddRule((list modeId), uint32 index)\n  - void modesRemoveRule((list modeId), uint32 index)\n  - int addScenario((string scenarioName), (uint32 id), (bool enable))\n  - void removeScenario((string scenarioName))\n  - bool enableScenario((string scenarioName), (bool enable))\n  - int getScenarioId((string scenarioName))\n  - list getScenarios()\n  - int getRealRuleIndex(uint32 ruleIndex, uint32 scenarioId)\n\n=======================================================================\nOBJECT: RuleEngine.RPC - Name: RuleEngine.RPC\n == PARAMETERS:\n  - Destination (type: string)\n      Attributes: read_only, persistent\n  - Function (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run((list parameters))\n\n=======================================================================\nOBJECT: RuleEngine.RPC.Parameters - Name: RuleEngine.RPC.Parameters\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Placeholder (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleEngine.Action - Name: RuleEngine.Action\n == PARAMETERS:\n  - RPCId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run((list parameters))\n\n=======================================================================\nOBJECT: RuleEngine.Action.Parameters - Name: RuleEngine.Action.Parameters\n\n=======================================================================\nOBJECT: RuleEngine.Trigger - Name: RuleEngine.Trigger\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Depth (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Trigger.Condition - Name: RuleEngine.Trigger.Condition\n == PARAMETERS:\n  - PCBEvent (type: uint32)\n      Attributes: read_only, persistent\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - ResetCondition (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Trigger.Condition.State - Name: RuleEngine.Trigger.Condition.State\n == PARAMETERS:\n  - RPCId (type: string)\n      Attributes: read_only, persistent\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - ResetState (type: bool)\n      Attributes: read_only, persistent\n  - Type (type: string)\n      Attributes: read_only, persistent\n      Validator: ['initial', 'trigger', 'always']\n\n=======================================================================\nOBJECT: RuleEngine.Trigger.Condition.State.Parameters - Name: RuleEngine.Trigger.Condition.State.Parameters\n == PARAMETERS:\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleEngine.Connector - Name: RuleEngine.Connector\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Type (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Rule - Name: RuleEngine.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - UserId (type: uint32)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: read_only, persistent\n  - Enabled (type: bool)\n      Attributes: read_only\n  - Private (type: bool)\n      Attributes: read_only, persistent\n  - ParentId (type: uint32)\n      Attributes: read_only, persistent\n  - ScenarioId (type: uint32)\n      Attributes: read_only, persistent\n  - IndexInScenario (type: uint32)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run()\n\n=======================================================================\nOBJECT: RuleEngine.Mode - Name: RuleEngine.Mode\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Mode.Rule - Name: RuleEngine.Mode.Rule\n == PARAMETERS:\n  - Index (type: uint32)\n      Attributes: read_only, persistent\n  - Enabled (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Scenario - Name: RuleEngine.Scenario\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Enabled (type: bool)\n      Attributes: read_only, persistent\n  - LastIndex (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .RuleFactory - Name: .RuleFactory\n == PARAMETERS:\n  - Initialized (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getCategories((string type), (string flags))\n  - list getEvents((string category), (string flags))\n  - list getActions((string category), (string flags))\n  - list getInputFields(string name, string type)\n  - list getRules((string type), (string flags), (string modeId), (string scenarioName))\n  - void setRules(list items)\n  - int setTriggeredRule(string name, list triggers, list actions, (list data), (uint32 index), (list modes), (string scenario))\n  - int setManualRule(string name, list actions, (uint32 index), (list modes), (string scenario))\n  - int setScheduledRule(string name, string type, list schedule, list actions, (uint32 index), (list modes), (string scenario), (list data))\n  - bool setScenario(string scenarioName, (list items), (bool enable))\n  - list getScenario(string scenarioName)\n\n=======================================================================\nOBJECT: RuleFactory.Store - Name: RuleFactory.Store\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Loaded (type: bool)\n      Attributes: read_only\n  - Enabled (type: bool)\n      Attributes: persistent\n  - Priority (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt - Name: RuleFactory.BaRt\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Modes - Name: RuleFactory.BaRt.Modes\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Scenario - Name: RuleFactory.BaRt.Scenario\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enabled (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.ActionPool - Name: RuleFactory.BaRt.ActionPool\n == PARAMETERS:\n  - BRIndex (type: int32)\n      Attributes: persistent\n  - Template (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.ActionPool.Parameters - Name: RuleFactory.BaRt.ActionPool.Parameters\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.TriggerPool - Name: RuleFactory.BaRt.TriggerPool\n == PARAMETERS:\n  - BRIndex (type: int32)\n      Attributes: persistent\n  - Template (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.TriggerPool.Parameters - Name: RuleFactory.BaRt.TriggerPool.Parameters\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.SchedulePool - Name: RuleFactory.BaRt.SchedulePool\n == PARAMETERS:\n  - BRIndex (type: int32)\n      Attributes: persistent\n  - ActionReference (type: int32)\n      Attributes: persistent\n  - Seconds (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule - Name: RuleFactory.BaRt.Rule\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Type (type: int32)\n      Attributes: persistent\n  - Delay (type: int32)\n      Attributes: persistent\n  - DelayJSON (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - ScheduleType (type: string)\n      Attributes: persistent\n  - ScenarioName (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule.Modes - Name: RuleFactory.BaRt.Rule.Modes\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule.ActionReference - Name: RuleFactory.BaRt.Rule.ActionReference\n == PARAMETERS:\n  - value (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule.ComplexTrigger - Name: RuleFactory.BaRt.Rule.ComplexTrigger\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule.ComplexTrigger.TriggerReference - Name: RuleFactory.BaRt.Rule.ComplexTrigger.TriggerReference\n == PARAMETERS:\n  - value (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt.Rule.ScheduleReference - Name: RuleFactory.BaRt.Rule.ScheduleReference\n == PARAMETERS:\n  - value (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/_PROCESSES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: Process.sysbus - Name: Process.1\n\n=======================================================================\nOBJECT: Process.sysbus_watchdog - Name: Process.2\n\n=======================================================================\nOBJECT: Process.sysbus_objectmonitor - Name: Process.3\n\n=======================================================================\nOBJECT: Process.sysbus_usermngt - Name: Process.4\n\n=======================================================================\nOBJECT: Process.sysbus_led - Name: Process.5\n\n=======================================================================\nOBJECT: Process.sysbus_faultmonitorplugin - Name: Process.6\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6_plugin - Name: Process.7\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-core - Name: Process.8\n\n=======================================================================\nOBJECT: Process.sysbus_netdev - Name: Process.9\n\n=======================================================================\nOBJECT: Process.sysbus_netmaster - Name: Process.10\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_core - Name: Process.11\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client - Name: Process.12\n\n=======================================================================\nOBJECT: Process.sysbus_www-backend - Name: Process.13\n\n=======================================================================\nOBJECT: Process.sysbus_deviceinfo_plugin - Name: Process.14\n\n=======================================================================\nOBJECT: Process.sysbus_firewall - Name: Process.15\n\n=======================================================================\nOBJECT: Process.sysbus_kmcd - Name: Process.16\n\n=======================================================================\nOBJECT: Process.sysbus_screen - Name: Process.17\n\n=======================================================================\nOBJECT: Process.sysbus_bcmeth - Name: Process.18\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-clients - Name: Process.19\n\n=======================================================================\nOBJECT: Process.sysbus_raplugin - Name: Process.20\n\n=======================================================================\nOBJECT: Process.sysbus_gpon-plugin - Name: Process.21\n\n=======================================================================\nOBJECT: Process.sysbus_dhcp - Name: Process.22\n\n=======================================================================\nOBJECT: Process.sysbus_dnsplugin - Name: Process.23\n\n=======================================================================\nOBJECT: Process.sysbus_pppd_plugin - Name: Process.24\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6d_plugin - Name: Process.25\n\n=======================================================================\nOBJECT: Process.sysbus_ipsec - Name: Process.26\n\n=======================================================================\nOBJECT: Process.sysbus_conntrack_plugin - Name: Process.27\n\n=======================================================================\nOBJECT: Process.sysbus_flowstats - Name: Process.28\n\n=======================================================================\nOBJECT: Process.sysbus_maculan - Name: Process.29\n\n=======================================================================\nOBJECT: Process.sysbus_vowifi - Name: Process.30\n\n=======================================================================\nOBJECT: Process.sysbus_ssle-server - Name: Process.31\n\n=======================================================================\nOBJECT: Process.sysbus_wlan-manager - Name: Process.32\n\n=======================================================================\nOBJECT: Process.sysbus_devicemngt - Name: Process.33\n\n=======================================================================\nOBJECT: Process.sysbus_mqttmessages - Name: Process.34\n\n=======================================================================\nOBJECT: Process.sysbus_wld_bcm - Name: Process.35\n\n=======================================================================\nOBJECT: Process.sysbus_sahpairing - Name: Process.36\n\n=======================================================================\nOBJECT: Process.sysbus_dnssd - Name: Process.37\n\n=======================================================================\nOBJECT: Process.sysbus_llmnr - Name: Process.38\n\n=======================================================================\nOBJECT: Process.sysbus_pnp - Name: Process.39\n\n=======================================================================\nOBJECT: Process.sysbus_vpn - Name: Process.40\n\n=======================================================================\nOBJECT: Process.sysbus_gmap - Name: Process.41\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_self - Name: Process.42\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_eth - Name: Process.43\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hgw - Name: Process.44\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_devtype - Name: Process.45\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dns - Name: Process.46\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_upnp - Name: Process.47\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_wan - Name: Process.48\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_usb - Name: Process.49\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mdns - Name: Process.50\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_events - Name: Process.51\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_useragents - Name: Process.52\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcav - Name: Process.53\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcdevolo - Name: Process.54\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ieee1905 - Name: Process.55\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_db - Name: Process.56\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_owner - Name: Process.57\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_location - Name: Process.58\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_lltd - Name: Process.59\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ssw - Name: Process.60\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_voice - Name: Process.61\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mqtt - Name: Process.62\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_vdev - Name: Process.63\n\n=======================================================================\nOBJECT: Process.sysbus_manifest - Name: Process.64\n\n=======================================================================\nOBJECT: Process.sysbus_mss - Name: Process.65\n\n=======================================================================\nOBJECT: Process.sysbus_passwordrecovery - Name: Process.66\n\n=======================================================================\nOBJECT: Process.sysbus_eventmanager - Name: Process.67\n\n=======================================================================\nOBJECT: Process.sysbus_captiveportal - Name: Process.68\n\n=======================================================================\nOBJECT: Process.sysbus_dyndns_plugin - Name: Process.69\n\n=======================================================================\nOBJECT: Process.sysbus_httpd - Name: Process.70\n\n=======================================================================\nOBJECT: Process.sysbus_time-plugin - Name: Process.71\n\n=======================================================================\nOBJECT: Process.sysbus_netmon - Name: Process.72\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_client - Name: Process.73\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_plugin - Name: Process.74\n\n=======================================================================\nOBJECT: Process.sysbus_phonebook_plugin - Name: Process.75\n\n=======================================================================\nOBJECT: Process.sysbus_voipapp - Name: Process.76\n\n=======================================================================\nOBJECT: Process.sysbus_tr181 - Name: Process.77\n\n=======================================================================\nOBJECT: Process.sysbus_voipaad_plugin - Name: Process.78\n\n=======================================================================\nOBJECT: Process.sysbus_scheduler-plugin - Name: Process.79\n\n=======================================================================\nOBJECT: Process.sysbus_udpechoconfig - Name: Process.80\n\n=======================================================================\nOBJECT: Process.sysbus_usbhosts - Name: Process.81\n\n=======================================================================\nOBJECT: Process.sysbus_dlnadms - Name: Process.82\n\n=======================================================================\nOBJECT: Process.sysbus_tod-plugin - Name: Process.83\n\n=======================================================================\nOBJECT: Process.sysbus_wakeonlan-plugin - Name: Process.84\n\n=======================================================================\nOBJECT: Process.sysbus_wlanscheduler-plugin - Name: Process.85\n\n=======================================================================\nOBJECT: Process.sysbus_cwmp-plugin - Name: Process.86\n\n=======================================================================\nOBJECT: Process.sysbus_launcher - Name: Process.87\n\n=======================================================================\nOBJECT: Process.sysbus_location - Name: Process.88\n\n=======================================================================\nOBJECT: Process.sysbus_lxcmanager - Name: Process.89\n\n=======================================================================\nOBJECT: Process.sysbus_mqttbroker - Name: Process.90\n\n=======================================================================\nOBJECT: Process.sysbus_oui - Name: Process.91\n\n=======================================================================\nOBJECT: Process.sysbus_remoteaccess - Name: Process.92\n\n=======================================================================\nOBJECT: Process.sysbus_speedtest - Name: Process.93\n\n=======================================================================\nOBJECT: Process.sysbus_srvinterface - Name: Process.94\n\n=======================================================================\nOBJECT: Process.sysbus_rule-engine - Name: Process.95\n\n=======================================================================\nOBJECT: Process.sysbus_ssw - Name: Process.96\n\n=======================================================================\nOBJECT: Process.sysbus_pass - Name: Process.97\n\n=======================================================================\nOBJECT: Process.sysbus_rule-factory - Name: Process.98\n\n=======================================================================\nOBJECT: Process.sysbus_upgraded_plugin - Name: Process.99\n\n=======================================================================\nOBJECT: Process.sysbus_storage - Name: Process.100\n\n=======================================================================\nOBJECT: Process.sysbus_webuiupgrade_plugin - Name: Process.101\n\n=======================================================================\nOBJECT: Process.sysbus_account-remoteaccess - Name: Process.102\n\n=======================================================================\nOBJECT: Process.sysbus_accountmanager - Name: Process.103\n\n=======================================================================\nOBJECT: Process.sysbus_autodiag - Name: Process.104\n\n=======================================================================\nOBJECT: Process.sysbus_bulkdata - Name: Process.105\n\n=======================================================================\nOBJECT: Process.sysbus_cifscl - Name: Process.106\n\n=======================================================================\nOBJECT: Process.sysbus_ConMon - Name: Process.107\n\n=======================================================================\nOBJECT: Process.sysbus_cpu_monitor - Name: Process.108\n\n=======================================================================\nOBJECT: Process.sysbus_devicelookup - Name: Process.109\n\n=======================================================================\nOBJECT: Process.sysbus_domino_plugin - Name: Process.110\n\n=======================================================================\nOBJECT: Process.sysbus_dummyplugin - Name: Process.111\n\n=======================================================================\nOBJECT: Process.sysbus_genlog - Name: Process.112\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_orange - Name: Process.113\n\n=======================================================================\nOBJECT: Process.sysbus_history - Name: Process.114\n\n=======================================================================\nOBJECT: Process.sysbus_homelan - Name: Process.115\n\n=======================================================================\nOBJECT: Process.sysbus_ieee1905-registrar - Name: Process.116\n\n=======================================================================\nOBJECT: Process.sysbus_iot-service - Name: Process.117\n\n=======================================================================\nOBJECT: Process.sysbus_ippingdiagnostics - Name: Process.118\n\n=======================================================================\nOBJECT: Process.sysbus_oopstracker - Name: Process.119\n\n=======================================================================\nOBJECT: Process.sysbus_orange-dyndns_plugin - Name: Process.120\n\n=======================================================================\nOBJECT: Process.sysbus_orange-invoc - Name: Process.121\n\n=======================================================================\nOBJECT: Process.sysbus_powermanagement - Name: Process.122\n\n=======================================================================\nOBJECT: Process.sysbus_probe_plugin - Name: Process.123\n\n=======================================================================\nOBJECT: Process.sysbus_probe_client - Name: Process.124\n\n=======================================================================\nOBJECT: Process.sysbus_processmonitor - Name: Process.125\n\n=======================================================================\nOBJECT: Process.sysbus_runmode - Name: Process.126\n\n=======================================================================\nOBJECT: Process.sysbus_topologydiagnostics - Name: Process.127\n\n=======================================================================\nOBJECT: Process.sysbus_upnp-igd_plugin - Name: Process.128\n\n=======================================================================\nOBJECT: Process.sysbus_upnpdiscd_plugin - Name: Process.129\n\n=======================================================================\nOBJECT: Process.sysbus_WOLProxy - Name: Process.130\n\n=======================================================================\nOBJECT: Process.sysbus_bcm_fxs - Name: Process.131\n\n=======================================================================\nOBJECT: Process.sysbus_wt_plugin - Name: Process.132\n\n=======================================================================\nOBJECT: Process.sysbus_invoc - Name: Process.133\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: RuleFactory.Store - Name: RuleFactory.Store\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Loaded (type: bool)\n      Attributes: read_only\n  - Enabled (type: bool)\n      Attributes: persistent\n  - Priority (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: RuleFactory.BaRt - Name: RuleFactory.BaRt\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: RuleEngine.RPC - Name: RuleEngine.RPC\n == PARAMETERS:\n  - Destination (type: string)\n      Attributes: read_only, persistent\n  - Function (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run((list parameters))\n\n=======================================================================\nOBJECT: RuleEngine.Action - Name: RuleEngine.Action\n == PARAMETERS:\n  - RPCId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run((list parameters))\n\n=======================================================================\nOBJECT: RuleEngine.Trigger - Name: RuleEngine.Trigger\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Depth (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Connector - Name: RuleEngine.Connector\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Type (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Rule - Name: RuleEngine.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - UserId (type: uint32)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: read_only, persistent\n  - Enabled (type: bool)\n      Attributes: read_only\n  - Private (type: bool)\n      Attributes: read_only, persistent\n  - ParentId (type: uint32)\n      Attributes: read_only, persistent\n  - ScenarioId (type: uint32)\n      Attributes: read_only, persistent\n  - IndexInScenario (type: uint32)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - variant run()\n\n=======================================================================\nOBJECT: RuleEngine.Mode - Name: RuleEngine.Mode\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: RuleEngine.Scenario - Name: RuleEngine.Scenario\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Enabled (type: bool)\n      Attributes: read_only, persistent\n  - LastIndex (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/eventmanager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6/sah.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G07.R02.C03_10\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/AccountManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"AccountManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Audiphone.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Audiphone\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/AutoDiag.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - FullDateEnable (type: bool)\n      Attributes: persistent\n  - NoAuthUse (type: bool)\n      Attributes: persistent\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool cancelDiagnostics()\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: AutoDiag.HeaderField - Name: AutoDiag.HeaderField\n == PARAMETERS:\n  - DataType (type: string)\n      Attributes: persistent\n      Validator: ['Value', 'Path']\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Data (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n\n=======================================================================\nOBJECT: AutoDiag.Interface - Name: AutoDiag.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/BCMPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BCMPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/BulkData.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BulkData\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/CPUStats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CPUStats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/CaptivePortal.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CaptivePortal\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/ConMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ConMon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Conntrack.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Conntrack\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DHCPv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DHCPv6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DHCPv6Client.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DHCPv6Client\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DLNA.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DLNA\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DNS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DNSSD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DSPPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DeviceInfo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: read_only\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - variant getDebugInformation((bool filedesc), (debug_options_t options))\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DeviceLookup.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceLookup\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DeviceManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DeviceManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Devices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Config.global - Name: Devices.Config.global\n == PARAMETERS:\n  - MaxLanDevices (type: string)\n      Attributes: persistent\n  - MaxLanDevicesAccept (type: string)\n      Attributes: persistent\n  - MaxLanDevicesDeleteActive (type: string)\n      Attributes: persistent\n  - MaxInactiveAge (type: string)\n      Attributes: persistent\n  - DeviceTypeOrder (type: string)\n      Attributes: persistent\n  - NameOrder (type: string)\n      Attributes: persistent\n  - MDNSDisable (type: string)\n      Attributes: persistent\n  - KeepLink (type: string)\n      Attributes: persistent\n  - AcceptIntfs (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.Priority - Name: Devices.Config.Priority\n\n=======================================================================\nOBJECT: Devices.Config.WANAccess - Name: Devices.Config.WANAccess\n == PARAMETERS:\n  - BlockedReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.eth - Name: Devices.Config.eth\n == PARAMETERS:\n  - DHCPPools (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selfphysical - Name: Devices.Config.selfphysical\n == PARAMETERS:\n  - Blocked (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selflan - Name: Devices.Config.selflan\n == PARAMETERS:\n  - Interfaces (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.events - Name: Devices.Config.events\n == PARAMETERS:\n  - CPUInterval (type: string)\n      Attributes: persistent\n  - SysInfoInterval (type: string)\n      Attributes: persistent\n  - Log (type: string)\n      Attributes: persistent\n  - LogType (type: string)\n      Attributes: persistent\n  - LogSize (type: string)\n      Attributes: persistent\n  - LogEntries (type: string)\n      Attributes: persistent\n  - LogPath (type: string)\n      Attributes: persistent\n  - DevicesInterval (type: string)\n      Attributes: persistent\n  - WANInterfaces (type: string)\n      Attributes: persistent\n  - MaxWlanStatMonStations (type: string)\n      Attributes: persistent\n  - WlanPersistentLogsInterval (type: string)\n      Attributes: persistent\n  - WlanPersistentAggregationInterval (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.ieee1905_gmap - Name: Devices.Config.ieee1905_gmap\n\n=======================================================================\nOBJECT: Devices.Config.mqtt - Name: Devices.Config.mqtt\n == PARAMETERS:\n  - Server (type: string)\n      Attributes: persistent\n  - AlarmTopic (type: string)\n      Attributes: persistent\n  - AddedTopic (type: string)\n      Attributes: persistent\n  - InfoChangedTopic (type: string)\n      Attributes: persistent\n  - DataChangedTopic (type: string)\n      Attributes: persistent\n  - DeleteTopic (type: string)\n      Attributes: persistent\n  - EventsEnable (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Domino.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Domino - Name: .Domino\n == FUNCTIONS:\n  - list getDominoStatus()\n  - bool enableBackupFeature((bool enable))\n  - bool enableDominoComponent((bool enable))\n  - bool getWWANStatus((string LinkState), (string MACAddress), (string Protocol), (string ConnectionState), (string IPAddress), (string RemoteGateway), (string DNSServers))\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Intf.ConnectionContext - Name: Domino.Intf.ConnectionContext\n == FUNCTIONS:\n  - bool setAdminPassword((string password))\n  - bool resetAdminPassword((string currpwd), (string newpwd))\n\n=======================================================================\nOBJECT: Domino.Intf.SIM - Name: Domino.Intf.SIM\n == FUNCTIONS:\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n\n=======================================================================\nOBJECT: Domino.Airbox - Name: Domino.Airbox\n == PARAMETERS:\n  - SubscriptionStatus (type: string)\n      Validator: ['Unknown', 'Subscribed', 'NotSubscribed']\n\n=======================================================================\nOBJECT: Domino.Airbox.Service - Name: Domino.Airbox.Service\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Login (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool setServicePassword(string Password)\n\n=======================================================================\nOBJECT: Domino.Airbox.Service.ConnectedDevice - Name: Domino.Airbox.Service.ConnectedDevice\n == PARAMETERS:\n  - ProductID (type: string)\n  - VendorID (type: string)\n\n=======================================================================\nOBJECT: Domino.Airbox.WifiCloning - Name: Domino.Airbox.WifiCloning\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - LowerLayer (type: string)\n == FUNCTIONS:\n  - bool setWifiCloningEnable(bool enable)\n\n=======================================================================\nOBJECT: Domino.Airbox.Backup - Name: Domino.Airbox.Backup\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - ActivationMessageEnable (type: bool)\n      Attributes: persistent\n  - TimerPreempt (type: uint32)\n      Attributes: persistent\n  - TimerMainLoss (type: uint32)\n      Attributes: persistent\n  - DeactivationMessageEnable (type: bool)\n      Attributes: persistent\n  - ActivationMode (type: string)\n      Attributes: persistent\n      Validator: ['AUTO_FULL', 'AUTO_NOTIF', 'MANUAL']\n  - TimerMainRecover (type: uint32)\n      Attributes: persistent\n  - NumberOfUse (type: uint32)\n      Attributes: read_only, persistent\n  - ServiceStatus (type: string)\n      Validator: ['enabled', 'disabled']\n  - State (type: string)\n      Validator: ['BACKUP_STOPPED', 'BACKUP_STOPPING', 'BACKUP_STARTING', 'BACKUP_STARTED_WAIT_MANUAL', 'BACKUP_STARTED_WRONGCONFIG', 'BACKUP_STARTED_NODEVICE', 'BACKUP_STARTED', 'BACKUP_RUNNING', 'BACKUP_UNKNOWN']\n == FUNCTIONS:\n  - bool setTimerBackupParameter(string parameter, uint32 timer)\n  - bool setActivationMode(string activation)\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface - Name: Domino.Cellular.Interface\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - SupportedAccessTechnologies (type: string)\n      Attributes: read_only\n  - PreferredAccessTechnology (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'LTE', 'WCDMA']\n  - CurrentAccessTechnology (type: string)\n      Attributes: read_only, persistent\n  - RSSI (type: int32)\n      Attributes: read_only\n  - PINCheck (type: string)\n      Attributes: persistent\n  - PIN (type: string)\n      Attributes: persistent\n  - X_ORANGE-COM_PINTry (type: uint32)\n      Attributes: persistent\n  - InterferenceMode (type: string)\n      Attributes: persistent\n      Validator: ['NONE', '3G2100', '4GB7', '3G2100+4GB7']\n  - Upstream (type: bool)\n == FUNCTIONS:\n  - bool setTechnologyMode(string mode, string interference)\n  - bool setGlobalPin(string pin)\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface.USIM - Name: Domino.Cellular.Interface.USIM\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['', 'None', 'Available', 'Valid', 'Blocked', 'Error', 'New']\n  - ICCID (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool authorizeICCID((bool enable))\n\n=======================================================================\nOBJECT: Domino.Cellular.AccessPoint - Name: Domino.Cellular.AccessPoint\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n == FUNCTIONS:\n  - bool setAPSettings(string apn, string username, string password)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DummyPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DummyPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/DynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/FaultMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"FaultMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Firewall.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwarding (type: bool)\n      Attributes: read_only\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Flowstats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Flowstats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/GenLog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"GenLog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Gpon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Gpon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/HTTPService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/History.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/HomeLan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/IEEE1905.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IEEE1905\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/IPPingDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPPingDiagnostics\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/IPsec.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPsec\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Invocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Invocation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/IoTService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/KMCD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"KMCD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/LLMNR.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LLMNR\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/LXCManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LXCManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Launcher.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Launcher\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Locations.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/MQTTBroker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTBroker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/MQTTMessages.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTMessages\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/MSS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Maculan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/ManagementServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ManagementServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Manifests.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NMC.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.LAN - Name: NMC.LAN\n == FUNCTIONS:\n  - void addStaticRoute(string Name, string Dst, uint8 DstLen, string Gateway, (bool Enable), (int32 Priority), (uint32 MTU))\n  - void deleteStaticRoute(string Name)\n  - staticroute_t getStaticRoutes()\n\n=======================================================================\nOBJECT: NMC.LAN.IPv4Route - Name: NMC.LAN.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Validator: ['Disabled', 'Bound', 'Error']\n  - DstLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '32'}\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - MTU (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ETH0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0 - Name: NeMo.Intf.3\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.ULIntf - Name: NeMo.Intf.3.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.LLIntf - Name: NeMo.Intf.3.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.Query - Name: NeMo.Intf.3.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Addr - Name: NeMo.Intf.3.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Addr - Name: NeMo.Intf.3.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Route - Name: NeMo.Intf.3.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Route - Name: NeMo.Intf.3.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.StatMon - Name: NeMo.Intf.3.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ETH1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1 - Name: NeMo.Intf.4\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.ULIntf - Name: NeMo.Intf.4.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.LLIntf - Name: NeMo.Intf.4.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.Query - Name: NeMo.Intf.4.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Addr - Name: NeMo.Intf.4.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Addr - Name: NeMo.Intf.4.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Route - Name: NeMo.Intf.4.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Route - Name: NeMo.Intf.4.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.StatMon - Name: NeMo.Intf.4.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ETH2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2 - Name: NeMo.Intf.5\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.ULIntf - Name: NeMo.Intf.5.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.LLIntf - Name: NeMo.Intf.5.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.Query - Name: NeMo.Intf.5.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Addr - Name: NeMo.Intf.5.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Addr - Name: NeMo.Intf.5.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Route - Name: NeMo.Intf.5.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Route - Name: NeMo.Intf.5.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.StatMon - Name: NeMo.Intf.5.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ETH3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3 - Name: NeMo.Intf.6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.ULIntf - Name: NeMo.Intf.6.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.LLIntf - Name: NeMo.Intf.6.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.Query - Name: NeMo.Intf.6.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Addr - Name: NeMo.Intf.6.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Addr - Name: NeMo.Intf.6.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Route - Name: NeMo.Intf.6.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Route - Name: NeMo.Intf.6.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.StatMon - Name: NeMo.Intf.6.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ETH4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4 - Name: NeMo.Intf.7\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.ULIntf - Name: NeMo.Intf.7.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.LLIntf - Name: NeMo.Intf.7.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.Query - Name: NeMo.Intf.7.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Addr - Name: NeMo.Intf.7.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Addr - Name: NeMo.Intf.7.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Route - Name: NeMo.Intf.7.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Route - Name: NeMo.Intf.7.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.StatMon - Name: NeMo.Intf.7.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.brguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest - Name: NeMo.Intf.36\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.ULIntf - Name: NeMo.Intf.36.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.LLIntf - Name: NeMo.Intf.36.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.Query - Name: NeMo.Intf.36.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Addr - Name: NeMo.Intf.36.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Addr - Name: NeMo.Intf.36.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Route - Name: NeMo.Intf.36.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Route - Name: NeMo.Intf.36.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router - Name: NeMo.Intf.36.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router.Option - Name: NeMo.Intf.36.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge - Name: NeMo.Intf.8\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.ULIntf - Name: NeMo.Intf.8.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.LLIntf - Name: NeMo.Intf.8.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.Query - Name: NeMo.Intf.8.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Addr - Name: NeMo.Intf.8.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Addr - Name: NeMo.Intf.8.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Route - Name: NeMo.Intf.8.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Route - Name: NeMo.Intf.8.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router - Name: NeMo.Intf.8.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router.Option - Name: NeMo.Intf.8.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge_ctr.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_ctr\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge_gviptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_gviptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge_gvmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti - Name: NeMo.Intf.18\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.ULIntf - Name: NeMo.Intf.18.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.LLIntf - Name: NeMo.Intf.18.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.Query - Name: NeMo.Intf.18.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Addr - Name: NeMo.Intf.18.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Addr - Name: NeMo.Intf.18.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Route - Name: NeMo.Intf.18.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Route - Name: NeMo.Intf.18.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router - Name: NeMo.Intf.18.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router.Option - Name: NeMo.Intf.18.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge_viptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_viptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.bridge_vmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti - Name: NeMo.Intf.11\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.ULIntf - Name: NeMo.Intf.11.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.LLIntf - Name: NeMo.Intf.11.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.Query - Name: NeMo.Intf.11.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Addr - Name: NeMo.Intf.11.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Addr - Name: NeMo.Intf.11.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Route - Name: NeMo.Intf.11.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Route - Name: NeMo.Intf.11.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router - Name: NeMo.Intf.11.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router.Option - Name: NeMo.Intf.11.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.container.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/container\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.data - Name: NeMo.Intf.30\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.data.ULIntf - Name: NeMo.Intf.30.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.LLIntf - Name: NeMo.Intf.30.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.Query - Name: NeMo.Intf.30.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.dhcp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data - Name: NeMo.Intf.26\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ULIntf - Name: NeMo.Intf.26.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.LLIntf - Name: NeMo.Intf.26.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.Query - Name: NeMo.Intf.26.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.SentOption - Name: NeMo.Intf.26.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ReqOption - Name: NeMo.Intf.26.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.dhcp_iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_iptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.dhcp_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.dhcp_wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan - Name: NeMo.Intf.38\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ULIntf - Name: NeMo.Intf.38.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.LLIntf - Name: NeMo.Intf.38.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.Query - Name: NeMo.Intf.38.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.SentOption - Name: NeMo.Intf.38.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ReqOption - Name: NeMo.Intf.38.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.dhcpv6_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data - Name: NeMo.Intf.27\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Validator: ['Idle', 'Init', 'Selecting', 'Requesting', 'Bound', 'BoundCheck', 'Release', 'Decline', 'Renew', 'Rebind', 'Release', 'InformationRequest', 'InformationBound', 'Error']\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: uint8)\n      Attributes: persistent\n  - DUID (type: string)\n      Attributes: persistent\n  - RequestAddresses (type: bool)\n      Attributes: persistent\n  - RequestPrefixes (type: bool)\n      Attributes: persistent\n  - RapidCommit (type: bool)\n      Attributes: persistent\n  - IAID (type: uint32)\n      Attributes: persistent\n  - SuggestedT1 (type: int32)\n      Attributes: persistent\n  - SuggestedT2 (type: int32)\n      Attributes: persistent\n  - SupportedOptions (type: string)\n      Attributes: persistent\n  - RequestedOptions (type: string)\n      Attributes: persistent\n  - Renew (type: bool)\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInfo (type: string)\n      Attributes: persistent\n  - RetryOnFailedAuth (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ULIntf - Name: NeMo.Intf.27.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.LLIntf - Name: NeMo.Intf.27.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.Query - Name: NeMo.Intf.27.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.SentOption - Name: NeMo.Intf.27.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint16)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ReceivedOption - Name: NeMo.Intf.27.ReceivedOption\n == PARAMETERS:\n  - Tag (type: uint16)\n  - Alias (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.guest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.guest - Name: NeMo.Intf.37\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.ULIntf - Name: NeMo.Intf.37.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.LLIntf - Name: NeMo.Intf.37.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.Query - Name: NeMo.Intf.37.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.gvlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data - Name: NeMo.Intf.16\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.ULIntf - Name: NeMo.Intf.16.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.LLIntf - Name: NeMo.Intf.16.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.Query - Name: NeMo.Intf.16.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Addr - Name: NeMo.Intf.16.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Addr - Name: NeMo.Intf.16.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Route - Name: NeMo.Intf.16.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Route - Name: NeMo.Intf.16.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.QoS - Name: NeMo.Intf.16.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.StatMon - Name: NeMo.Intf.16.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.gvlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.gvlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.gvlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi - Name: NeMo.Intf.17\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.ULIntf - Name: NeMo.Intf.17.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.LLIntf - Name: NeMo.Intf.17.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.Query - Name: NeMo.Intf.17.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Addr - Name: NeMo.Intf.17.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Addr - Name: NeMo.Intf.17.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Route - Name: NeMo.Intf.17.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Route - Name: NeMo.Intf.17.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.QoS - Name: NeMo.Intf.17.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.StatMon - Name: NeMo.Intf.17.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.gvlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv - Name: NeMo.Intf.32\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.ULIntf - Name: NeMo.Intf.32.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.LLIntf - Name: NeMo.Intf.32.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.Query - Name: NeMo.Intf.32.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.lan - Name: NeMo.Intf.28\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.ULIntf - Name: NeMo.Intf.28.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.LLIntf - Name: NeMo.Intf.28.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.Query - Name: NeMo.Intf.28.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.lo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.lo - Name: NeMo.Intf.1\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.ULIntf - Name: NeMo.Intf.1.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.LLIntf - Name: NeMo.Intf.1.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.Query - Name: NeMo.Intf.1.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Addr - Name: NeMo.Intf.1.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Addr - Name: NeMo.Intf.1.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Route - Name: NeMo.Intf.1.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Route - Name: NeMo.Intf.1.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router - Name: NeMo.Intf.1.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router.Option - Name: NeMo.Intf.1.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.ppp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data - Name: NeMo.Intf.23\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - ConnectionStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - MaxMRUSize (type: uint32)\n      Attributes: persistent\n  - PPPoESessionID (type: uint32)\n      Attributes: read_only\n  - PPPoEACName (type: string)\n  - PPPoEServiceName (type: string)\n  - RemoteIPAddress (type: string)\n      Attributes: read_only\n  - LocalIPAddress (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - DNSServers (type: string)\n      Attributes: read_only\n  - TransportType (type: string)\n      Attributes: read_only\n  - LCPEcho (type: uint32)\n      Attributes: persistent\n  - LCPEchoRetry (type: uint32)\n      Attributes: persistent\n  - IPCPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPLocalInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - IPv6CPRemoteInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - ConnectionTrigger (type: string)\n      Attributes: persistent\n      Validator: ['AlwaysOn', 'OnDemand', 'Manual']\n  - IdleDisconnectTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.ULIntf - Name: NeMo.Intf.23.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.LLIntf - Name: NeMo.Intf.23.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.Query - Name: NeMo.Intf.23.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Addr - Name: NeMo.Intf.23.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Addr - Name: NeMo.Intf.23.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Route - Name: NeMo.Intf.23.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Route - Name: NeMo.Intf.23.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.primdata.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/primdata\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.rad2g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0 - Name: NeMo.Intf.39\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ULIntf - Name: NeMo.Intf.39.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.LLIntf - Name: NeMo.Intf.39.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Query - Name: NeMo.Intf.39.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS - Name: NeMo.Intf.39.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS.Event - Name: NeMo.Intf.39.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults - Name: NeMo.Intf.39.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.39.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.RadCaps - Name: NeMo.Intf.39.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt - Name: NeMo.Intf.39.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.BgDfs - Name: NeMo.Intf.39.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Stats - Name: NeMo.Intf.39.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Band - Name: NeMo.Intf.39.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.39.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - NewAvailability (type: uint32)\n      Attributes: read_only\n  - NewScore (type: uint32)\n      Attributes: read_only\n  - Stations (type: uint32)\n      Attributes: read_only\n  - VideoStations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats - Name: NeMo.Intf.39.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsSent - Name: NeMo.Intf.39.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedSent - Name: NeMo.Intf.39.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.39.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedReceived - Name: NeMo.Intf.39.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesSent - Name: NeMo.Intf.39.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.39.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesReceived - Name: NeMo.Intf.39.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.39.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor - Name: NeMo.Intf.39.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.39.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.39.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.39.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.EventCounter - Name: NeMo.Intf.39.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor - Name: NeMo.Intf.39.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.Event - Name: NeMo.Intf.39.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.39.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.39.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor - Name: NeMo.Intf.39.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Event - Name: NeMo.Intf.39.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.EventType - Name: NeMo.Intf.39.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Config - Name: NeMo.Intf.39.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.TrafficMonitor - Name: NeMo.Intf.39.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.AirstatsMonitor - Name: NeMo.Intf.39.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.BackgroundScanner - Name: NeMo.Intf.39.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverConfig - Name: NeMo.Intf.39.DriverConfig\n == PARAMETERS:\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.MACConfig - Name: NeMo.Intf.39.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverStatus - Name: NeMo.Intf.39.DriverStatus\n == PARAMETERS:\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanConfig - Name: NeMo.Intf.39.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats - Name: NeMo.Intf.39.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats.ScanReason - Name: NeMo.Intf.39.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor - Name: NeMo.Intf.39.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.WlMsgLevel - Name: NeMo.Intf.39.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.39.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap - Name: NeMo.Intf.39.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.39.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Logging - Name: NeMo.Intf.39.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMemUse - Name: NeMo.Intf.39.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.AirIQScanner - Name: NeMo.Intf.39.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.HealthMonitor - Name: NeMo.Intf.39.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.rad5g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0 - Name: NeMo.Intf.40\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ULIntf - Name: NeMo.Intf.40.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.LLIntf - Name: NeMo.Intf.40.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Query - Name: NeMo.Intf.40.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS - Name: NeMo.Intf.40.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS.Event - Name: NeMo.Intf.40.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults - Name: NeMo.Intf.40.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.40.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.RadCaps - Name: NeMo.Intf.40.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt - Name: NeMo.Intf.40.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.BgDfs - Name: NeMo.Intf.40.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Stats - Name: NeMo.Intf.40.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Band - Name: NeMo.Intf.40.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.40.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - NewAvailability (type: uint32)\n      Attributes: read_only\n  - NewScore (type: uint32)\n      Attributes: read_only\n  - Stations (type: uint32)\n      Attributes: read_only\n  - VideoStations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats - Name: NeMo.Intf.40.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsSent - Name: NeMo.Intf.40.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedSent - Name: NeMo.Intf.40.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.40.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedReceived - Name: NeMo.Intf.40.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesSent - Name: NeMo.Intf.40.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.40.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesReceived - Name: NeMo.Intf.40.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.40.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor - Name: NeMo.Intf.40.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.40.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.40.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.40.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.EventCounter - Name: NeMo.Intf.40.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor - Name: NeMo.Intf.40.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.Event - Name: NeMo.Intf.40.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.40.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.40.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor - Name: NeMo.Intf.40.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Event - Name: NeMo.Intf.40.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.EventType - Name: NeMo.Intf.40.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Config - Name: NeMo.Intf.40.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.TrafficMonitor - Name: NeMo.Intf.40.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.AirstatsMonitor - Name: NeMo.Intf.40.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.BackgroundScanner - Name: NeMo.Intf.40.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverConfig - Name: NeMo.Intf.40.DriverConfig\n == PARAMETERS:\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.MACConfig - Name: NeMo.Intf.40.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverStatus - Name: NeMo.Intf.40.DriverStatus\n == PARAMETERS:\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanConfig - Name: NeMo.Intf.40.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats - Name: NeMo.Intf.40.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats.ScanReason - Name: NeMo.Intf.40.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor - Name: NeMo.Intf.40.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.WlMsgLevel - Name: NeMo.Intf.40.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.40.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap - Name: NeMo.Intf.40.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.40.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Logging - Name: NeMo.Intf.40.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMemUse - Name: NeMo.Intf.40.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.AirIQScanner - Name: NeMo.Intf.40.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.HealthMonitor - Name: NeMo.Intf.40.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.rad6g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0 - Name: NeMo.Intf.41\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ULIntf - Name: NeMo.Intf.41.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.LLIntf - Name: NeMo.Intf.41.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Query - Name: NeMo.Intf.41.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS - Name: NeMo.Intf.41.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS.Event - Name: NeMo.Intf.41.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults - Name: NeMo.Intf.41.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.41.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.RadCaps - Name: NeMo.Intf.41.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string Capability))\n  - void Disable((string Capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt - Name: NeMo.Intf.41.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.BgDfs - Name: NeMo.Intf.41.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Stats - Name: NeMo.Intf.41.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Band - Name: NeMo.Intf.41.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.41.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - OldAvailability (type: uint32)\n      Attributes: read_only\n  - OldScore (type: uint32)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - NewAvailability (type: uint32)\n      Attributes: read_only\n  - NewScore (type: uint32)\n      Attributes: read_only\n  - Stations (type: uint32)\n      Attributes: read_only\n  - VideoStations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats - Name: NeMo.Intf.41.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsSent - Name: NeMo.Intf.41.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedSent - Name: NeMo.Intf.41.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.41.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedReceived - Name: NeMo.Intf.41.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesSent - Name: NeMo.Intf.41.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.41.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesReceived - Name: NeMo.Intf.41.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.41.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor - Name: NeMo.Intf.41.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.41.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.41.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.41.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.EventCounter - Name: NeMo.Intf.41.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor - Name: NeMo.Intf.41.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.Event - Name: NeMo.Intf.41.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.41.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.41.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor - Name: NeMo.Intf.41.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Event - Name: NeMo.Intf.41.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.EventType - Name: NeMo.Intf.41.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Config - Name: NeMo.Intf.41.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.TrafficMonitor - Name: NeMo.Intf.41.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getThroughputInfo()\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.AirstatsMonitor - Name: NeMo.Intf.41.AirstatsMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintMask (type: string)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistoryLength (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getHistograms()\n  - variant getBucketHistory()\n  - variant getAvgHistory()\n  - variant getHistory()\n  - variant getRecentAverage()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.BackgroundScanner - Name: NeMo.Intf.41.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverConfig - Name: NeMo.Intf.41.DriverConfig\n == PARAMETERS:\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.MACConfig - Name: NeMo.Intf.41.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverStatus - Name: NeMo.Intf.41.DriverStatus\n == PARAMETERS:\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanConfig - Name: NeMo.Intf.41.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats - Name: NeMo.Intf.41.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats.ScanReason - Name: NeMo.Intf.41.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor - Name: NeMo.Intf.41.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.WlMsgLevel - Name: NeMo.Intf.41.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.41.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap - Name: NeMo.Intf.41.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.41.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Logging - Name: NeMo.Intf.41.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMemUse - Name: NeMo.Intf.41.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.AirIQScanner - Name: NeMo.Intf.41.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.HealthMonitor - Name: NeMo.Intf.41.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.superguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.superlan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superlan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap2g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0 - Name: NeMo.Intf.65\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ULIntf - Name: NeMo.Intf.65.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.LLIntf - Name: NeMo.Intf.65.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Query - Name: NeMo.Intf.65.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211r - Name: NeMo.Intf.65.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211u - Name: NeMo.Intf.65.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Security - Name: NeMo.Intf.65.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.WPS - Name: NeMo.Intf.65.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering - Name: NeMo.Intf.65.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.Entry - Name: NeMo.Intf.65.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.65.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering - Name: NeMo.Intf.65.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.65.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs - Name: NeMo.Intf.65.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.65.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.HotSpot2 - Name: NeMo.Intf.65.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice - Name: NeMo.Intf.65.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.65.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount - Name: NeMo.Intf.65.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.65.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MgtStats - Name: NeMo.Intf.65.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleConfig - Name: NeMo.Intf.65.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleStats - Name: NeMo.Intf.65.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Neighbour - Name: NeMo.Intf.65.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.RssiEventing - Name: NeMo.Intf.65.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError - Name: NeMo.Intf.65.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.65.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.65.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.DriverConfig - Name: NeMo.Intf.65.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Addr - Name: NeMo.Intf.65.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Addr - Name: NeMo.Intf.65.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Route - Name: NeMo.Intf.65.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Route - Name: NeMo.Intf.65.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StatMon - Name: NeMo.Intf.65.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap2g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0 - Name: NeMo.Intf.42\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ULIntf - Name: NeMo.Intf.42.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.LLIntf - Name: NeMo.Intf.42.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Query - Name: NeMo.Intf.42.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211r - Name: NeMo.Intf.42.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211u - Name: NeMo.Intf.42.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Security - Name: NeMo.Intf.42.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.WPS - Name: NeMo.Intf.42.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering - Name: NeMo.Intf.42.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.Entry - Name: NeMo.Intf.42.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.42.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering - Name: NeMo.Intf.42.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.42.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs - Name: NeMo.Intf.42.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.42.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.HotSpot2 - Name: NeMo.Intf.42.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice - Name: NeMo.Intf.42.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.42.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount - Name: NeMo.Intf.42.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.42.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MgtStats - Name: NeMo.Intf.42.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleConfig - Name: NeMo.Intf.42.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleStats - Name: NeMo.Intf.42.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Neighbour - Name: NeMo.Intf.42.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.RssiEventing - Name: NeMo.Intf.42.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError - Name: NeMo.Intf.42.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.42.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.42.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.DriverConfig - Name: NeMo.Intf.42.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Addr - Name: NeMo.Intf.42.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Addr - Name: NeMo.Intf.42.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Route - Name: NeMo.Intf.42.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Route - Name: NeMo.Intf.42.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StatMon - Name: NeMo.Intf.42.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap2g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1 - Name: NeMo.Intf.43\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ULIntf - Name: NeMo.Intf.43.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.LLIntf - Name: NeMo.Intf.43.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Query - Name: NeMo.Intf.43.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211r - Name: NeMo.Intf.43.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211u - Name: NeMo.Intf.43.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Security - Name: NeMo.Intf.43.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.WPS - Name: NeMo.Intf.43.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering - Name: NeMo.Intf.43.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.Entry - Name: NeMo.Intf.43.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.43.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering - Name: NeMo.Intf.43.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.43.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs - Name: NeMo.Intf.43.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.43.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.HotSpot2 - Name: NeMo.Intf.43.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice - Name: NeMo.Intf.43.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.43.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount - Name: NeMo.Intf.43.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.43.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MgtStats - Name: NeMo.Intf.43.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleConfig - Name: NeMo.Intf.43.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleStats - Name: NeMo.Intf.43.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Neighbour - Name: NeMo.Intf.43.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.RssiEventing - Name: NeMo.Intf.43.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError - Name: NeMo.Intf.43.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.43.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.43.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.DriverConfig - Name: NeMo.Intf.43.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Addr - Name: NeMo.Intf.43.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Addr - Name: NeMo.Intf.43.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Route - Name: NeMo.Intf.43.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Route - Name: NeMo.Intf.43.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StatMon - Name: NeMo.Intf.43.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap5g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0 - Name: NeMo.Intf.66\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ULIntf - Name: NeMo.Intf.66.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.LLIntf - Name: NeMo.Intf.66.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Query - Name: NeMo.Intf.66.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211r - Name: NeMo.Intf.66.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211u - Name: NeMo.Intf.66.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Security - Name: NeMo.Intf.66.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.WPS - Name: NeMo.Intf.66.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering - Name: NeMo.Intf.66.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.Entry - Name: NeMo.Intf.66.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.66.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering - Name: NeMo.Intf.66.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.66.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs - Name: NeMo.Intf.66.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.66.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.HotSpot2 - Name: NeMo.Intf.66.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice - Name: NeMo.Intf.66.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.66.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount - Name: NeMo.Intf.66.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.66.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MgtStats - Name: NeMo.Intf.66.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleConfig - Name: NeMo.Intf.66.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleStats - Name: NeMo.Intf.66.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Neighbour - Name: NeMo.Intf.66.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.RssiEventing - Name: NeMo.Intf.66.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError - Name: NeMo.Intf.66.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.66.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.66.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.DriverConfig - Name: NeMo.Intf.66.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Addr - Name: NeMo.Intf.66.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Addr - Name: NeMo.Intf.66.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Route - Name: NeMo.Intf.66.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Route - Name: NeMo.Intf.66.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StatMon - Name: NeMo.Intf.66.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap5g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0 - Name: NeMo.Intf.44\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ULIntf - Name: NeMo.Intf.44.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.LLIntf - Name: NeMo.Intf.44.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Query - Name: NeMo.Intf.44.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211r - Name: NeMo.Intf.44.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211u - Name: NeMo.Intf.44.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Security - Name: NeMo.Intf.44.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.WPS - Name: NeMo.Intf.44.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering - Name: NeMo.Intf.44.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.Entry - Name: NeMo.Intf.44.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.44.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering - Name: NeMo.Intf.44.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.44.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs - Name: NeMo.Intf.44.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.44.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.HotSpot2 - Name: NeMo.Intf.44.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice - Name: NeMo.Intf.44.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.44.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount - Name: NeMo.Intf.44.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.44.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MgtStats - Name: NeMo.Intf.44.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleConfig - Name: NeMo.Intf.44.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleStats - Name: NeMo.Intf.44.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Neighbour - Name: NeMo.Intf.44.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.RssiEventing - Name: NeMo.Intf.44.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError - Name: NeMo.Intf.44.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.44.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.44.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.DriverConfig - Name: NeMo.Intf.44.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Addr - Name: NeMo.Intf.44.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Addr - Name: NeMo.Intf.44.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Route - Name: NeMo.Intf.44.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Route - Name: NeMo.Intf.44.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StatMon - Name: NeMo.Intf.44.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap5g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1 - Name: NeMo.Intf.45\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ULIntf - Name: NeMo.Intf.45.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.LLIntf - Name: NeMo.Intf.45.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Query - Name: NeMo.Intf.45.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211r - Name: NeMo.Intf.45.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211u - Name: NeMo.Intf.45.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Security - Name: NeMo.Intf.45.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.WPS - Name: NeMo.Intf.45.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering - Name: NeMo.Intf.45.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.Entry - Name: NeMo.Intf.45.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.45.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering - Name: NeMo.Intf.45.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.45.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs - Name: NeMo.Intf.45.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.45.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.HotSpot2 - Name: NeMo.Intf.45.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice - Name: NeMo.Intf.45.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.45.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount - Name: NeMo.Intf.45.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.45.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MgtStats - Name: NeMo.Intf.45.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleConfig - Name: NeMo.Intf.45.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleStats - Name: NeMo.Intf.45.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Neighbour - Name: NeMo.Intf.45.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.RssiEventing - Name: NeMo.Intf.45.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError - Name: NeMo.Intf.45.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.45.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.45.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.DriverConfig - Name: NeMo.Intf.45.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Addr - Name: NeMo.Intf.45.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Addr - Name: NeMo.Intf.45.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Route - Name: NeMo.Intf.45.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Route - Name: NeMo.Intf.45.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StatMon - Name: NeMo.Intf.45.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vap6g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0 - Name: NeMo.Intf.46\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - void getStationStats()\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ULIntf - Name: NeMo.Intf.46.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.LLIntf - Name: NeMo.Intf.46.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Query - Name: NeMo.Intf.46.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211r - Name: NeMo.Intf.46.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211u - Name: NeMo.Intf.46.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Security - Name: NeMo.Intf.46.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.WPS - Name: NeMo.Intf.46.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering - Name: NeMo.Intf.46.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.Entry - Name: NeMo.Intf.46.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.46.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering - Name: NeMo.Intf.46.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.46.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs - Name: NeMo.Intf.46.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.46.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.HotSpot2 - Name: NeMo.Intf.46.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice - Name: NeMo.Intf.46.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only\n  - Retransmissions (type: uint32)\n      Attributes: read_only\n      Validator: {'min': '0', 'max': '100'}\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - Inactive (type: uint32)\n      Attributes: read_only\n  - RxPacketCount (type: uint32)\n      Attributes: read_only\n  - TxPacketCount (type: uint32)\n      Attributes: read_only\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only\n  - TxBytes (type: uint64)\n      Attributes: read_only\n  - RxBytes (type: uint64)\n      Attributes: read_only\n  - UplinkMCS (type: uint32)\n      Attributes: read_only\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedVhtMCS (type: string)\n      Attributes: read_only\n  - SupportedHeMCS (type: string)\n      Attributes: read_only\n  - SupportedHe160MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.46.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount - Name: NeMo.Intf.46.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.46.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MgtStats - Name: NeMo.Intf.46.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleConfig - Name: NeMo.Intf.46.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleStats - Name: NeMo.Intf.46.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Neighbour - Name: NeMo.Intf.46.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.RssiEventing - Name: NeMo.Intf.46.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError - Name: NeMo.Intf.46.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.46.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.46.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.DriverConfig - Name: NeMo.Intf.46.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Addr - Name: NeMo.Intf.46.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Addr - Name: NeMo.Intf.46.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Route - Name: NeMo.Intf.46.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Route - Name: NeMo.Intf.46.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StatMon - Name: NeMo.Intf.46.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.veip0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0 - Name: NeMo.Intf.2\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - RegistrationID (type: string)\n      Validator: {'max': '36'}\n  - VeipPptpUni (type: bool)\n      Attributes: persistent\n  - MaxBitRateSupported (type: int32)\n  - SignalRxPower (type: int32)\n      Attributes: read_only, volatile\n  - SignalTxPower (type: int32)\n      Attributes: read_only, volatile\n  - Temperature (type: int16)\n      Attributes: read_only, volatile\n  - Voltage (type: uint16)\n      Attributes: read_only, volatile\n  - Bias (type: uint32)\n      Attributes: read_only, volatile\n  - PonMode (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'GPON', 'XGS-PON']\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - EquipmentId (type: string)\n      Attributes: read_only\n      Validator: {'max': '20'}\n  - VendorId (type: string)\n      Attributes: read_only\n      Validator: {'max': '4'}\n  - VendorProductCode (type: uint16)\n      Attributes: read_only\n  - PonId (type: string)\n      Attributes: read_only\n      Validator: {'max': '7'}\n  - ONTSoftwareVersion0 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersion1 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersionActive (type: uint8)\n      Attributes: read_only\n  - LowerOpticalThreshold (type: int32)\n      Attributes: read_only\n  - UpperOpticalThreshold (type: int32)\n      Attributes: read_only\n  - LowerTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - UpperTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Normal', 'Custom']\n  - CustomVendorID (type: string)\n      Attributes: persistent\n      Validator: {'max': '4'}\n  - CustomEquipmentID (type: string)\n      Attributes: persistent\n      Validator: {'max': '20'}\n  - VLANs (type: string)\n      Attributes: read_only\n      Validator: {'max': '128'}\n  - RogueOnu (type: bool)\n      Attributes: read_only\n  - RogueOnuCount (type: uint32)\n      Attributes: read_only\n  - RogueOnuLastOccurence (type: date_time)\n      Attributes: read_only\n  - OnuState (type: string)\n      Attributes: read_only\n  - OnuId (type: uint16)\n      Attributes: read_only\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.ULIntf - Name: NeMo.Intf.2.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.LLIntf - Name: NeMo.Intf.2.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.Query - Name: NeMo.Intf.2.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Addr - Name: NeMo.Intf.2.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Addr - Name: NeMo.Intf.2.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Route - Name: NeMo.Intf.2.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Route - Name: NeMo.Intf.2.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.StatMon - Name: NeMo.Intf.2.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data - Name: NeMo.Intf.9\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.ULIntf - Name: NeMo.Intf.9.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.LLIntf - Name: NeMo.Intf.9.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.Query - Name: NeMo.Intf.9.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Addr - Name: NeMo.Intf.9.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Addr - Name: NeMo.Intf.9.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Route - Name: NeMo.Intf.9.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Route - Name: NeMo.Intf.9.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.QoS - Name: NeMo.Intf.9.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.StatMon - Name: NeMo.Intf.9.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi - Name: NeMo.Intf.10\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.ULIntf - Name: NeMo.Intf.10.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.LLIntf - Name: NeMo.Intf.10.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.Query - Name: NeMo.Intf.10.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Addr - Name: NeMo.Intf.10.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Addr - Name: NeMo.Intf.10.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Route - Name: NeMo.Intf.10.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Route - Name: NeMo.Intf.10.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.QoS - Name: NeMo.Intf.10.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.StatMon - Name: NeMo.Intf.10.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.voip - Name: NeMo.Intf.31\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.ULIntf - Name: NeMo.Intf.31.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.LLIntf - Name: NeMo.Intf.31.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.Query - Name: NeMo.Intf.31.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vpnc_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpnc_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vpns_default.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_default\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.vpns_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds5g0priv1_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wds6g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.Intf.wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan - Name: NeMo.Intf.33\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - PINCode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - DNSServers (type: string)\n  - IPRouter (type: string)\n  - LocalIPAddress (type: string)\n  - ConnectionStatus (type: string)\n      Validator: ['NotPresent', 'Unconfigured', 'Connecting', 'Connected', 'PendingDisconnect', 'Disconnecting', 'Disconnected']\n  - SignalStrength (type: uint8)\n  - Technology (type: string)\n      Validator: ['none', 'gprs', 'edge', 'umts', 'hsdpa', 'hsupa', 'hspa', 'lte']\n  - Manufacturer (type: string)\n  - Model (type: string)\n  - PinType (type: string)\n  - PinRetryCount (type: int32)\n  - PukRetryCount (type: int32)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n  - void configureConnection((string apn), (string username), (string Password))\n  - string getPinType()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.ULIntf - Name: NeMo.Intf.33.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.LLIntf - Name: NeMo.Intf.33.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.Query - Name: NeMo.Intf.33.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Addr - Name: NeMo.Intf.33.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Addr - Name: NeMo.Intf.33.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Route - Name: NeMo.Intf.33.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Route - Name: NeMo.Intf.33.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router - Name: NeMo.Intf.33.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router.Option - Name: NeMo.Intf.33.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NeMo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NetDev.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NetDev\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/NetMaster.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/OUI.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OUI\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/ObjectMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ObjectMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/OopsTracker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OopsTracker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/OrangeDynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .OrangeDynDNS - Name: .OrangeDynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Connecting', 'Authenticating', 'Updated', 'Error_Misconfigured', 'Error', 'Disabled']\n  - Alias (type: string)\n      Attributes: persistent\n  - LastError (type: string)\n      Attributes: read_only\n      Validator: ['NO_ERROR', 'MISCONFIGURATION_ERROR', 'DNS_ERROR', 'CONNECTION_ERROR', 'AUTHENTICATION_ERROR', 'TIMEOUT_ERROR', 'PROTOCOL_ERROR']\n  - WassupServer (type: string)\n      Attributes: persistent\n  - HostnameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - map refreshHostname()\n  - bool setHostname((string hostname), (bool enable))\n  - map getHostname()\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: OrangeDynDNS.Hostname - Name: OrangeDynDNS.Hostname\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Registered', 'UpdateNeeded', 'Updating', 'Error', 'Disabled']\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Address (type: string)\n      Attributes: read_only, persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeDynDNS.Server - Name: OrangeDynDNS.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - ServiceName (type: string)\n      Attributes: persistent\n  - ServerAddress (type: string)\n      Attributes: persistent\n  - ServerPort (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - CACertificate (type: string)\n      Attributes: read_only, persistent\n  - ClientCertificate (type: string)\n      Attributes: read_only, persistent\n  - PrivateKey (type: string)\n      Attributes: read_only, persistent\n  - CheckInterval (type: uint32)\n      Attributes: persistent\n  - RetryInterval (type: uint32)\n      Attributes: persistent\n  - MaxRetries (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/OrangeRemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Plugins (type: string)\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/OrangeServices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/PPP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PPP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Pass.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Pass\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/PasswordRecovery.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Phonebook.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/PnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ServerURL (type: string)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: persistent\n  - ValidationDomain (type: string)\n  - WakeUpPort (type: uint32)\n      Attributes: persistent\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/PowerManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Probe.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - FileSizeCritical (type: bool)\n  - firstXferMaxTimer (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - xferTimeVariation (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - MaxSize (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '50000'}\n  - Anonymization (type: bool)\n      Attributes: persistent\n  - ExternalID (type: string)\n      Attributes: persistent\n  - Tags (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n  - bool addTag(string tag)\n  - bool removeTag(string tag)\n  - bool clearTags()\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: Probe.Configuration.Type - Name: Probe.Configuration.Type\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only, persistent\n  - ID (type: int32)\n      Attributes: read_only, persistent\n  - Timestamp (type: date_time)\n      Attributes: read_only, persistent\n  - Interval (type: int32)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Process.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"error\": 13,\n    \"description\": \"Permission denied\",\n    \"info\": \"Process\"\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/ProcessMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ProcessMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Profiles.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/QueueManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"QueueManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/RemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/RouterAdvertisement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"RouterAdvertisement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SAHPairing.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SSLEServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSLEServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SSW.FeatureConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: SSW.FeatureConfig - Name: SSW.FeatureConfig\n == FUNCTIONS:\n  - void startEventing((string MAC))\n  - void stopEventing((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving - Name: SSW.FeatureConfig.EnergySaving\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - FeaturesRunning (type: string)\n      Attributes: read_only\n  - MaxStatsLength (type: uint32)\n      Attributes: persistent\n  - RssiThreshold (type: int32)\n      Attributes: persistent\n  - DeltaThreshold (type: uint8)\n      Attributes: persistent\n  - AirtimeThreshold (type: uint32)\n      Attributes: persistent\n  - ModesEnabled (type: string)\n      Attributes: persistent\n  - AntennaConfiguration (type: string)\n      Attributes: persistent\n      Validator: ['Divided', 'Minimum']\n == FUNCTIONS:\n  - void getStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving.Stats - Name: SSW.FeatureConfig.EnergySaving.Stats\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrActivations (type: uint32)\n      Attributes: read_only\n  - LastUpTime (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AddOnMode - Name: SSW.FeatureConfig.AddOnMode\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Invalid', 'Disabled', 'Enabled', 'Active', 'ActiveNotConnected']\n  - LastStateChange (type: date_time)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - AddonMACAddress (type: string)\n      Attributes: read_only\n  - ActiveTimeout (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1'}\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.LongStats - Name: SSW.FeatureConfig.LongStats\n == PARAMETERS:\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getLongHistoryStats()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SSW.Steering.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: SSW.Steering - Name: SSW.Steering\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Up']\n == FUNCTIONS:\n  - void getUplinkInfo((string MAC))\n  - void getRoamInfo((string MAC))\n  - stationInfo getStationStats((string MAC))\n  - void getAllStationsCompactInfo()\n  - void getStationAssocLog((string MAC))\n  - list getAllStations((string ap))\n  - stationsStandards getAllStationsStandards((string ap))\n  - bool deleteStationInfo((string MAC))\n  - void setModeConfig((string mode), (string targetBroker))\n  - void getTopologyScoreInfo()\n\n=======================================================================\nOBJECT: SSW.Steering.MasterConfig - Name: SSW.Steering.MasterConfig\n == PARAMETERS:\n  - SyncEnableField (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList - Name: SSW.Steering.ExceptionList\n == PARAMETERS:\n  - MaxNumberOfExceptions (type: uint32)\n      Attributes: persistent\n  - DeployExceptions (type: bool)\n      Attributes: persistent\n  - VideoAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n  - SlaveAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n == FUNCTIONS:\n  - void createGmapAutoException(string query, (string target), (string type), (bool persistent), (string key))\n  - void deleteGmapAutoExceptionByKey(string key)\n  - void deleteGmapAutoExceptionByQuery(string query)\n  - void createException((string MAC), (uint8 mask), (string target), (string type))\n  - void deleteException((string MAC), (uint8 mask))\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList.Station - Name: SSW.Steering.ExceptionList.Station\n == PARAMETERS:\n  - MAC (type: string)\n      Attributes: persistent\n  - Mask (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '6'}\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Force', 'ForceNoSteer']\n  - Target (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade - Name: SSW.Steering.QoSUpgrade\n == PARAMETERS:\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['ftos', 'wmm-mark']\n == FUNCTIONS:\n  - void createRule(string mac, (uint8 tid))\n  - void deleteRule(string mac)\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules - Name: SSW.Steering.QoSUpgrade.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - TID (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '7'}\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules.Station - Name: SSW.Steering.QoSUpgrade.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - IPv4Address (type: string)\n  - IPv6Address (type: string)\n\n=======================================================================\nOBJECT: SSW.Steering.Policy - Name: SSW.Steering.Policy\n == PARAMETERS:\n  - BandSteeringStatus (type: bool)\n      Attributes: read_only\n  - ClientSteeringStatus (type: bool)\n      Attributes: read_only\n  - NrHandovers (type: uint32)\n      Attributes: read_only\n  - NrHandbacks (type: uint32)\n      Attributes: read_only\n  - NrFalseHandovers (type: uint32)\n      Attributes: read_only\n  - NrTriggers (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n  - NrFail (type: uint32)\n      Attributes: read_only\n  - NrAbort (type: uint32)\n      Attributes: read_only\n  - NrFastFail (type: uint32)\n      Attributes: read_only\n  - AvgReconnectTime (type: uint32)\n      Attributes: read_only\n  - AvgSteeringTime (type: uint32)\n      Attributes: read_only\n  - NrReconnectMeasurements (type: uint32)\n      Attributes: read_only\n  - AvgFailReconnectTime (type: uint32)\n      Attributes: read_only\n  - MaxSteerReached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice - Name: SSW.Steering.ExternalDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice.Station - Name: SSW.Steering.ExternalDevice.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SSW.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSW\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SambaService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Scheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Screen.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n=======================================================================\nOBJECT: Screen.Sound - Name: Screen.Sound\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SpeedTest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/SrvInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SrvInterface\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/StorageService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Time.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/ToD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ToD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/TopologyDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - UploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UDPEchoConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UDPEchoConfig\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UPnP-IGD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UPnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UPnP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/USBHosts.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/Upgrade.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Upgrade\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UplinkMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UserInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/UserManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/VPN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .VPN - Name: .VPN\n == PARAMETERS:\n  - ServerEnable (type: bool)\n      Attributes: persistent\n  - ServerNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - Site2SiteEnable (type: bool)\n      Attributes: persistent\n  - Site2SiteNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - IPsecConfigurationNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PPPConfigurationNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setServer(string server, (bool enable), (variant settings))\n  - void deleteServer(string server)\n  - void getServer(string server, (variant settings))\n  - void listServers((list servers))\n  - void setServerClient(string server, string client, (bool enable), (variant settings))\n  - void deleteServerClient(string server, string client)\n  - void getServerClient(string server, string client, (variant settings))\n  - void listServerClients(string server, (list clients))\n  - void getServersConfig((variant config))\n  - void disconnectServerClient(string server, string client)\n  - void enableServer((bool enable), (bool enabled))\n  - void setSite2Site(string name, (bool enable), (variant settings))\n  - void deleteSite2Site(string name)\n  - void getSite2Site(string name, (variant settings))\n  - void listSite2Site((list names))\n  - void getSite2SitesConfig((variant config))\n  - void disconnectSite2Site(string name)\n  - void enableSite2Site((bool enable), (bool enabled))\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - void setIPsecConfiguration(string profile, (variant settings))\n  - void deleteIPsecConfiguration(string profile)\n  - void getIPsecConfiguration(string profile, (variant settings))\n  - void listIPsecConfigurations((list profiles))\n  - void setPPPConfiguration(string profile, (variant settings))\n  - void deletePPPConfiguration(string profile)\n  - void getPPPConfiguration(string profile, (variant settings))\n  - void listPPPConfigurations((list profiles))\n\n=======================================================================\nOBJECT: VPN.Server - Name: VPN.Server\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - ListenPort (type: uint32)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - InterfaceIPAddress (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - DHCPPool (type: string)\n      Attributes: persistent\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - MaxConnections (type: uint32)\n      Attributes: persistent\n  - BlockSIP (type: bool)\n      Attributes: persistent\n  - InternetAccessMode (type: string)\n      Attributes: persistent\n      Validator: ['THROUGHVPN', 'DIRECTLY', 'NOACCESS']\n  - MaxInstancesOfClients (type: uint32)\n      Attributes: read_only, persistent\n  - PPPConfiguration (type: string)\n      Attributes: persistent\n  - ClientNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VPN.Server.Client - Name: VPN.Server.Client\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - UniqueIdentifier (type: string)\n      Attributes: read_only, persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Misconfigured', 'Error']\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Connected (type: bool)\n      Attributes: read_only\n  - ConnectTimestamp (type: date_time)\n      Attributes: read_only\n  - ConnectionDuration (type: uint32)\n      Attributes: read_only\n  - LastConnectTimestamp (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnectionDuration (type: uint32)\n      Attributes: read_only, persistent\n  - PublicIPAddress (type: string)\n      Attributes: read_only\n  - Port (type: uint32)\n      Attributes: read_only\n  - PrivateIPAddress (type: string)\n      Attributes: read_only\n  - PPPInterface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VPN.Site2Site - Name: VPN.Site2Site\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - WANInterface (type: string)\n      Attributes: persistent\n  - WANInterfaceIPAddress (type: string)\n      Attributes: read_only\n  - LANInterface (type: string)\n      Attributes: persistent\n  - LANInterfaceSubnet (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPsecConnectionMode (type: string)\n      Attributes: persistent\n      Validator: ['Automatic']\n  - IPsecLocalID (type: string)\n      Attributes: persistent\n  - IPsecRemoteID (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - RemoteHostIPAddress (type: string)\n      Attributes: read_only\n  - RemoteHostSubnet (type: string)\n      Attributes: persistent\n  - RemoteHostInterval (type: uint32)\n      Attributes: persistent\n  - Connected (type: bool)\n      Attributes: read_only\n  - ConnectTimestamp (type: date_time)\n      Attributes: read_only\n  - ConnectionDuration (type: uint32)\n      Attributes: read_only\n  - LastConnectTimestamp (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnectionDuration (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: VPN.IPsecConfiguration - Name: VPN.IPsecConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Transport', 'Tunnel']\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['ESP', 'AH']\n  - IKEVersion (type: string)\n      Attributes: persistent\n      Validator: ['IKEv1', 'IKEv2', 'IKEv1v2']\n  - IKEv2AllowedEncryptionAlgorithm (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedPseudoRandomFunctions (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedEncryptionAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEPhase1Duration (type: uint32)\n      Attributes: persistent\n  - IKEPhase2Duration (type: uint32)\n      Attributes: persistent\n  - IKEDeadPeerDetectionTimeout (type: uint32)\n      Attributes: persistent\n  - IKEIDType (type: string)\n      Attributes: persistent\n      Validator: ['ID_TYPE_UNSPEC', 'ID_TYPE_FQDN']\n\n=======================================================================\nOBJECT: VPN.PPPConfiguration - Name: VPN.PPPConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/VoWifi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/VoiceActivation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceActivation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/VoiceService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WLanScheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WOL.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WOLProxy.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WOLProxy\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WatchDog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WatchDog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WebuiupgradeService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/WiFiBCM.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiBCM\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/_ALL MODULES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: . - Name: .\n\n=======================================================================\nOBJECT: .UplinkMonitor - Name: .UplinkMonitor\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .VoWifi - Name: .VoWifi\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n == FUNCTIONS:\n  - void configureBusyCall((uint8 pollingInterval), (uint8 pollingMultiple), (uint8 busyThreshold))\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ServerURL (type: string)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: persistent\n  - ValidationDomain (type: string)\n  - WakeUpPort (type: uint32)\n      Attributes: persistent\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - UploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .OrangeDynDNS - Name: .OrangeDynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Connecting', 'Authenticating', 'Updated', 'Error_Misconfigured', 'Error', 'Disabled']\n  - Alias (type: string)\n      Attributes: persistent\n  - LastError (type: string)\n      Attributes: read_only\n      Validator: ['NO_ERROR', 'MISCONFIGURATION_ERROR', 'DNS_ERROR', 'CONNECTION_ERROR', 'AUTHENTICATION_ERROR', 'TIMEOUT_ERROR', 'PROTOCOL_ERROR']\n  - WassupServer (type: string)\n      Attributes: persistent\n  - HostnameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - map refreshHostname()\n  - bool setHostname((string hostname), (bool enable))\n  - map getHostname()\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: OrangeDynDNS.Hostname - Name: OrangeDynDNS.Hostname\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Registered', 'UpdateNeeded', 'Updating', 'Error', 'Disabled']\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Address (type: string)\n      Attributes: read_only, persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeDynDNS.Server - Name: OrangeDynDNS.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - ServiceName (type: string)\n      Attributes: persistent\n  - ServerAddress (type: string)\n      Attributes: persistent\n  - ServerPort (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - CACertificate (type: string)\n      Attributes: read_only, persistent\n  - ClientCertificate (type: string)\n      Attributes: read_only, persistent\n  - PrivateKey (type: string)\n      Attributes: read_only, persistent\n  - CheckInterval (type: uint32)\n      Attributes: persistent\n  - RetryInterval (type: uint32)\n      Attributes: persistent\n  - MaxRetries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .MSS - Name: .MSS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Unconfigured', 'Master', 'Slave', 'Autoconfigure']\n  - PreviousMode (type: string)\n      Attributes: read_only, persistent\n      Validator: ['None', 'Master', 'Slave']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'MasterStarting', 'MasterDisconnected', 'Master', 'SlaveScanning', 'SlaveStarting', 'SlaveWaiting', 'Slave', 'Error', 'Selecting', 'WaitingForNetwork']\n  - NetworkId (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void enableMSS(bool enable)\n  - void setMaster()\n  - void setSlave()\n  - void setAutoconfiguration()\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: MSS.Debug.ErrorLog - Name: MSS.Debug.ErrorLog\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - ErrorMessage (type: string)\n      Attributes: read_only, persistent\n  - State (type: string)\n      Attributes: read_only, persistent\n  - LastEvent (type: string)\n      Attributes: read_only, persistent\n  - TimeOccurred (type: date_time)\n      Attributes: read_only, persistent\n  - MACAddress (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: read_only\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - variant getDebugInformation((bool filedesc), (debug_options_t options))\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n=======================================================================\nOBJECT: .DNSSD - Name: .DNSSD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PID (type: int32)\n      Attributes: read_only\n  - ScanNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - AdvertiseNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void enableAvahi(bool enable)\n  - void startScanning(string key, string type, (uint32 duration), (string protocol))\n  - void stopScanning(string key)\n  - void deleteScan(string key)\n  - void startAdvertise(string name, uint16 port, string type, (string protocol), (list text))\n  - void stopAdvertise(string name)\n  - void lookup(string type, (string protocol))\n  - bool resolve(string type, string protocol, int interfaceIndex, string name)\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Scan.Result - Name: DNSSD.Scan.Result\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Removed (type: bool)\n      Attributes: read_only\n  - InterfaceIndex (type: string)\n      Attributes: read_only\n  - Domain (type: string)\n      Attributes: read_only\n  - IPAddress (type: string)\n      Attributes: read_only\n  - Hostname (type: string)\n      Attributes: read_only\n  - Port (type: uint16)\n      Attributes: read_only\n  - Time (type: date_time)\n      Attributes: read_only\n  - Text (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: DNSSD.Advertise.Text - Name: DNSSD.Advertise.Text\n == PARAMETERS:\n  - Key (type: string)\n  - Value (type: string)\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - FileSizeCritical (type: bool)\n  - firstXferMaxTimer (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - xferTimeVariation (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - MaxSize (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '50000'}\n  - Anonymization (type: bool)\n      Attributes: persistent\n  - ExternalID (type: string)\n      Attributes: persistent\n  - Tags (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n  - bool addTag(string tag)\n  - bool removeTag(string tag)\n  - bool clearTags()\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: Probe.Configuration.Type - Name: Probe.Configuration.Type\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only, persistent\n  - ID (type: int32)\n      Attributes: read_only, persistent\n  - Timestamp (type: date_time)\n      Attributes: read_only, persistent\n  - Interval (type: int32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n=======================================================================\nOBJECT: Screen.Sound - Name: Screen.Sound\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n=======================================================================\nOBJECT: .SambaService - Name: .SambaService\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwarding (type: bool)\n      Attributes: read_only\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: .VPN - Name: .VPN\n == PARAMETERS:\n  - ServerEnable (type: bool)\n      Attributes: persistent\n  - ServerNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - Site2SiteEnable (type: bool)\n      Attributes: persistent\n  - Site2SiteNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - IPsecConfigurationNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PPPConfigurationNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setServer(string server, (bool enable), (variant settings))\n  - void deleteServer(string server)\n  - void getServer(string server, (variant settings))\n  - void listServers((list servers))\n  - void setServerClient(string server, string client, (bool enable), (variant settings))\n  - void deleteServerClient(string server, string client)\n  - void getServerClient(string server, string client, (variant settings))\n  - void listServerClients(string server, (list clients))\n  - void getServersConfig((variant config))\n  - void disconnectServerClient(string server, string client)\n  - void enableServer((bool enable), (bool enabled))\n  - void setSite2Site(string name, (bool enable), (variant settings))\n  - void deleteSite2Site(string name)\n  - void getSite2Site(string name, (variant settings))\n  - void listSite2Site((list names))\n  - void getSite2SitesConfig((variant config))\n  - void disconnectSite2Site(string name)\n  - void enableSite2Site((bool enable), (bool enabled))\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - void setIPsecConfiguration(string profile, (variant settings))\n  - void deleteIPsecConfiguration(string profile)\n  - void getIPsecConfiguration(string profile, (variant settings))\n  - void listIPsecConfigurations((list profiles))\n  - void setPPPConfiguration(string profile, (variant settings))\n  - void deletePPPConfiguration(string profile)\n  - void getPPPConfiguration(string profile, (variant settings))\n  - void listPPPConfigurations((list profiles))\n\n=======================================================================\nOBJECT: VPN.Server - Name: VPN.Server\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - ListenPort (type: uint32)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - InterfaceIPAddress (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - DHCPPool (type: string)\n      Attributes: persistent\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - MaxConnections (type: uint32)\n      Attributes: persistent\n  - BlockSIP (type: bool)\n      Attributes: persistent\n  - InternetAccessMode (type: string)\n      Attributes: persistent\n      Validator: ['THROUGHVPN', 'DIRECTLY', 'NOACCESS']\n  - MaxInstancesOfClients (type: uint32)\n      Attributes: read_only, persistent\n  - PPPConfiguration (type: string)\n      Attributes: persistent\n  - ClientNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VPN.Server.Client - Name: VPN.Server.Client\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - UniqueIdentifier (type: string)\n      Attributes: read_only, persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Misconfigured', 'Error']\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Connected (type: bool)\n      Attributes: read_only\n  - ConnectTimestamp (type: date_time)\n      Attributes: read_only\n  - ConnectionDuration (type: uint32)\n      Attributes: read_only\n  - LastConnectTimestamp (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnectionDuration (type: uint32)\n      Attributes: read_only, persistent\n  - PublicIPAddress (type: string)\n      Attributes: read_only\n  - Port (type: uint32)\n      Attributes: read_only\n  - PrivateIPAddress (type: string)\n      Attributes: read_only\n  - PPPInterface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VPN.Site2Site - Name: VPN.Site2Site\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - WANInterface (type: string)\n      Attributes: persistent\n  - WANInterfaceIPAddress (type: string)\n      Attributes: read_only\n  - LANInterface (type: string)\n      Attributes: persistent\n  - LANInterfaceSubnet (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPsecConnectionMode (type: string)\n      Attributes: persistent\n      Validator: ['Automatic']\n  - IPsecLocalID (type: string)\n      Attributes: persistent\n  - IPsecRemoteID (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - RemoteHostIPAddress (type: string)\n      Attributes: read_only\n  - RemoteHostSubnet (type: string)\n      Attributes: persistent\n  - RemoteHostInterval (type: uint32)\n      Attributes: persistent\n  - Connected (type: bool)\n      Attributes: read_only\n  - ConnectTimestamp (type: date_time)\n      Attributes: read_only\n  - ConnectionDuration (type: uint32)\n      Attributes: read_only\n  - LastConnectTimestamp (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnectionDuration (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: VPN.IPsecConfiguration - Name: VPN.IPsecConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Transport', 'Tunnel']\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['ESP', 'AH']\n  - IKEVersion (type: string)\n      Attributes: persistent\n      Validator: ['IKEv1', 'IKEv2', 'IKEv1v2']\n  - IKEv2AllowedEncryptionAlgorithm (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedPseudoRandomFunctions (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedEncryptionAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEPhase1Duration (type: uint32)\n      Attributes: persistent\n  - IKEPhase2Duration (type: uint32)\n      Attributes: persistent\n  - IKEDeadPeerDetectionTimeout (type: uint32)\n      Attributes: persistent\n  - IKEIDType (type: string)\n      Attributes: persistent\n      Validator: ['ID_TYPE_UNSPEC', 'ID_TYPE_FQDN']\n\n=======================================================================\nOBJECT: VPN.PPPConfiguration - Name: VPN.PPPConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - FullDateEnable (type: bool)\n      Attributes: persistent\n  - NoAuthUse (type: bool)\n      Attributes: persistent\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool cancelDiagnostics()\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: AutoDiag.HeaderField - Name: AutoDiag.HeaderField\n == PARAMETERS:\n  - DataType (type: string)\n      Attributes: persistent\n      Validator: ['Value', 'Path']\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Data (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n\n=======================================================================\nOBJECT: AutoDiag.Interface - Name: AutoDiag.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: .Domino - Name: .Domino\n == FUNCTIONS:\n  - list getDominoStatus()\n  - bool enableBackupFeature((bool enable))\n  - bool enableDominoComponent((bool enable))\n  - bool getWWANStatus((string LinkState), (string MACAddress), (string Protocol), (string ConnectionState), (string IPAddress), (string RemoteGateway), (string DNSServers))\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Intf.ConnectionContext - Name: Domino.Intf.ConnectionContext\n == FUNCTIONS:\n  - bool setAdminPassword((string password))\n  - bool resetAdminPassword((string currpwd), (string newpwd))\n\n=======================================================================\nOBJECT: Domino.Intf.SIM - Name: Domino.Intf.SIM\n == FUNCTIONS:\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n\n=======================================================================\nOBJECT: Domino.Airbox - Name: Domino.Airbox\n == PARAMETERS:\n  - SubscriptionStatus (type: string)\n      Validator: ['Unknown', 'Subscribed', 'NotSubscribed']\n\n=======================================================================\nOBJECT: Domino.Airbox.Service - Name: Domino.Airbox.Service\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - Login (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool setServicePassword(string Password)\n\n=======================================================================\nOBJECT: Domino.Airbox.Service.ConnectedDevice - Name: Domino.Airbox.Service.ConnectedDevice\n == PARAMETERS:\n  - ProductID (type: string)\n  - VendorID (type: string)\n\n=======================================================================\nOBJECT: Domino.Airbox.WifiCloning - Name: Domino.Airbox.WifiCloning\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - LowerLayer (type: string)\n == FUNCTIONS:\n  - bool setWifiCloningEnable(bool enable)\n\n=======================================================================\nOBJECT: Domino.Airbox.Backup - Name: Domino.Airbox.Backup\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - ActivationMessageEnable (type: bool)\n      Attributes: persistent\n  - TimerPreempt (type: uint32)\n      Attributes: persistent\n  - TimerMainLoss (type: uint32)\n      Attributes: persistent\n  - DeactivationMessageEnable (type: bool)\n      Attributes: persistent\n  - ActivationMode (type: string)\n      Attributes: persistent\n      Validator: ['AUTO_FULL', 'AUTO_NOTIF', 'MANUAL']\n  - TimerMainRecover (type: uint32)\n      Attributes: persistent\n  - NumberOfUse (type: uint32)\n      Attributes: read_only, persistent\n  - ServiceStatus (type: string)\n      Validator: ['enabled', 'disabled']\n  - State (type: string)\n      Validator: ['BACKUP_STOPPED', 'BACKUP_STOPPING', 'BACKUP_STARTING', 'BACKUP_STARTED_WAIT_MANUAL', 'BACKUP_STARTED_WRONGCONFIG', 'BACKUP_STARTED_NODEVICE', 'BACKUP_STARTED', 'BACKUP_RUNNING', 'BACKUP_UNKNOWN']\n == FUNCTIONS:\n  - bool setTimerBackupParameter(string parameter, uint32 timer)\n  - bool setActivationMode(string activation)\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface - Name: Domino.Cellular.Interface\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - SupportedAccessTechnologies (type: string)\n      Attributes: read_only\n  - PreferredAccessTechnology (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'LTE', 'WCDMA']\n  - CurrentAccessTechnology (type: string)\n      Attributes: read_only, persistent\n  - RSSI (type: int32)\n      Attributes: read_only\n  - PINCheck (type: string)\n      Attributes: persistent\n  - PIN (type: string)\n      Attributes: persistent\n  - X_ORANGE-COM_PINTry (type: uint32)\n      Attributes: persistent\n  - InterferenceMode (type: string)\n      Attributes: persistent\n      Validator: ['NONE', '3G2100', '4GB7', '3G2100+4GB7']\n  - Upstream (type: bool)\n == FUNCTIONS:\n  - bool setTechnologyMode(string mode, string interference)\n  - bool setGlobalPin(string pin)\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface.USIM - Name: Domino.Cellular.Interface.USIM\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['', 'None', 'Available', 'Valid', 'Blocked', 'Error', 'New']\n  - ICCID (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool authorizeICCID((bool enable))\n\n=======================================================================\nOBJECT: Domino.Cellular.AccessPoint - Name: Domino.Cellular.AccessPoint\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n == FUNCTIONS:\n  - bool setAPSettings(string apn, string username, string password)\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.LAN - Name: NMC.LAN\n == FUNCTIONS:\n  - void addStaticRoute(string Name, string Dst, uint8 DstLen, string Gateway, (bool Enable), (int32 Priority), (uint32 MTU))\n  - void deleteStaticRoute(string Name)\n  - staticroute_t getStaticRoutes()\n\n=======================================================================\nOBJECT: NMC.LAN.IPv4Route - Name: NMC.LAN.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Validator: ['Disabled', 'Bound', 'Error']\n  - DstLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '32'}\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - MTU (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - Plugins (type: string)\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Config.global - Name: Devices.Config.global\n == PARAMETERS:\n  - MaxLanDevices (type: string)\n      Attributes: persistent\n  - MaxLanDevicesAccept (type: string)\n      Attributes: persistent\n  - MaxLanDevicesDeleteActive (type: string)\n      Attributes: persistent\n  - MaxInactiveAge (type: string)\n      Attributes: persistent\n  - DeviceTypeOrder (type: string)\n      Attributes: persistent\n  - NameOrder (type: string)\n      Attributes: persistent\n  - MDNSDisable (type: string)\n      Attributes: persistent\n  - KeepLink (type: string)\n      Attributes: persistent\n  - AcceptIntfs (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.Priority - Name: Devices.Config.Priority\n\n=======================================================================\nOBJECT: Devices.Config.WANAccess - Name: Devices.Config.WANAccess\n == PARAMETERS:\n  - BlockedReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.eth - Name: Devices.Config.eth\n == PARAMETERS:\n  - DHCPPools (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selfphysical - Name: Devices.Config.selfphysical\n == PARAMETERS:\n  - Blocked (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.selflan - Name: Devices.Config.selflan\n == PARAMETERS:\n  - Interfaces (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.events - Name: Devices.Config.events\n == PARAMETERS:\n  - CPUInterval (type: string)\n      Attributes: persistent\n  - SysInfoInterval (type: string)\n      Attributes: persistent\n  - Log (type: string)\n      Attributes: persistent\n  - LogType (type: string)\n      Attributes: persistent\n  - LogSize (type: string)\n      Attributes: persistent\n  - LogEntries (type: string)\n      Attributes: persistent\n  - LogPath (type: string)\n      Attributes: persistent\n  - DevicesInterval (type: string)\n      Attributes: persistent\n  - WANInterfaces (type: string)\n      Attributes: persistent\n  - MaxWlanStatMonStations (type: string)\n      Attributes: persistent\n  - WlanPersistentLogsInterval (type: string)\n      Attributes: persistent\n  - WlanPersistentAggregationInterval (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Config.ieee1905_gmap - Name: Devices.Config.ieee1905_gmap\n\n=======================================================================\nOBJECT: Devices.Config.mqtt - Name: Devices.Config.mqtt\n == PARAMETERS:\n  - Server (type: string)\n      Attributes: persistent\n  - AlarmTopic (type: string)\n      Attributes: persistent\n  - AddedTopic (type: string)\n      Attributes: persistent\n  - InfoChangedTopic (type: string)\n      Attributes: persistent\n  - DataChangedTopic (type: string)\n      Attributes: persistent\n  - DeleteTopic (type: string)\n      Attributes: persistent\n  - EventsEnable (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/_PROCESSES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: Process.sysbus - Name: Process.1\n\n=======================================================================\nOBJECT: Process.sysbus_watchdog - Name: Process.2\n\n=======================================================================\nOBJECT: Process.sysbus_objectmonitor - Name: Process.3\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client_led - Name: Process.4\n\n=======================================================================\nOBJECT: Process.sysbus_usermngt - Name: Process.5\n\n=======================================================================\nOBJECT: Process.sysbus_faultmonitorplugin - Name: Process.6\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6_plugin - Name: Process.7\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-core - Name: Process.8\n\n=======================================================================\nOBJECT: Process.sysbus_netdev - Name: Process.9\n\n=======================================================================\nOBJECT: Process.sysbus_netmaster - Name: Process.10\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_core - Name: Process.11\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client - Name: Process.12\n\n=======================================================================\nOBJECT: Process.sysbus_www-backend - Name: Process.13\n\n=======================================================================\nOBJECT: Process.sysbus_deviceinfo_plugin - Name: Process.14\n\n=======================================================================\nOBJECT: Process.sysbus_firewall - Name: Process.15\n\n=======================================================================\nOBJECT: Process.sysbus_kmcd - Name: Process.16\n\n=======================================================================\nOBJECT: Process.sysbus_screen - Name: Process.17\n\n=======================================================================\nOBJECT: Process.sysbus_bcmeth - Name: Process.18\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-clients - Name: Process.19\n\n=======================================================================\nOBJECT: Process.sysbus_raplugin - Name: Process.20\n\n=======================================================================\nOBJECT: Process.sysbus_gpon-plugin - Name: Process.21\n\n=======================================================================\nOBJECT: Process.sysbus_dhcp - Name: Process.22\n\n=======================================================================\nOBJECT: Process.sysbus_dnsplugin - Name: Process.23\n\n=======================================================================\nOBJECT: Process.sysbus_pppd_plugin - Name: Process.24\n\n=======================================================================\nOBJECT: Process.sysbus_upmonitor - Name: Process.25\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6d_plugin - Name: Process.26\n\n=======================================================================\nOBJECT: Process.sysbus_ipsec - Name: Process.27\n\n=======================================================================\nOBJECT: Process.sysbus_conntrack_plugin - Name: Process.28\n\n=======================================================================\nOBJECT: Process.sysbus_flowstats - Name: Process.29\n\n=======================================================================\nOBJECT: Process.sysbus_maculan - Name: Process.30\n\n=======================================================================\nOBJECT: Process.sysbus_vowifi - Name: Process.31\n\n=======================================================================\nOBJECT: Process.sysbus_ssle-server - Name: Process.32\n\n=======================================================================\nOBJECT: Process.sysbus_wlan-manager - Name: Process.33\n\n=======================================================================\nOBJECT: Process.sysbus_devicemngt - Name: Process.34\n\n=======================================================================\nOBJECT: Process.sysbus_mqttmessages - Name: Process.35\n\n=======================================================================\nOBJECT: Process.sysbus_wld_bcm - Name: Process.36\n\n=======================================================================\nOBJECT: Process.sysbus_sahpairing - Name: Process.37\n\n=======================================================================\nOBJECT: Process.sysbus_dnssd - Name: Process.38\n\n=======================================================================\nOBJECT: Process.sysbus_llmnr - Name: Process.39\n\n=======================================================================\nOBJECT: Process.sysbus_pnp - Name: Process.40\n\n=======================================================================\nOBJECT: Process.sysbus_vpn - Name: Process.41\n\n=======================================================================\nOBJECT: Process.sysbus_gmap - Name: Process.42\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_self - Name: Process.43\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_eth - Name: Process.44\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hgw - Name: Process.45\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_devtype - Name: Process.46\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dns - Name: Process.47\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_upnp - Name: Process.48\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_wan - Name: Process.49\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_usb - Name: Process.50\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mdns - Name: Process.51\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_events - Name: Process.52\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcav - Name: Process.53\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcdevolo - Name: Process.54\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ieee1905 - Name: Process.55\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_db - Name: Process.56\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_owner - Name: Process.57\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_location - Name: Process.58\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_lltd - Name: Process.59\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ssw - Name: Process.60\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_voice - Name: Process.61\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mqtt - Name: Process.62\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hue - Name: Process.63\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_vdev - Name: Process.64\n\n=======================================================================\nOBJECT: Process.sysbus_manifest - Name: Process.65\n\n=======================================================================\nOBJECT: Process.sysbus_mss - Name: Process.66\n\n=======================================================================\nOBJECT: Process.sysbus_passwordrecovery - Name: Process.67\n\n=======================================================================\nOBJECT: Process.sysbus_eventmanager - Name: Process.68\n\n=======================================================================\nOBJECT: Process.sysbus_captiveportal - Name: Process.69\n\n=======================================================================\nOBJECT: Process.sysbus_dyndns_plugin - Name: Process.70\n\n=======================================================================\nOBJECT: Process.sysbus_time-plugin - Name: Process.71\n\n=======================================================================\nOBJECT: Process.sysbus_httpd - Name: Process.72\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_client - Name: Process.73\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_plugin - Name: Process.74\n\n=======================================================================\nOBJECT: Process.sysbus_phonebook_plugin - Name: Process.75\n\n=======================================================================\nOBJECT: Process.sysbus_voipapp - Name: Process.76\n\n=======================================================================\nOBJECT: Process.sysbus_tr181 - Name: Process.77\n\n=======================================================================\nOBJECT: Process.sysbus_voipaad_plugin - Name: Process.78\n\n=======================================================================\nOBJECT: Process.sysbus_scheduler-plugin - Name: Process.79\n\n=======================================================================\nOBJECT: Process.sysbus_udpechoconfig - Name: Process.80\n\n=======================================================================\nOBJECT: Process.sysbus_usbhosts - Name: Process.81\n\n=======================================================================\nOBJECT: Process.sysbus_dlnadms - Name: Process.82\n\n=======================================================================\nOBJECT: Process.sysbus_tod-plugin - Name: Process.83\n\n=======================================================================\nOBJECT: Process.sysbus_wakeonlan-plugin - Name: Process.84\n\n=======================================================================\nOBJECT: Process.sysbus_wlanscheduler-plugin - Name: Process.85\n\n=======================================================================\nOBJECT: Process.sysbus_cwmp-plugin - Name: Process.86\n\n=======================================================================\nOBJECT: Process.sysbus_launcher - Name: Process.87\n\n=======================================================================\nOBJECT: Process.sysbus_location - Name: Process.88\n\n=======================================================================\nOBJECT: Process.sysbus_lxcmanager - Name: Process.89\n\n=======================================================================\nOBJECT: Process.sysbus_mqttbroker - Name: Process.90\n\n=======================================================================\nOBJECT: Process.sysbus_oui - Name: Process.91\n\n=======================================================================\nOBJECT: Process.sysbus_remoteaccess - Name: Process.92\n\n=======================================================================\nOBJECT: Process.sysbus_speedtest - Name: Process.93\n\n=======================================================================\nOBJECT: Process.sysbus_srvinterface - Name: Process.94\n\n=======================================================================\nOBJECT: Process.sysbus_rule-engine - Name: Process.95\n\n=======================================================================\nOBJECT: Process.sysbus_pass - Name: Process.96\n\n=======================================================================\nOBJECT: Process.sysbus_rule-factory - Name: Process.97\n\n=======================================================================\nOBJECT: Process.sysbus_ssw - Name: Process.98\n\n=======================================================================\nOBJECT: Process.sysbus_upgraded_plugin - Name: Process.99\n\n=======================================================================\nOBJECT: Process.sysbus_storage - Name: Process.100\n\n=======================================================================\nOBJECT: Process.sysbus_webuiupgrade_plugin - Name: Process.101\n\n=======================================================================\nOBJECT: Process.sysbus_account-remoteaccess - Name: Process.102\n\n=======================================================================\nOBJECT: Process.sysbus_accountmanager - Name: Process.103\n\n=======================================================================\nOBJECT: Process.sysbus_autodiag - Name: Process.104\n\n=======================================================================\nOBJECT: Process.sysbus_bulkdata - Name: Process.105\n\n=======================================================================\nOBJECT: Process.sysbus_cifscl - Name: Process.106\n\n=======================================================================\nOBJECT: Process.sysbus_ConMon - Name: Process.107\n\n=======================================================================\nOBJECT: Process.sysbus_cpu_monitor - Name: Process.108\n\n=======================================================================\nOBJECT: Process.sysbus_devicelookup - Name: Process.109\n\n=======================================================================\nOBJECT: Process.sysbus_domino_plugin - Name: Process.110\n\n=======================================================================\nOBJECT: Process.sysbus_dummyplugin - Name: Process.111\n\n=======================================================================\nOBJECT: Process.sysbus_genlog - Name: Process.112\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_orange - Name: Process.113\n\n=======================================================================\nOBJECT: Process.sysbus_history - Name: Process.114\n\n=======================================================================\nOBJECT: Process.sysbus_homelan - Name: Process.115\n\n=======================================================================\nOBJECT: Process.sysbus_ieee1905-registrar - Name: Process.116\n\n=======================================================================\nOBJECT: Process.sysbus_iot-service - Name: Process.117\n\n=======================================================================\nOBJECT: Process.sysbus_ippingdiagnostics - Name: Process.118\n\n=======================================================================\nOBJECT: Process.sysbus_oopstracker - Name: Process.119\n\n=======================================================================\nOBJECT: Process.sysbus_orange-dyndns_plugin - Name: Process.120\n\n=======================================================================\nOBJECT: Process.sysbus_invoc - Name: Process.121\n\n=======================================================================\nOBJECT: Process.sysbus_powermanagement - Name: Process.122\n\n=======================================================================\nOBJECT: Process.sysbus_probe_plugin - Name: Process.123\n\n=======================================================================\nOBJECT: Process.sysbus_probe_client - Name: Process.124\n\n=======================================================================\nOBJECT: Process.sysbus_processmonitor - Name: Process.125\n\n=======================================================================\nOBJECT: Process.sysbus_runmode - Name: Process.126\n\n=======================================================================\nOBJECT: Process.sysbus_topologydiagnostics - Name: Process.127\n\n=======================================================================\nOBJECT: Process.sysbus_upnp-igd_plugin - Name: Process.128\n\n=======================================================================\nOBJECT: Process.sysbus_upnpdiscd_plugin - Name: Process.129\n\n=======================================================================\nOBJECT: Process.sysbus_WOLProxy - Name: Process.130\n\n=======================================================================\nOBJECT: Process.sysbus_wt_plugin - Name: Process.131\n\n=======================================================================\nOBJECT: Process.sysbus_bcm_fxs - Name: Process.132\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: UplinkMonitor.DefaultGateway - Name: UplinkMonitor.DefaultGateway\n == PARAMETERS:\n  - IPv4Address (type: string)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NetDevIndex (type: int32)\n      Attributes: read_only\n  - NeMoIntfName (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: AutoDiag.HeaderField - Name: AutoDiag.HeaderField\n == PARAMETERS:\n  - DataType (type: string)\n      Attributes: persistent\n      Validator: ['Value', 'Path']\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Data (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n\n=======================================================================\nOBJECT: AutoDiag.Interface - Name: AutoDiag.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: OrangeDynDNS.Hostname - Name: OrangeDynDNS.Hostname\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Registered', 'UpdateNeeded', 'Updating', 'Error', 'Disabled']\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Address (type: string)\n      Attributes: read_only, persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeDynDNS.Server - Name: OrangeDynDNS.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - ServiceName (type: string)\n      Attributes: persistent\n  - ServerAddress (type: string)\n      Attributes: persistent\n  - ServerPort (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - CACertificate (type: string)\n      Attributes: read_only, persistent\n  - ClientCertificate (type: string)\n      Attributes: read_only, persistent\n  - PrivateKey (type: string)\n      Attributes: read_only, persistent\n  - CheckInterval (type: uint32)\n      Attributes: persistent\n  - RetryInterval (type: uint32)\n      Attributes: persistent\n  - MaxRetries (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Probe.Configuration - Name: Probe.Configuration\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setConfiguration(string type, string name, uint32 id, uint32 interval)\n  - list getConfiguration(string type)\n  - list getConfigurations()\n  - void removeConfiguration(string type)\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: VoWifi.VPNServer - Name: VoWifi.VPNServer\n == PARAMETERS:\n  - FQDN (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ResolvedIPs (type: string)\n      Attributes: read_only\n  - IPResolveInterval (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VoWifi.BusyCall - Name: VoWifi.BusyCall\n == PARAMETERS:\n  - PollingInterval (type: uint8)\n      Attributes: persistent\n  - PollingMultiple (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - BusyThreshold (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '1'}\n\n=======================================================================\nOBJECT: VoWifi.Devices - Name: VoWifi.Devices\n == PARAMETERS:\n  - DeviceID (type: string)\n      Attributes: persistent\n  - TunnelIsActive (type: bool)\n      Attributes: read_only\n  - CallIsBusy (type: bool)\n      Attributes: read_only\n  - NbrOfCalls (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfSuccessfullTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n  - NbrOfFailedTunnelAttempts (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: DNSSD.Config - Name: DNSSD.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n  - UseAdvertisedName (type: bool)\n  - Domain (type: string)\n  - UseIPv4 (type: bool)\n      Attributes: persistent\n  - UseIPv6 (type: bool)\n      Attributes: persistent\n  - AllowedInterfaces (type: string)\n      Attributes: persistent\n  - BlacklistDefaultAddress (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: DNSSD.Scan - Name: DNSSD.Scan\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['init', 'scanning', 'done', 'error']\n  - Service (type: string)\n  - Protocol (type: string)\n  - ResultNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DNSSD.Advertise - Name: DNSSD.Advertise\n == PARAMETERS:\n  - Name (type: string)\n  - Port (type: uint16)\n  - Type (type: string)\n  - Protocol (type: string)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: Devices.Config - Name: Devices.Config\n == FUNCTIONS:\n  - void set(string module, string option, variant value)\n  - variant get(string module, string option)\n  - bool load(string module)\n  - bool save(string module)\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: MSS.Config - Name: MSS.Config\n == PARAMETERS:\n  - AdvertisedName (type: string)\n      Attributes: read_only, persistent\n  - MasterElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - SlaveElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - DefaultElectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - ConnectionTimeout (type: uint32)\n      Attributes: read_only, persistent\n      Validator: {'min': '5', 'max': '1000'}\n  - AllowMasterNoUplink (type: bool)\n      Attributes: read_only, persistent\n  - AllowMasterOnWiFi (type: bool)\n      Attributes: read_only, persistent\n  - StartPairingImmediately (type: bool)\n      Attributes: read_only, persistent\n  - AutoPairingEnable (type: bool)\n      Attributes: persistent\n  - EnableReelection (type: bool)\n      Attributes: read_only, persistent\n  - MasterIPAddress (type: string)\n      Attributes: read_only\n  - MasterDNSSDName (type: string)\n      Attributes: read_only\n  - ConnectPort (type: uint16)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Certificates - Name: MSS.Certificates\n == PARAMETERS:\n  - RootCACert (type: string)\n      Attributes: read_only\n  - ClientCert (type: string)\n      Attributes: read_only\n  - ClientKey (type: string)\n      Attributes: read_only\n  - CAPath (type: string)\n      Attributes: read_only\n  - ClientCertPath (type: string)\n      Attributes: read_only\n  - ClientKeyPath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: MSS.Debug - Name: MSS.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - ErrorLogMaxNumberOfEntries (type: uint32)\n      Attributes: persistent\n  - ErrorLogNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string event, (variant data))\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: Screen.Sound - Name: Screen.Sound\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: VPN.Server - Name: VPN.Server\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - ListenPort (type: uint32)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - InterfaceIPAddress (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - DHCPPool (type: string)\n      Attributes: persistent\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - MaxConnections (type: uint32)\n      Attributes: persistent\n  - BlockSIP (type: bool)\n      Attributes: persistent\n  - InternetAccessMode (type: string)\n      Attributes: persistent\n      Validator: ['THROUGHVPN', 'DIRECTLY', 'NOACCESS']\n  - MaxInstancesOfClients (type: uint32)\n      Attributes: read_only, persistent\n  - PPPConfiguration (type: string)\n      Attributes: persistent\n  - ClientNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: VPN.Site2Site - Name: VPN.Site2Site\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabling', 'Enabled', 'Misconfigured', 'Error']\n  - SetupStage (type: string)\n      Attributes: read_only\n  - WANInterface (type: string)\n      Attributes: persistent\n  - WANInterfaceIPAddress (type: string)\n      Attributes: read_only\n  - LANInterface (type: string)\n      Attributes: persistent\n  - LANInterfaceSubnet (type: string)\n      Attributes: read_only\n  - IPsecAuthenticationMethod (type: string)\n      Attributes: persistent\n      Validator: ['PSK']\n  - IPsecPreSharedKey (type: string)\n      Attributes: persistent\n  - IPsecConfiguration (type: string)\n      Attributes: persistent\n  - IPsecConnectionMode (type: string)\n      Attributes: persistent\n      Validator: ['Automatic']\n  - IPsecLocalID (type: string)\n      Attributes: persistent\n  - IPsecRemoteID (type: string)\n      Attributes: persistent\n  - IPVersion (type: uint32)\n      Attributes: persistent\n      Validator: ['4']\n  - RemoteHost (type: string)\n      Attributes: persistent\n  - RemoteHostIPAddress (type: string)\n      Attributes: read_only\n  - RemoteHostSubnet (type: string)\n      Attributes: persistent\n  - RemoteHostInterval (type: uint32)\n      Attributes: persistent\n  - Connected (type: bool)\n      Attributes: read_only\n  - ConnectTimestamp (type: date_time)\n      Attributes: read_only\n  - ConnectionDuration (type: uint32)\n      Attributes: read_only\n  - LastConnectTimestamp (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnectionDuration (type: uint32)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: VPN.IPsecConfiguration - Name: VPN.IPsecConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Transport', 'Tunnel']\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['ESP', 'AH']\n  - IKEVersion (type: string)\n      Attributes: persistent\n      Validator: ['IKEv1', 'IKEv2', 'IKEv1v2']\n  - IKEv2AllowedEncryptionAlgorithm (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedPseudoRandomFunctions (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEv2AllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedEncryptionAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - ESPAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedIntegrityAlgorithms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - AHAllowedDiffieHellmanGroupTransforms (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - IKEPhase1Duration (type: uint32)\n      Attributes: persistent\n  - IKEPhase2Duration (type: uint32)\n      Attributes: persistent\n  - IKEDeadPeerDetectionTimeout (type: uint32)\n      Attributes: persistent\n  - IKEIDType (type: string)\n      Attributes: persistent\n      Validator: ['ID_TYPE_UNSPEC', 'ID_TYPE_FQDN']\n\n=======================================================================\nOBJECT: VPN.PPPConfiguration - Name: VPN.PPPConfiguration\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Airbox - Name: Domino.Airbox\n == PARAMETERS:\n  - SubscriptionStatus (type: string)\n      Validator: ['Unknown', 'Subscribed', 'NotSubscribed']\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.LAN - Name: NMC.LAN\n == FUNCTIONS:\n  - void addStaticRoute(string Name, string Dst, uint8 DstLen, string Gateway, (bool Enable), (int32 Priority), (uint32 MTU))\n  - void deleteStaticRoute(string Name)\n  - staticroute_t getStaticRoutes()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/eventmanager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 6 Pro/sah.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG60-fr-G01.R04.C01_00\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/AccountManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"AccountManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Audiphone.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Audiphone\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/AutoDiag.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/BCMPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BCMPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/BulkData.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"BulkData\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/CPUStats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CPUStats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/CaptivePortal.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"CaptivePortal\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ConMon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ConMon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Conntrack.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Conntrack\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DHCPv4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DHCPv6.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DHCPv6Client.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DHCPv6Client\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DLNA.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DLNA\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DNSSD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DNSSD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DSPPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DSPPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DeviceInfo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DeviceLookup.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceLookup\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DeviceManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DeviceManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DeviceManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Devices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Domino.Airbox.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino/Airbox\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Domino.Cellular.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: Domino.Cellular - Name: Domino.Cellular\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface - Name: Domino.Cellular.Interface\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - SupportedAccessTechnologies (type: string)\n      Attributes: read_only\n  - PreferredAccessTechnology (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'LTE', 'WCDMA']\n  - CurrentAccessTechnology (type: string)\n      Attributes: read_only, persistent\n  - RSSI (type: int32)\n      Attributes: read_only\n  - PINCheck (type: string)\n      Attributes: persistent\n  - PIN (type: string)\n      Attributes: persistent\n  - X_ORANGE-COM_PINTry (type: uint32)\n      Attributes: persistent\n  - InterferenceMode (type: string)\n      Attributes: persistent\n      Validator: ['NONE', '3G2100', '4GB7', '3G2100+4GB7']\n  - Upstream (type: bool)\n == FUNCTIONS:\n  - bool setTechnologyMode(string mode, string interference)\n  - bool setGlobalPin(string pin)\n\n=======================================================================\nOBJECT: Domino.Cellular.Interface.USIM - Name: Domino.Cellular.Interface.USIM\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['', 'None', 'Available', 'Valid', 'Blocked', 'Error', 'New']\n  - ICCID (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool authorizeICCID((bool enable))\n\n=======================================================================\nOBJECT: Domino.Cellular.AccessPoint - Name: Domino.Cellular.AccessPoint\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n == FUNCTIONS:\n  - bool setAPSettings(string apn, string username, string password)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Domino.Intf.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: Domino.Intf - Name: Domino.Intf\n == FUNCTIONS:\n  - bool activateConnection((bool activate))\n  - bool setWifiParams((string ssid), (string password), (string enc_mode))\n  - bool enableWifi((bool enable))\n\n=======================================================================\nOBJECT: Domino.Intf.ConnectionContext - Name: Domino.Intf.ConnectionContext\n == FUNCTIONS:\n  - bool setAdminPassword((string password))\n  - bool resetAdminPassword((string currpwd), (string newpwd))\n\n=======================================================================\nOBJECT: Domino.Intf.SIM - Name: Domino.Intf.SIM\n == FUNCTIONS:\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Domino.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Domino\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DummyPlugin.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"DummyPlugin\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/DynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/FaultMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"FaultMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Firewall.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Flowstats.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Flowstats\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/GenLog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"GenLog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Gpon.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Gpon\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/HTTPService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/History.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/HomeLan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/IEEE1905.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IEEE1905\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/IPPingDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPPingDiagnostics\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/IPsec.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"IPsec\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Invocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Invocation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/IoTService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/KMCD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"KMCD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/LEDs.LED.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: LEDs.LED - Name: LEDs.LED\n == PARAMETERS:\n  - Brightness (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Path (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/LLMNR.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LLMNR\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/LXCManager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"LXCManager\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Launcher.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Launcher\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Locations.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/MQTTBroker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTBroker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/MQTTMessages.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MQTTMessages\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/MSS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"MSS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Maculan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ManagementServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ManagementServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Manifests.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NMC.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ETH0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0 - Name: NeMo.Intf.3\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.ULIntf - Name: NeMo.Intf.3.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.LLIntf - Name: NeMo.Intf.3.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.Query - Name: NeMo.Intf.3.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Addr - Name: NeMo.Intf.3.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Addr - Name: NeMo.Intf.3.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv4Route - Name: NeMo.Intf.3.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.IPv6Route - Name: NeMo.Intf.3.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH0.StatMon - Name: NeMo.Intf.3.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ETH1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1 - Name: NeMo.Intf.4\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.ULIntf - Name: NeMo.Intf.4.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.LLIntf - Name: NeMo.Intf.4.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.Query - Name: NeMo.Intf.4.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Addr - Name: NeMo.Intf.4.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Addr - Name: NeMo.Intf.4.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv4Route - Name: NeMo.Intf.4.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.IPv6Route - Name: NeMo.Intf.4.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH1.StatMon - Name: NeMo.Intf.4.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ETH2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2 - Name: NeMo.Intf.5\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.ULIntf - Name: NeMo.Intf.5.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.LLIntf - Name: NeMo.Intf.5.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.Query - Name: NeMo.Intf.5.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Addr - Name: NeMo.Intf.5.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Addr - Name: NeMo.Intf.5.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv4Route - Name: NeMo.Intf.5.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.IPv6Route - Name: NeMo.Intf.5.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH2.StatMon - Name: NeMo.Intf.5.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ETH3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3 - Name: NeMo.Intf.6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.ULIntf - Name: NeMo.Intf.6.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.LLIntf - Name: NeMo.Intf.6.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.Query - Name: NeMo.Intf.6.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Addr - Name: NeMo.Intf.6.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Addr - Name: NeMo.Intf.6.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv4Route - Name: NeMo.Intf.6.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.IPv6Route - Name: NeMo.Intf.6.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH3.StatMon - Name: NeMo.Intf.6.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ETH4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4 - Name: NeMo.Intf.7\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - CurrentBitRate (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '5000', '10000']\n  - MaxBitRateSupported (type: int32)\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - MaxBitRateEnabled (type: int32)\n      Attributes: persistent\n      Validator: ['-1', '10', '100', '1000', '2500', '10000']\n  - CurrentDuplexMode (type: string)\n      Validator: ['None', 'Half', 'Full']\n  - DuplexModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Half', 'Full']\n  - PowerSavingSupported (type: bool)\n  - PowerSavingEnabled (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.ULIntf - Name: NeMo.Intf.7.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.LLIntf - Name: NeMo.Intf.7.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.Query - Name: NeMo.Intf.7.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Addr - Name: NeMo.Intf.7.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Addr - Name: NeMo.Intf.7.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv4Route - Name: NeMo.Intf.7.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.IPv6Route - Name: NeMo.Intf.7.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ETH4.StatMon - Name: NeMo.Intf.7.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.brguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest - Name: NeMo.Intf.36\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.ULIntf - Name: NeMo.Intf.36.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.LLIntf - Name: NeMo.Intf.36.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.Query - Name: NeMo.Intf.36.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Addr - Name: NeMo.Intf.36.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Addr - Name: NeMo.Intf.36.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv4Route - Name: NeMo.Intf.36.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Route - Name: NeMo.Intf.36.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router - Name: NeMo.Intf.36.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.brguest.IPv6Router.Option - Name: NeMo.Intf.36.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge - Name: NeMo.Intf.8\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.ULIntf - Name: NeMo.Intf.8.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.LLIntf - Name: NeMo.Intf.8.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.Query - Name: NeMo.Intf.8.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Addr - Name: NeMo.Intf.8.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Addr - Name: NeMo.Intf.8.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv4Route - Name: NeMo.Intf.8.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Route - Name: NeMo.Intf.8.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router - Name: NeMo.Intf.8.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge.IPv6Router.Option - Name: NeMo.Intf.8.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge_ctr.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_ctr\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge_gviptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_gviptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge_gvmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti - Name: NeMo.Intf.18\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.ULIntf - Name: NeMo.Intf.18.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.LLIntf - Name: NeMo.Intf.18.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.Query - Name: NeMo.Intf.18.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Addr - Name: NeMo.Intf.18.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Addr - Name: NeMo.Intf.18.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv4Route - Name: NeMo.Intf.18.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Route - Name: NeMo.Intf.18.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router - Name: NeMo.Intf.18.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_gvmulti.IPv6Router.Option - Name: NeMo.Intf.18.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge_viptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/bridge_viptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.bridge_vmulti.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti - Name: NeMo.Intf.11\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Ageing (type: uint32)\n      Attributes: persistent\n  - STPEnable (type: bool)\n      Attributes: persistent\n  - Priority (type: uint16)\n      Attributes: persistent\n  - MaxAge (type: uint32)\n      Attributes: persistent\n  - ForwardDelay (type: uint32)\n      Attributes: persistent\n  - HelloTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.ULIntf - Name: NeMo.Intf.11.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.LLIntf - Name: NeMo.Intf.11.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.Query - Name: NeMo.Intf.11.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Addr - Name: NeMo.Intf.11.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Addr - Name: NeMo.Intf.11.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv4Route - Name: NeMo.Intf.11.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Route - Name: NeMo.Intf.11.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router - Name: NeMo.Intf.11.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.bridge_vmulti.IPv6Router.Option - Name: NeMo.Intf.11.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.container.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/container\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.data - Name: NeMo.Intf.30\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.data.ULIntf - Name: NeMo.Intf.30.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.LLIntf - Name: NeMo.Intf.30.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.data.Query - Name: NeMo.Intf.30.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.dhcp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data - Name: NeMo.Intf.26\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ULIntf - Name: NeMo.Intf.26.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.LLIntf - Name: NeMo.Intf.26.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.Query - Name: NeMo.Intf.26.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.SentOption - Name: NeMo.Intf.26.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_data.ReqOption - Name: NeMo.Intf.26.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.dhcp_iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_iptv\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.dhcp_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/dhcp_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.dhcp_wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan - Name: NeMo.Intf.38\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - Renew (type: bool)\n  - IPAddress (type: string)\n      Attributes: read_only\n  - SubnetMask (type: string)\n      Attributes: read_only\n  - IPRouters (type: string)\n      Attributes: read_only\n  - DNSServers (type: string)\n      Attributes: read_only\n  - DHCPServer (type: string)\n      Attributes: read_only\n  - LeaseTime (type: int32)\n      Attributes: read_only\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - PriorityMark (type: int8)\n      Attributes: persistent\n  - Formal (type: bool)\n  - BroadcastFlag (type: uint16)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInformation (type: string)\n      Attributes: persistent\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - RetransmissionStrategy (type: string)\n      Attributes: persistent\n  - RetransmissionRenewTimeout (type: int32)\n      Attributes: persistent\n  - SendMaxMsgSize (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew((int32 numberOfRenew), (int32 delay))\n  - void rebind((int32 numberOfRebind), (int32 delay))\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ULIntf - Name: NeMo.Intf.38.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.LLIntf - Name: NeMo.Intf.38.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.Query - Name: NeMo.Intf.38.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.SentOption - Name: NeMo.Intf.38.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcp_wwan.ReqOption - Name: NeMo.Intf.38.ReqOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint8)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.dhcpv6_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data - Name: NeMo.Intf.27\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - DHCPStatus (type: string)\n      Validator: ['Idle', 'Init', 'Selecting', 'Requesting', 'Bound', 'BoundCheck', 'Release', 'Decline', 'Renew', 'Rebind', 'Release', 'InformationRequest', 'InformationBound', 'Error']\n  - Uptime (type: uint32)\n      Attributes: read_only, volatile\n  - DSCPMark (type: uint8)\n      Attributes: persistent\n  - DUID (type: string)\n      Attributes: persistent\n  - RequestAddresses (type: bool)\n      Attributes: persistent\n  - RequestPrefixes (type: bool)\n      Attributes: persistent\n  - RapidCommit (type: bool)\n      Attributes: persistent\n  - IAID (type: uint32)\n      Attributes: persistent\n  - SuggestedT1 (type: int32)\n      Attributes: persistent\n  - SuggestedT2 (type: int32)\n      Attributes: persistent\n  - SupportedOptions (type: string)\n      Attributes: persistent\n  - RequestedOptions (type: string)\n      Attributes: persistent\n  - Renew (type: bool)\n  - ResetOnPhysDownTimeout (type: int32)\n      Attributes: persistent\n  - CheckAuthentication (type: bool)\n      Attributes: persistent\n  - AuthenticationInfo (type: string)\n      Attributes: persistent\n  - RetryOnFailedAuth (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void renew()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ULIntf - Name: NeMo.Intf.27.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.LLIntf - Name: NeMo.Intf.27.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.Query - Name: NeMo.Intf.27.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.SentOption - Name: NeMo.Intf.27.SentOption\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n  - Tag (type: uint16)\n      Attributes: persistent\n  - Value (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.dhcpv6_data.ReceivedOption - Name: NeMo.Intf.27.ReceivedOption\n == PARAMETERS:\n  - Tag (type: uint16)\n  - Alias (type: string)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.guest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.guest - Name: NeMo.Intf.37\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.ULIntf - Name: NeMo.Intf.37.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.LLIntf - Name: NeMo.Intf.37.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.guest.Query - Name: NeMo.Intf.37.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.gvlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data - Name: NeMo.Intf.16\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.ULIntf - Name: NeMo.Intf.16.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.LLIntf - Name: NeMo.Intf.16.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.Query - Name: NeMo.Intf.16.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Addr - Name: NeMo.Intf.16.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Addr - Name: NeMo.Intf.16.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv4Route - Name: NeMo.Intf.16.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.IPv6Route - Name: NeMo.Intf.16.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.QoS - Name: NeMo.Intf.16.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_data.StatMon - Name: NeMo.Intf.16.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.gvlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.gvlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.gvlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi - Name: NeMo.Intf.17\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.ULIntf - Name: NeMo.Intf.17.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.LLIntf - Name: NeMo.Intf.17.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.Query - Name: NeMo.Intf.17.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Addr - Name: NeMo.Intf.17.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Addr - Name: NeMo.Intf.17.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv4Route - Name: NeMo.Intf.17.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.IPv6Route - Name: NeMo.Intf.17.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.QoS - Name: NeMo.Intf.17.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.gvlan_multi.StatMon - Name: NeMo.Intf.17.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.gvlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/gvlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.iptv.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv - Name: NeMo.Intf.32\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.ULIntf - Name: NeMo.Intf.32.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.LLIntf - Name: NeMo.Intf.32.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.iptv.Query - Name: NeMo.Intf.32.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.lan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.lan - Name: NeMo.Intf.28\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.ULIntf - Name: NeMo.Intf.28.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.LLIntf - Name: NeMo.Intf.28.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lan.Query - Name: NeMo.Intf.28.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.lo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.lo - Name: NeMo.Intf.1\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n  - void setWLANConfig((string mibs))\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.ULIntf - Name: NeMo.Intf.1.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.LLIntf - Name: NeMo.Intf.1.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.Query - Name: NeMo.Intf.1.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Addr - Name: NeMo.Intf.1.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Addr - Name: NeMo.Intf.1.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv4Route - Name: NeMo.Intf.1.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Route - Name: NeMo.Intf.1.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router - Name: NeMo.Intf.1.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.lo.IPv6Router.Option - Name: NeMo.Intf.1.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.ppp_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data - Name: NeMo.Intf.23\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - ConnectionStatus (type: string)\n      Attributes: read_only\n  - LastConnectionError (type: string)\n      Attributes: read_only\n  - MaxMRUSize (type: uint32)\n      Attributes: persistent\n  - PPPoESessionID (type: uint32)\n      Attributes: read_only\n  - PPPoEACName (type: string)\n  - PPPoEServiceName (type: string)\n  - RemoteIPAddress (type: string)\n      Attributes: read_only\n  - LocalIPAddress (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - DNSServers (type: string)\n      Attributes: read_only\n  - TransportType (type: string)\n      Attributes: read_only\n  - LCPEcho (type: uint32)\n      Attributes: persistent\n  - LCPEchoRetry (type: uint32)\n      Attributes: persistent\n  - IPCPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPEnable (type: bool)\n      Attributes: persistent\n  - IPv6CPLocalInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - IPv6CPRemoteInterfaceIdentifier (type: string)\n      Attributes: read_only\n  - ConnectionTrigger (type: string)\n      Attributes: persistent\n      Validator: ['AlwaysOn', 'OnDemand', 'Manual']\n  - IdleDisconnectTime (type: uint32)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.ULIntf - Name: NeMo.Intf.23.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.LLIntf - Name: NeMo.Intf.23.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.Query - Name: NeMo.Intf.23.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Addr - Name: NeMo.Intf.23.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Addr - Name: NeMo.Intf.23.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv4Route - Name: NeMo.Intf.23.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.ppp_data.IPv6Route - Name: NeMo.Intf.23.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.primdata.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/primdata\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.rad2g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0 - Name: NeMo.Intf.39\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ULIntf - Name: NeMo.Intf.39.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.LLIntf - Name: NeMo.Intf.39.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Query - Name: NeMo.Intf.39.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS - Name: NeMo.Intf.39.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DFS.Event - Name: NeMo.Intf.39.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults - Name: NeMo.Intf.39.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.39.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.39.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.RadCaps - Name: NeMo.Intf.39.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt - Name: NeMo.Intf.39.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.39.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.39.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.BgDfs - Name: NeMo.Intf.39.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.39.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Stats - Name: NeMo.Intf.39.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.Band - Name: NeMo.Intf.39.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.39.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats - Name: NeMo.Intf.39.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsSent - Name: NeMo.Intf.39.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedSent - Name: NeMo.Intf.39.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.39.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedReceived - Name: NeMo.Intf.39.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesSent - Name: NeMo.Intf.39.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.39.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmBytesReceived - Name: NeMo.Intf.39.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.39.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor - Name: NeMo.Intf.39.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.39.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.39.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.39.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.EventCounter - Name: NeMo.Intf.39.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor - Name: NeMo.Intf.39.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.Event - Name: NeMo.Intf.39.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.39.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.39.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor - Name: NeMo.Intf.39.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Event - Name: NeMo.Intf.39.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.EventType - Name: NeMo.Intf.39.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.HealthMonitor.Config - Name: NeMo.Intf.39.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.TrafficMonitor - Name: NeMo.Intf.39.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.BackgroundScanner - Name: NeMo.Intf.39.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverConfig - Name: NeMo.Intf.39.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.MACConfig - Name: NeMo.Intf.39.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.DriverStatus - Name: NeMo.Intf.39.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanConfig - Name: NeMo.Intf.39.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats - Name: NeMo.Intf.39.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.ScanStats.ScanReason - Name: NeMo.Intf.39.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Sensing - Name: NeMo.Intf.39.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Sensing.CSIClient - Name: NeMo.Intf.39.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.MonitorConfig - Name: NeMo.Intf.39.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor - Name: NeMo.Intf.39.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - RxChainPowerSaveQuietTime (type: uint32)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.WlMsgLevel - Name: NeMo.Intf.39.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.39.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap - Name: NeMo.Intf.39.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.39.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.Logging - Name: NeMo.Intf.39.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.DhdMemUse - Name: NeMo.Intf.39.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.AirIQScanner - Name: NeMo.Intf.39.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad2g0.Vendor.HealthMonitor - Name: NeMo.Intf.39.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.rad5g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0 - Name: NeMo.Intf.40\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ULIntf - Name: NeMo.Intf.40.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.LLIntf - Name: NeMo.Intf.40.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Query - Name: NeMo.Intf.40.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS - Name: NeMo.Intf.40.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DFS.Event - Name: NeMo.Intf.40.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults - Name: NeMo.Intf.40.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.40.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.40.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.RadCaps - Name: NeMo.Intf.40.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt - Name: NeMo.Intf.40.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.40.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.40.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.BgDfs - Name: NeMo.Intf.40.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.40.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Stats - Name: NeMo.Intf.40.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.Band - Name: NeMo.Intf.40.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.40.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats - Name: NeMo.Intf.40.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsSent - Name: NeMo.Intf.40.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedSent - Name: NeMo.Intf.40.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.40.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedReceived - Name: NeMo.Intf.40.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesSent - Name: NeMo.Intf.40.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.40.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmBytesReceived - Name: NeMo.Intf.40.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.40.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor - Name: NeMo.Intf.40.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.40.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.40.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.40.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.EventCounter - Name: NeMo.Intf.40.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor - Name: NeMo.Intf.40.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.Event - Name: NeMo.Intf.40.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.40.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.40.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor - Name: NeMo.Intf.40.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Event - Name: NeMo.Intf.40.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.EventType - Name: NeMo.Intf.40.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.HealthMonitor.Config - Name: NeMo.Intf.40.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.TrafficMonitor - Name: NeMo.Intf.40.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.BackgroundScanner - Name: NeMo.Intf.40.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverConfig - Name: NeMo.Intf.40.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.MACConfig - Name: NeMo.Intf.40.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.DriverStatus - Name: NeMo.Intf.40.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanConfig - Name: NeMo.Intf.40.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats - Name: NeMo.Intf.40.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.ScanStats.ScanReason - Name: NeMo.Intf.40.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Sensing - Name: NeMo.Intf.40.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Sensing.CSIClient - Name: NeMo.Intf.40.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.MonitorConfig - Name: NeMo.Intf.40.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor - Name: NeMo.Intf.40.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - RxChainPowerSaveQuietTime (type: uint32)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.WlMsgLevel - Name: NeMo.Intf.40.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.40.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap - Name: NeMo.Intf.40.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.40.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.Logging - Name: NeMo.Intf.40.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.DhdMemUse - Name: NeMo.Intf.40.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.AirIQScanner - Name: NeMo.Intf.40.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad5g0.Vendor.HealthMonitor - Name: NeMo.Intf.40.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.rad6g0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0 - Name: NeMo.Intf.41\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - KickRoamingStation (type: bool)\n      Attributes: persistent\n  - VendorName (type: string)\n      Attributes: persistent\n  - VendorRadioName (type: string)\n      Attributes: persistent\n  - MaxBitRate (type: uint32)\n      Attributes: read_only\n  - AP_Mode (type: bool)\n      Attributes: persistent\n  - STA_Mode (type: bool)\n      Attributes: persistent\n  - WDS_Mode (type: bool)\n      Attributes: persistent\n  - WET_Mode (type: bool)\n      Attributes: persistent\n  - STASupported_Mode (type: bool)\n      Attributes: persistent\n  - WPS_Enrollee_Mode (type: bool)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - OperatingFrequencyBand (type: string)\n      Attributes: persistent\n      Validator: ['', 'AUTO', '2.4GHz', '5GHz', '6GHz']\n  - CurrentOperatingChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - ChannelBandwidthChangeReason (type: string)\n      Attributes: read_only\n  - MaxChannelBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz']\n  - AutoBandwidthSelectMode (type: string)\n      Validator: ['MaxAvailable', 'MaxCleared', 'Default']\n  - SupportedStandards (type: string)\n      Attributes: read_only\n  - OperatingStandards (type: string)\n      Attributes: persistent\n  - OperatingStandardsFormat (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Standard']\n  - PossibleChannels (type: string)\n      Attributes: read_only\n  - OperatingClass (type: uint32)\n      Attributes: read_only\n  - ChannelsInUse (type: string)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - TargetedChannel (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '255'}\n  - AutoChannelSupported (type: bool)\n      Attributes: read_only\n  - AutoChannelEnable (type: bool)\n      Attributes: persistent\n  - AutoBandwidthEnable (type: bool)\n      Attributes: persistent\n  - AutoChannelRefreshPeriod (type: uint32)\n      Attributes: persistent\n  - AutoChannelSelecting (type: bool)\n      Attributes: read_only\n  - ActiveAntennaCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - RxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - TxChainCtrl (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - OperatingChannelBandwidth (type: string)\n      Attributes: persistent\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - ExtensionChannel (type: string)\n      Attributes: persistent\n      Validator: ['AboveControlChannel', 'BelowControlChannel', 'Auto']\n  - ObssCoexistenceEnable (type: bool)\n      Attributes: persistent\n  - GuardInterval (type: string)\n      Attributes: persistent\n      Validator: ['400nsec', '800nsec', 'Auto']\n  - MCS (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '31'}\n  - TransmitPowerSupported (type: string)\n      Attributes: read_only\n  - TransmitPower (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '100'}\n  - RetryLimit (type: uint8)\n      Attributes: persistent\n  - LongRetryLimit (type: uint8)\n      Attributes: persistent\n  - BeaconPeriod (type: uint32)\n      Attributes: persistent\n  - DTIMPeriod (type: uint32)\n      Attributes: persistent\n  - OfdmaEnable (type: bool)\n      Attributes: persistent\n  - HeCapsSupported (type: string)\n      Attributes: read_only\n  - HeCapsEnabled (type: string)\n      Attributes: persistent\n  - TargetWakeTimeEnable (type: bool)\n      Attributes: persistent\n  - IEEE80211hSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211hEnabled (type: bool)\n      Attributes: read_only\n  - IEEE80211rSupported (type: bool)\n      Attributes: read_only\n  - IEEE80211kSupported (type: bool)\n      Attributes: read_only\n  - MultiAPTypesSupported (type: string)\n      Attributes: read_only\n  - RegulatoryDomain (type: string)\n      Attributes: persistent\n  - ImplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ImplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - ExplicitBeamFormingSupported (type: bool)\n      Attributes: read_only\n  - ExplicitBeamFormingEnabled (type: bool)\n      Attributes: persistent\n  - RxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - RxBeamformingCapsEnabled (type: string)\n  - TxBeamformingCapsAvailable (type: string)\n      Attributes: read_only\n  - TxBeamformingCapsEnabled (type: string)\n  - AirtimeFairnessEnabled (type: bool)\n      Attributes: persistent\n  - RxPowerSaveEnabled (type: bool)\n  - RxPowerSaveRepeaterEnable (type: bool)\n  - MultiUserMIMOEnabled (type: bool)\n      Attributes: persistent\n  - IntelligentAirtimeSchedulingEnable (type: bool)\n      Attributes: persistent\n  - DFSChannelChangeEventCounter (type: uint32)\n      Attributes: read_only\n  - DFSChannelChangeEventTimestamp (type: date_time)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - ActiveAssociatedDevices (type: uint32)\n      Attributes: read_only\n  - BandwidthAdjustmentFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '5'}\n  - SNRAdjustmentValue (type: int32)\n      Attributes: persistent\n  - DelayApUpPeriod (type: uint32)\n      Attributes: persistent\n  - ChannelLoad (type: uint16)\n      Attributes: read_only\n  - Interference (type: uint16)\n      Attributes: read_only\n  - Noise (type: int32)\n      Attributes: read_only\n  - AntennaDefect (type: bool)\n      Attributes: read_only\n  - ProbeRequestNotify (type: string)\n      Attributes: persistent\n      Validator: ['NoUpdate', 'First', 'FirstRSSI', 'Always', 'AlwaysRSSI']\n  - ProbeRequestAggregationTimer (type: int32)\n      Attributes: persistent\n  - RIFSEnabled (type: string)\n      Validator: ['Default', 'Auto', 'Off', 'On']\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void setChanspec((uint16 channel), (string bandwidth), (string frequency), (string reason), (bool direct), (string reasonDetails))\n  - void apDelayUpDone()\n  - void startAutoChannelSelection()\n  - void getSpectrumInfo((bool update))\n  - void startScan((string SSID), (string channels), (string scanReason), (bool forceFast))\n  - void stopScan()\n  - list scan((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast), (bool updateUsage))\n  - void scanCombinedData((string SSID), (string channels), (int minRssi), (string scanReason), (bool forceFast))\n  - list getScanResults((variant results))\n  - int32 DFS_drvdbg((string dbg_action))\n  - void getProbeRequests((datetime fromTime))\n  - void getRadioAirStats()\n  - void getRadioStats()\n  - void getPerAntennaRssi()\n  - variant getLatestPower()\n  - variant getStatusHistogram()\n  - void startDFSclear()\n  - void stopDFSclear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ULIntf - Name: NeMo.Intf.41.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.LLIntf - Name: NeMo.Intf.41.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Query - Name: NeMo.Intf.41.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS - Name: NeMo.Intf.41.DFS\n == PARAMETERS:\n  - FileLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n  - EventLogLimit (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '20'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DFS.Event - Name: NeMo.Intf.41.DFS.Event\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - RadarZone (type: string)\n      Attributes: read_only\n      Validator: ['NONE', 'ETSI', 'STG', 'UNCLASSIFIED', 'FCC', 'JP']\n  - RadarIndex (type: uint8)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults - Name: NeMo.Intf.41.ScanResults\n == PARAMETERS:\n  - NrCoChannelAP (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels - Name: NeMo.Intf.41.ScanResults.SurroundingChannels\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint\n == PARAMETERS:\n  - BSSID (type: string)\n      Attributes: read_only\n  - RSSI (type: int16)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanResults.SurroundingChannels.Accesspoint.SSID - Name: NeMo.Intf.41.ScanResults.SurroundingChannels.Accesspoint.SSID\n == PARAMETERS:\n  - SSID (type: string)\n      Attributes: read_only\n  - Bandwidth (type: uint16)\n      Attributes: read_only\n  - BSSID (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.RadCaps - Name: NeMo.Intf.41.RadCaps\n == PARAMETERS:\n  - Available (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void Enable((string capability))\n  - void Disable((string capability))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt - Name: NeMo.Intf.41.ChannelMgt\n == PARAMETERS:\n  - ACSVendorEnabled (type: bool)\n      Attributes: persistent\n  - CSAEnabled (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n  - ACSVendorSupported (type: bool)\n      Attributes: read_only\n  - ChanspecShowing (type: string)\n      Attributes: read_only\n      Validator: ['Current', 'Target', 'Sync']\n  - ClearedDfsChannels (type: string)\n      Attributes: read_only\n  - RadarTriggeredDfsChannels (type: string)\n      Attributes: read_only\n  - RadioStatus (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'Down', 'Up', 'FG_CAC', 'BG_CAC', 'BG_CAC_EXT', 'BG_CAC_NS', 'BG_CAC_EXT_NS', 'Configuring', 'Error', 'DeepPowerDown']\n  - Status (type: bool)\n      Attributes: read_only\n  - ChangeLogSize (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void performSelection()\n  - void retrievePerformanceLog((bool reset))\n  - void getLatestChannelMeasurement()\n  - void getAverageChannelMeasurement()\n  - void getBandScores()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.TargetChanspec - Name: NeMo.Intf.41.ChannelMgt.TargetChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.CurrentChanspec - Name: NeMo.Intf.41.ChannelMgt.CurrentChanspec\n == PARAMETERS:\n  - Channel (type: uint16)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n  - Frequency (type: string)\n      Attributes: read_only\n  - Reason (type: string)\n      Attributes: read_only\n  - ReasonExt (type: string)\n      Attributes: read_only\n  - LastChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.BgDfs - Name: NeMo.Intf.41.ChannelMgt.BgDfs\n == PARAMETERS:\n  - Available (type: bool)\n      Attributes: read_only\n  - PreclearEnable (type: bool)\n      Attributes: persistent\n  - AllowProvider (type: bool)\n      Attributes: persistent\n  - Channel (type: int32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Off', 'Idle', 'Clearing', 'ExtClearing']\n  - NrClearSuccess (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadar (type: uint32)\n      Attributes: read_only\n  - NrClearFailOther (type: uint32)\n      Attributes: read_only\n  - NrClearSuccessExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailRadarExt (type: uint32)\n      Attributes: read_only\n  - NrClearFailOtherExt (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startBgDfsClear((int channel), (int bandwidth))\n  - void stopBgDfsClear()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectParams - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectParams\n == PARAMETERS:\n  - DfsWeight (type: int32)\n      Attributes: persistent\n  - HighPowerWeight (type: int32)\n      Attributes: persistent\n  - ApCountPenalty (type: int32)\n      Attributes: persistent\n  - ApCountMaxPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApPenalty (type: int32)\n      Attributes: persistent\n  - AdjacentApMaxPenalty (type: int32)\n      Attributes: persistent\n  - AvailabilityWeight (type: int32)\n      Attributes: persistent\n  - MinAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - PrimaryAvailabilityWeight (type: int32)\n      Attributes: persistent\n  - NoiseBonus (type: int32)\n      Attributes: persistent\n  - MaxNoiseBonus (type: int32)\n      Attributes: persistent\n  - PrimaryNoiseBonus (type: int32)\n      Attributes: persistent\n  - WeightDifference (type: int32)\n      Attributes: persistent\n  - LongWaitPenalty (type: int32)\n      Attributes: persistent\n  - LowPowerPenaltyOnFarSta (type: int32)\n      Attributes: persistent\n  - CurrBonusStaConnected (type: int32)\n      Attributes: persistent\n  - AvailCheckCutoff (type: int32)\n      Attributes: persistent\n  - AvailCheckMinPenalty (type: int32)\n      Attributes: persistent\n  - AvailCheckMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerPenalty (type: int32)\n      Attributes: persistent\n  - DfsTriggerMaxPenalty (type: int32)\n      Attributes: persistent\n  - DfsClearPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesMaxPenalty (type: int32)\n      Attributes: persistent\n  - ChannelIssuesThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerThreshold (type: int32)\n      Attributes: persistent\n  - ChannelIssuesTriggerCooldown (type: int32)\n      Attributes: persistent\n  - BwBonus (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdVid (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdSta (type: uint32)\n      Attributes: persistent\n  - MoveUpThresholdNoSta (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradePenalty (type: uint32)\n      Attributes: persistent\n  - InterferenceUtilizationCost (type: uint32)\n      Attributes: persistent\n  - InterferenceSNRLevelCost (type: uint32)\n      Attributes: persistent\n  - InterferenceCostDivider (type: uint32)\n      Attributes: persistent\n  - InterferenceMaxPenalty (type: uint32)\n      Attributes: persistent\n  - ObssCoexFallbackApsThreshold (type: uint16)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelSelectConfig - Name: NeMo.Intf.41.ChannelMgt.ChannelSelectConfig\n == PARAMETERS:\n  - DynamicChannelSelection (type: bool)\n      Attributes: persistent\n  - BannedChannelList (type: string)\n      Attributes: persistent\n  - BannedChanspecList (type: string)\n      Attributes: persistent\n  - ChannelBonusList (type: string)\n      Attributes: persistent\n  - ChanSpecBonusList (type: string)\n      Attributes: persistent\n  - EnableDFSChannels (type: bool)\n      Attributes: persistent\n  - EnableLongWaitChannels (type: bool)\n      Attributes: persistent\n  - LongWaitOnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - LongWaitAsComplement (type: bool)\n      Attributes: persistent\n  - Band160OnlyWhenCleared (type: bool)\n      Attributes: persistent\n  - BootChannel (type: int32)\n      Attributes: persistent\n  - DfsDoneTriggerProtection (type: uint32)\n      Attributes: persistent\n  - RelevantApRssiThreshold (type: int32)\n      Attributes: persistent\n  - RequireMaxCycle (type: bool)\n      Attributes: persistent\n  - PreferredChannels (type: bool)\n      Attributes: persistent\n  - NrMeasurements (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - TimeBetweenScans (type: uint32)\n      Attributes: persistent\n  - TimeBetweenUpdates (type: int32)\n      Attributes: persistent\n      Validator: {'min': '0'}\n  - FarStaRssiThreshold (type: int32)\n      Attributes: persistent\n  - DecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - BonusDecayFactor (type: int32)\n      Attributes: persistent\n      Validator: {'max': '99'}\n  - SwitchModeVideo (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeSilent (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchModeNoSta (type: string)\n      Attributes: persistent\n      Validator: ['BOOT', 'S_DFS_R', 'DFS_R', 'SEAMLESS', 'ALWAYS']\n  - SwitchDelayVideo (type: int32)\n      Attributes: persistent\n  - SwitchDelaySta (type: int32)\n      Attributes: persistent\n  - SwitchDelayNoSta (type: int32)\n      Attributes: persistent\n  - AddCurrBonusAtBoot (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'DFS_ONLY', 'ALWAYS']\n  - TxOpScanLimit (type: int32)\n      Attributes: persistent\n  - UsageScanLimit (type: int32)\n      Attributes: persistent\n  - NoiseThreshold (type: int32)\n      Attributes: persistent\n  - InterferenceThreshold (type: int32)\n      Attributes: persistent\n  - MoveUpEnable (type: bool)\n      Attributes: persistent\n  - MoveUpSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NO_STA', 'STA', 'STA_SEAMLESS', 'SEAMLESS', 'ALWAYS']\n  - AlignChannelSwitchMode (type: string)\n      Attributes: persistent\n      Validator: ['NEVER', 'NO_STA', 'STA', 'ALWAYS']\n  - PerformPreclear (type: bool)\n      Attributes: persistent\n  - PreclearNormalMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - PreclearPrioMaxBusyLevel (type: uint32)\n      Attributes: persistent\n  - BandwidthDowngradeEnable (type: bool)\n      Attributes: persistent\n  - OnlyScanRelevantChannels (type: bool)\n      Attributes: persistent\n  - ScanDelayWhenBusy (type: uint32)\n      Attributes: persistent\n  - MaxNrDelaysNormalTraffic (type: int32)\n      Attributes: persistent\n  - MaxNrDelaysPrioTraffic (type: int32)\n      Attributes: persistent\n  - StaActiveMode (type: string)\n      Attributes: persistent\n      Validator: ['Presence', 'TrafficBusy']\n  - MaxScanDelayTime (type: uint32)\n      Attributes: persistent\n  - RequireLikelyTargetChannel (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackEnable (type: bool)\n      Attributes: persistent\n  - ObssCoexFallbackTimeout (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Stats - Name: NeMo.Intf.41.ChannelMgt.Stats\n == PARAMETERS:\n  - InitScan (type: uint32)\n      Attributes: read_only\n  - ManualScan (type: uint32)\n      Attributes: read_only\n  - CycleScan (type: uint32)\n      Attributes: read_only\n  - CycleSkipScans (type: uint32)\n      Attributes: read_only\n  - TriggeredScans (type: uint32)\n      Attributes: read_only\n  - LastScan (type: date_time)\n      Attributes: read_only\n  - ScanStarts (type: uint32)\n      Attributes: read_only\n  - ScanAborts (type: uint32)\n      Attributes: read_only\n  - InitScanAborts (type: uint32)\n      Attributes: read_only\n  - ScanFailures (type: uint32)\n      Attributes: read_only\n  - Evaluations (type: uint32)\n      Attributes: read_only\n  - CycleSkipEvaluations (type: uint32)\n      Attributes: read_only\n  - BlockedChannelChanges (type: uint32)\n      Attributes: read_only\n  - ChannelChanges (type: uint32)\n      Attributes: read_only\n  - LastChange (type: date_time)\n      Attributes: read_only\n  - ChannelChangesNoSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesSta (type: uint32)\n      Attributes: read_only\n  - ChannelChangesVideo (type: uint32)\n      Attributes: read_only\n  - LastChannelIssueTrigger (type: date_time)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetCsmStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.Band - Name: NeMo.Intf.41.ChannelMgt.Band\n == PARAMETERS:\n  - Channel (type: uint32)\n      Attributes: read_only\n  - Bandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Auto']\n  - Noise (type: int32)\n      Attributes: read_only\n  - Availability (type: uint32)\n      Attributes: read_only\n  - NrAccessPoints (type: uint32)\n      Attributes: read_only\n  - NrAdjacentAccessPoints (type: uint32)\n      Attributes: read_only\n  - Bonus (type: uint32)\n      Attributes: read_only\n  - DfsCount (type: uint32)\n      Attributes: read_only\n  - State (type: string)\n      Attributes: read_only\n      Validator: ['OK', 'ERR_RADAR', 'ERR_DFS', 'ERR_LW', 'ERR_BLOCK']\n  - IsCurrent (type: bool)\n      Attributes: read_only\n  - Score (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ChannelMgt.ChannelChanges - Name: NeMo.Intf.41.ChannelMgt.ChannelChanges\n == PARAMETERS:\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n  - OldChannel (type: uint32)\n      Attributes: read_only\n  - OldBandwidth (type: string)\n      Attributes: read_only\n  - NewChannel (type: uint32)\n      Attributes: read_only\n  - NewBandwidth (type: string)\n      Attributes: read_only\n  - ChannelChangeReason (type: string)\n      Attributes: read_only\n  - ChannelChangeReasonExt (type: string)\n      Attributes: read_only\n  - NrSta (type: uint16)\n      Attributes: read_only\n  - NrVideoSta (type: uint16)\n      Attributes: read_only\n  - TrafficLevel (type: uint8)\n      Attributes: read_only\n  - PrioTrafficLevel (type: uint8)\n      Attributes: read_only\n  - TargetChannel (type: uint32)\n      Attributes: read_only\n  - TargetBandwidth (type: string)\n      Attributes: read_only\n  - TargetChangeTime (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats - Name: NeMo.Intf.41.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n  - PacketsSent (type: uint64)\n      Attributes: read_only\n  - PacketsReceived (type: uint64)\n      Attributes: read_only\n  - ErrorsSent (type: uint32)\n      Attributes: read_only\n  - RetransCount (type: uint32)\n      Attributes: read_only\n  - ErrorsReceived (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsSent (type: uint32)\n      Attributes: read_only\n  - DiscardPacketsReceived (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsSent (type: uint32)\n      Attributes: read_only\n  - UnicastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsSent (type: uint32)\n      Attributes: read_only\n  - MulticastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsSent (type: uint32)\n      Attributes: read_only\n  - BroadcastPacketsReceived (type: uint32)\n      Attributes: read_only\n  - FailedRetransCount (type: uint32)\n      Attributes: read_only\n  - RetryCount (type: uint32)\n      Attributes: read_only\n  - MultipleRetryCount (type: uint32)\n      Attributes: read_only\n  - Temperature (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-274'}\n  - TotalTargetChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - TotalChannelChangeCount (type: uint32)\n      Attributes: read_only\n  - DetailedChannelChangeCountList (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsSent - Name: NeMo.Intf.41.Stats.WmmPacketsSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedSent - Name: NeMo.Intf.41.Stats.WmmFailedSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmPacketsReceived - Name: NeMo.Intf.41.Stats.WmmPacketsReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedReceived - Name: NeMo.Intf.41.Stats.WmmFailedReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesSent - Name: NeMo.Intf.41.Stats.WmmBytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedbytesSent - Name: NeMo.Intf.41.Stats.WmmFailedbytesSent\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmBytesReceived - Name: NeMo.Intf.41.Stats.WmmBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Stats.WmmFailedBytesReceived - Name: NeMo.Intf.41.Stats.WmmFailedBytesReceived\n == PARAMETERS:\n  - AC_BE (type: uint32)\n      Attributes: read_only\n  - AC_BK (type: uint32)\n      Attributes: read_only\n  - AC_VO (type: uint32)\n      Attributes: read_only\n  - AC_VI (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor - Name: NeMo.Intf.41.NaStaMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getNaStationStats()\n  - void createNonAssociatedDevice((string macaddress))\n  - void deleteNonAssociatedDevice((string macaddress))\n  - void clearNonAssociatedDevices()\n  - void createMonitorDevice((string macaddress))\n  - void deleteMonitorDevice((string macaddress))\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.RssiEventing - Name: NeMo.Intf.41.NaStaMonitor.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.NonAssociatedDevice - Name: NeMo.Intf.41.NaStaMonitor.NonAssociatedDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.NaStaMonitor.MonitorDevice - Name: NeMo.Intf.41.NaStaMonitor.MonitorDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - SignalStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-200', 'max': '0'}\n  - TimeStamp (type: date_time)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.EventCounter - Name: NeMo.Intf.41.EventCounter\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n  - LastOccurrence (type: date_time)\n      Attributes: read_only\n  - Info (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor - Name: NeMo.Intf.41.InterferenceMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Error', 'Up']\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '100'}\n  - ChannelHistoryLength (type: uint32)\n      Attributes: persistent\n  - ChannelHistoryInterval (type: uint32)\n      Attributes: persistent\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getInterferenceInfo()\n  - void getInterferenceHistory()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.Event - Name: NeMo.Intf.41.InterferenceMonitor.Event\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n      Validator: ['UNKNOWN', 'MICROWAVE_OVEN', 'INVERTER_MICROWAVE_OVEN', 'ANALOG_CORDLESS_PHONE', 'BLUETOOTH', 'DSSS_CORDLESS_PHONE', 'WIRELESS_VIDEO_CAMERA', 'FHSS_CORDLESS_PHONE', 'DIGITAL_BABY_MONITOR_SINGLE_CARRIER', 'DIGITAL_BABY_MONITOR_FHSS', 'WIRELESS_GAME_CONTROLLER_PS2', 'POSSIBLE_INTERFERER', 'WIDEBAND_JAMMER', 'S_BAND_MOTION_DETECTOR', 'DIGITAL_BABY_MONITOR_DSSS', 'NARROWBAND_JAMMING_DEVICE', 'ZIGBEE_DEVICE', 'NANO_WIRELESS_MOUSE', 'AIRHORN_WIFI_SIGNAL_GENERATOR', 'WIRELESS_GAME_CONTROLLER_XBOX', 'WLAN_FH', 'CANOPY', 'WIRELESS_BRIDGE', 'LTEU_CLASSIFICATION']\n  - MaxStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - AvgStrength (type: int32)\n      Attributes: read_only\n      Validator: {'min': '-100', 'max': '-10'}\n  - Frequency (type: uint32)\n      Attributes: read_only\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - LastUpdate (type: date_time)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ImpactedChannels (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.FullStats - Name: NeMo.Intf.41.InterferenceMonitor.FullStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.InterferenceMonitor.LastIntervalStats - Name: NeMo.Intf.41.InterferenceMonitor.LastIntervalStats\n == PARAMETERS:\n  - NumberOfObservations (type: uint32)\n      Attributes: read_only\n  - Duration (type: uint32)\n      Attributes: read_only\n  - ObservationList (type: string)\n      Attributes: read_only\n  - DurationList (type: string)\n      Attributes: read_only\n  - AverageSNR (type: string)\n      Attributes: read_only\n  - Utilization (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor - Name: NeMo.Intf.41.HealthMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Supported (type: bool)\n      Attributes: read_only\n  - Status (type: bool)\n      Attributes: read_only\n  - Interval (type: uint32)\n      Attributes: persistent\n  - EventsDetected (type: uint32)\n      Attributes: read_only\n  - EventsActive (type: uint32)\n      Attributes: read_only\n  - MaxNumberOfEvents (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '100'}\n  - EventNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Event - Name: NeMo.Intf.41.HealthMonitor.Event\n == PARAMETERS:\n  - StartTime (type: date_time)\n      Attributes: read_only\n  - StopTime (type: date_time)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n  - Type (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.EventType - Name: NeMo.Intf.41.HealthMonitor.EventType\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - NrEvents (type: uint32)\n      Attributes: read_only\n  - NrObservations (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.HealthMonitor.Config - Name: NeMo.Intf.41.HealthMonitor.Config\n == PARAMETERS:\n  - IdleStaCheckEnable (type: bool)\n  - IdleStaCheckTimeout (type: uint32)\n  - AntennaCheckEnable (type: bool)\n      Attributes: persistent\n  - AntennaCheckRequireSta (type: bool)\n  - AntennaCheckPowerLimit (type: string)\n  - AntennaCheckMaxFailNum (type: uint32)\n  - FastStaReconnectTimeout (type: int32)\n  - FastStaReconnectEventTimeout (type: int32)\n  - FastStaReconnectUserTime (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.TrafficMonitor - Name: NeMo.Intf.41.TrafficMonitor\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - PrintMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - NotificationMode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Window', 'History']\n  - PrintTrafficCategories (type: bool)\n      Attributes: persistent\n  - PrintAcCategories (type: bool)\n      Attributes: persistent\n  - MonitorInterval (type: uint32)\n      Attributes: persistent\n  - ObsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n  - HistogramSize (type: uint32)\n      Attributes: persistent\n  - BusyLevelWindow (type: uint32)\n      Attributes: persistent\n  - TrafficBusyLevelList (type: string)\n      Attributes: persistent\n  - PrintMask (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getTrafficInformation()\n  - variant getHistogram()\n  - variant getBusyStatus()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.BackgroundScanner - Name: NeMo.Intf.41.BackgroundScanner\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getAirtimeResults()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverConfig - Name: NeMo.Intf.41.DriverConfig\n == PARAMETERS:\n  - RadioDownIfUnused (type: bool)\n      Attributes: persistent\n  - TxBurst (type: int32)\n      Attributes: persistent\n  - Amsdu (type: int32)\n      Attributes: persistent\n  - Ampdu (type: int32)\n      Attributes: persistent\n  - FragmentationThreshold (type: int32)\n      Attributes: persistent\n  - RtsThreshold (type: int32)\n      Attributes: persistent\n  - TxBeamforming (type: int32)\n      Attributes: persistent\n  - VhtOmnEnabled (type: int32)\n      Attributes: persistent\n  - BroadcastMaxBwCapability (type: int32)\n      Attributes: persistent\n  - TPCMode (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Off', 'Ap', 'Sta', 'ApSta']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.MACConfig - Name: NeMo.Intf.41.MACConfig\n == PARAMETERS:\n  - NrBssRequired (type: uint32)\n      Attributes: persistent\n  - UseBaseMacOffset (type: bool)\n      Attributes: persistent\n  - BaseMacOffset (type: int64)\n      Attributes: persistent\n  - UseLocalBitForGuest (type: bool)\n      Attributes: persistent\n  - LocalGuestMacOffset (type: int64)\n      Attributes: persistent\n  - GuestBaseMACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.DriverStatus - Name: NeMo.Intf.41.DriverStatus\n == PARAMETERS:\n  - DriverEnable (type: bool)\n      Attributes: read_only\n  - NrTxAntenna (type: int32)\n      Attributes: read_only\n  - NrRxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveTxAntenna (type: int32)\n      Attributes: read_only\n  - NrActiveRxAntenna (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanConfig - Name: NeMo.Intf.41.ScanConfig\n == PARAMETERS:\n  - MaxChannelsPerScan (type: int32)\n      Attributes: persistent\n  - ScanChannelCount (type: int32)\n      Attributes: persistent\n  - ScanRequestInterval (type: int32)\n      Attributes: persistent\n  - HomeTime (type: int32)\n      Attributes: persistent\n  - ActiveChannelTime (type: int32)\n      Attributes: persistent\n  - PassiveChannelTime (type: int32)\n      Attributes: persistent\n  - BlockScanMode (type: string)\n      Attributes: persistent\n      Validator: ['Disable', 'Prio', 'All']\n  - FastScanReasons (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats - Name: NeMo.Intf.41.ScanStats\n == PARAMETERS:\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n  - NrScanBlocked (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.ScanStats.ScanReason - Name: NeMo.Intf.41.ScanStats.ScanReason\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrScanRequested (type: uint32)\n      Attributes: read_only\n  - NrScanDone (type: uint32)\n      Attributes: read_only\n  - NrScanError (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Sensing - Name: NeMo.Intf.41.Sensing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void csiStats()\n  - void addClient((string macAddr), (uint32 interval))\n  - void delClient((string macAddr))\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Sensing.CSIClient - Name: NeMo.Intf.41.Sensing.CSIClient\n == PARAMETERS:\n  - MACAddress (type: string)\n  - MonitorInterval (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.MonitorConfig - Name: NeMo.Intf.41.MonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n  - MinStaTrafficLevel (type: uint8)\n      Attributes: persistent\n  - MinStaTrafficLevelMCS (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor - Name: NeMo.Intf.41.Vendor\n == PARAMETERS:\n  - Interference (type: int32)\n      Attributes: persistent\n  - SupportedFrequencyBands (type: string)\n  - RegulatoryDomain (type: string)\n  - LesiEnabled (type: bool)\n  - SupportedVAPs (type: uint32)\n  - Diversity11b (type: int32)\n  - McastRegenBssEnable (type: int32)\n  - MaxNumberfOfMsdu (type: int32)\n  - SSW_MeshSync_TO (type: uint32)\n  - PsPretendRetryLimit (type: uint32)\n      Attributes: persistent\n  - ErrorState (type: bool)\n  - BgDfsUsageThreshold (type: uint32)\n      Attributes: persistent\n  - NaStaMonInterval (type: uint32)\n      Validator: {'min': '100'}\n  - FilterBcmEvents (type: bool)\n  - DhdPollTime (type: int32)\n      Attributes: persistent\n  - LogOnFlowringStuck (type: bool)\n      Attributes: persistent\n  - DhdFreeMemThreshold (type: uint32)\n      Attributes: persistent\n  - PhyEDThreshold (type: int32)\n      Attributes: persistent\n  - PhyTxShaper (type: int8)\n  - RxChainPowerSaveQuietTime (type: uint32)\n  - SignalStrengthPolicy (type: string)\n      Validator: ['MaxChains', 'AvgChains']\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.WlMsgLevel - Name: NeMo.Intf.41.Vendor.WlMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMsgLevel - Name: NeMo.Intf.41.Vendor.DhdMsgLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap - Name: NeMo.Intf.41.Vendor.Trap\n == PARAMETERS:\n  - LastTimeStamp (type: string)\n      Attributes: persistent\n  - Count (type: uint32)\n  - MaxDongleReloadCount (type: uint32)\n      Attributes: persistent\n  - MinDongleReloadInterval (type: uint32)\n      Attributes: persistent\n  - LogTrap (type: bool)\n      Attributes: persistent\n  - OverWriteLog (type: bool)\n      Attributes: persistent\n  - LogTrapToExt (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool reportTrap()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Trap.MacDbgDumpLevel - Name: NeMo.Intf.41.Vendor.Trap.MacDbgDumpLevel\n == PARAMETERS:\n  - Supported (type: string)\n      Attributes: read_only\n  - Enabled (type: string)\n  - HexBitMask (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.Logging - Name: NeMo.Intf.41.Vendor.Logging\n == PARAMETERS:\n  - MaxStateLogs (type: uint32)\n      Attributes: persistent\n  - OverwriteStateLogs (type: bool)\n      Attributes: persistent\n  - NumberOfStateLogs (type: uint32)\n  - AddSocramToStateLog (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logState()\n  - void doneLog()\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.DhdMemUse - Name: NeMo.Intf.41.Vendor.DhdMemUse\n == PARAMETERS:\n  - HeapSize (type: uint32)\n      Attributes: read_only\n  - HeapFree (type: uint32)\n      Attributes: read_only\n  - AllocFailCount (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.AirIQScanner - Name: NeMo.Intf.41.Vendor.AirIQScanner\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Error', 'Stopped', 'Running']\n  - SupportedFrequencyBands (type: string)\n      Attributes: read_only\n  - ScanDwellTime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.rad6g0.Vendor.HealthMonitor - Name: NeMo.Intf.41.Vendor.HealthMonitor\n == PARAMETERS:\n  - CounterIssueMinTime (type: uint32)\n  - CounterIssueEndDelay (type: uint32)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.superguest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superguest\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.superlan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/superlan\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap2g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0 - Name: NeMo.Intf.65\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ULIntf - Name: NeMo.Intf.65.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.LLIntf - Name: NeMo.Intf.65.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Query - Name: NeMo.Intf.65.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211r - Name: NeMo.Intf.65.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IEEE80211u - Name: NeMo.Intf.65.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Security - Name: NeMo.Intf.65.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.WPS - Name: NeMo.Intf.65.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering - Name: NeMo.Intf.65.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.Entry - Name: NeMo.Intf.65.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.65.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering - Name: NeMo.Intf.65.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.65.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs - Name: NeMo.Intf.65.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.65.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.HotSpot2 - Name: NeMo.Intf.65.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice - Name: NeMo.Intf.65.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.65.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount - Name: NeMo.Intf.65.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.65.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.MgtStats - Name: NeMo.Intf.65.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleConfig - Name: NeMo.Intf.65.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ErrorToggleStats - Name: NeMo.Intf.65.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.Neighbour - Name: NeMo.Intf.65.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.RssiEventing - Name: NeMo.Intf.65.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError - Name: NeMo.Intf.65.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.65.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.65.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.DriverConfig - Name: NeMo.Intf.65.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StaHistogram - Name: NeMo.Intf.65.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.ApMonitorConfig - Name: NeMo.Intf.65.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Addr - Name: NeMo.Intf.65.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Addr - Name: NeMo.Intf.65.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv4Route - Name: NeMo.Intf.65.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.IPv6Route - Name: NeMo.Intf.65.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0guest0.StatMon - Name: NeMo.Intf.65.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap2g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0 - Name: NeMo.Intf.42\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ULIntf - Name: NeMo.Intf.42.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.LLIntf - Name: NeMo.Intf.42.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Query - Name: NeMo.Intf.42.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211r - Name: NeMo.Intf.42.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IEEE80211u - Name: NeMo.Intf.42.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Security - Name: NeMo.Intf.42.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.WPS - Name: NeMo.Intf.42.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering - Name: NeMo.Intf.42.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.Entry - Name: NeMo.Intf.42.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.42.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering - Name: NeMo.Intf.42.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.42.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs - Name: NeMo.Intf.42.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.42.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.HotSpot2 - Name: NeMo.Intf.42.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice - Name: NeMo.Intf.42.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.42.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount - Name: NeMo.Intf.42.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.42.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.MgtStats - Name: NeMo.Intf.42.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleConfig - Name: NeMo.Intf.42.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ErrorToggleStats - Name: NeMo.Intf.42.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.Neighbour - Name: NeMo.Intf.42.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.RssiEventing - Name: NeMo.Intf.42.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError - Name: NeMo.Intf.42.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.42.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.42.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.DriverConfig - Name: NeMo.Intf.42.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StaHistogram - Name: NeMo.Intf.42.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.ApMonitorConfig - Name: NeMo.Intf.42.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Addr - Name: NeMo.Intf.42.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Addr - Name: NeMo.Intf.42.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv4Route - Name: NeMo.Intf.42.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.IPv6Route - Name: NeMo.Intf.42.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv0.StatMon - Name: NeMo.Intf.42.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap2g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1 - Name: NeMo.Intf.43\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ULIntf - Name: NeMo.Intf.43.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.LLIntf - Name: NeMo.Intf.43.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Query - Name: NeMo.Intf.43.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211r - Name: NeMo.Intf.43.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IEEE80211u - Name: NeMo.Intf.43.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Security - Name: NeMo.Intf.43.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.WPS - Name: NeMo.Intf.43.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering - Name: NeMo.Intf.43.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.Entry - Name: NeMo.Intf.43.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.43.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering - Name: NeMo.Intf.43.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.43.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs - Name: NeMo.Intf.43.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.43.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.HotSpot2 - Name: NeMo.Intf.43.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice - Name: NeMo.Intf.43.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.43.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount - Name: NeMo.Intf.43.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.43.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.MgtStats - Name: NeMo.Intf.43.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleConfig - Name: NeMo.Intf.43.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ErrorToggleStats - Name: NeMo.Intf.43.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.Neighbour - Name: NeMo.Intf.43.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.RssiEventing - Name: NeMo.Intf.43.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError - Name: NeMo.Intf.43.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.43.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.43.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.DriverConfig - Name: NeMo.Intf.43.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StaHistogram - Name: NeMo.Intf.43.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.ApMonitorConfig - Name: NeMo.Intf.43.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Addr - Name: NeMo.Intf.43.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Addr - Name: NeMo.Intf.43.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv4Route - Name: NeMo.Intf.43.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.IPv6Route - Name: NeMo.Intf.43.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap2g0priv1.StatMon - Name: NeMo.Intf.43.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap5g0guest0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0 - Name: NeMo.Intf.66\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ULIntf - Name: NeMo.Intf.66.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.LLIntf - Name: NeMo.Intf.66.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Query - Name: NeMo.Intf.66.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211r - Name: NeMo.Intf.66.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IEEE80211u - Name: NeMo.Intf.66.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Security - Name: NeMo.Intf.66.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.WPS - Name: NeMo.Intf.66.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering - Name: NeMo.Intf.66.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.Entry - Name: NeMo.Intf.66.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MACFiltering.TempEntry - Name: NeMo.Intf.66.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering - Name: NeMo.Intf.66.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ProbeFiltering.TempEntry - Name: NeMo.Intf.66.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs - Name: NeMo.Intf.66.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.VendorIEs.VendorIE - Name: NeMo.Intf.66.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.HotSpot2 - Name: NeMo.Intf.66.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice - Name: NeMo.Intf.66.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.66.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount - Name: NeMo.Intf.66.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.66.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.MgtStats - Name: NeMo.Intf.66.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleConfig - Name: NeMo.Intf.66.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ErrorToggleStats - Name: NeMo.Intf.66.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.Neighbour - Name: NeMo.Intf.66.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.RssiEventing - Name: NeMo.Intf.66.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError - Name: NeMo.Intf.66.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.GenericTests - Name: NeMo.Intf.66.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaKickOnError.VendorTests - Name: NeMo.Intf.66.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.DriverConfig - Name: NeMo.Intf.66.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StaHistogram - Name: NeMo.Intf.66.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.ApMonitorConfig - Name: NeMo.Intf.66.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Addr - Name: NeMo.Intf.66.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Addr - Name: NeMo.Intf.66.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv4Route - Name: NeMo.Intf.66.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.IPv6Route - Name: NeMo.Intf.66.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0guest0.StatMon - Name: NeMo.Intf.66.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap5g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0 - Name: NeMo.Intf.44\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ULIntf - Name: NeMo.Intf.44.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.LLIntf - Name: NeMo.Intf.44.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Query - Name: NeMo.Intf.44.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211r - Name: NeMo.Intf.44.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IEEE80211u - Name: NeMo.Intf.44.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Security - Name: NeMo.Intf.44.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.WPS - Name: NeMo.Intf.44.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering - Name: NeMo.Intf.44.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.Entry - Name: NeMo.Intf.44.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.44.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering - Name: NeMo.Intf.44.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.44.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs - Name: NeMo.Intf.44.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.44.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.HotSpot2 - Name: NeMo.Intf.44.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice - Name: NeMo.Intf.44.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.44.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount - Name: NeMo.Intf.44.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.44.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.MgtStats - Name: NeMo.Intf.44.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleConfig - Name: NeMo.Intf.44.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ErrorToggleStats - Name: NeMo.Intf.44.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.Neighbour - Name: NeMo.Intf.44.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.RssiEventing - Name: NeMo.Intf.44.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError - Name: NeMo.Intf.44.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.44.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.44.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.DriverConfig - Name: NeMo.Intf.44.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StaHistogram - Name: NeMo.Intf.44.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.ApMonitorConfig - Name: NeMo.Intf.44.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Addr - Name: NeMo.Intf.44.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Addr - Name: NeMo.Intf.44.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv4Route - Name: NeMo.Intf.44.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.IPv6Route - Name: NeMo.Intf.44.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv0.StatMon - Name: NeMo.Intf.44.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap5g0priv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1 - Name: NeMo.Intf.45\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ULIntf - Name: NeMo.Intf.45.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.LLIntf - Name: NeMo.Intf.45.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Query - Name: NeMo.Intf.45.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211r - Name: NeMo.Intf.45.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IEEE80211u - Name: NeMo.Intf.45.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Security - Name: NeMo.Intf.45.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.WPS - Name: NeMo.Intf.45.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering - Name: NeMo.Intf.45.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.Entry - Name: NeMo.Intf.45.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MACFiltering.TempEntry - Name: NeMo.Intf.45.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering - Name: NeMo.Intf.45.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ProbeFiltering.TempEntry - Name: NeMo.Intf.45.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs - Name: NeMo.Intf.45.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.VendorIEs.VendorIE - Name: NeMo.Intf.45.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.HotSpot2 - Name: NeMo.Intf.45.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice - Name: NeMo.Intf.45.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.45.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount - Name: NeMo.Intf.45.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.45.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.MgtStats - Name: NeMo.Intf.45.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleConfig - Name: NeMo.Intf.45.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ErrorToggleStats - Name: NeMo.Intf.45.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.Neighbour - Name: NeMo.Intf.45.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.RssiEventing - Name: NeMo.Intf.45.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError - Name: NeMo.Intf.45.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.GenericTests - Name: NeMo.Intf.45.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaKickOnError.VendorTests - Name: NeMo.Intf.45.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.DriverConfig - Name: NeMo.Intf.45.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StaHistogram - Name: NeMo.Intf.45.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.ApMonitorConfig - Name: NeMo.Intf.45.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Addr - Name: NeMo.Intf.45.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Addr - Name: NeMo.Intf.45.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv4Route - Name: NeMo.Intf.45.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.IPv6Route - Name: NeMo.Intf.45.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap5g0priv1.StatMon - Name: NeMo.Intf.45.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vap6g0priv0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0 - Name: NeMo.Intf.46\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - VAPStatus (type: string)\n      Attributes: read_only\n      Validator: ['Up', 'Down', 'Unknown', 'Dormant', 'NotPresent', 'LowerLayerDown', 'Error']\n  - LastStatusChangeTimeStamp (type: date_time)\n      Attributes: read_only\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only\n  - MACAddress (type: string)\n      Attributes: persistent\n  - BSSID (type: string)\n      Attributes: persistent\n  - SSID (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RadioReference (type: string)\n      Attributes: read_only, persistent\n  - SSIDAdvertisementEnabled (type: bool)\n      Attributes: persistent\n  - RetryLimit (type: uint32)\n      Attributes: persistent\n  - WMMCapability (type: bool)\n      Attributes: read_only\n  - UAPSDCapability (type: bool)\n      Attributes: read_only\n  - WMMEnable (type: bool)\n      Attributes: persistent\n  - UAPSDEnable (type: bool)\n      Attributes: persistent\n  - APBridgeDisable (type: bool)\n      Attributes: persistent\n  - BridgeInterface (type: string)\n  - DefaultDeviceType (type: string)\n      Attributes: persistent\n      Validator: ['Video', 'Data', 'Guest']\n  - MACFilterAddressList (type: string)\n      Attributes: persistent\n  - IEEE80211kEnabled (type: bool)\n      Attributes: persistent\n  - ApRole (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'Main', 'Relay', 'Remote']\n  - WDSEnable (type: bool)\n      Attributes: persistent\n  - MBOEnable (type: bool)\n      Attributes: persistent\n  - MultiAPType (type: string)\n      Attributes: persistent\n  - EssIdentifier (type: string)\n      Attributes: persistent\n  - MaxAssociatedDevices (type: uint32)\n      Attributes: persistent\n  - AssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ActiveAssociatedDeviceNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiscoveryMethodEnabled (type: string)\n      Attributes: persistent\n  - PersistentEnable (type: bool)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setWLANConfig((string mibs))\n  - void kickStation((string macaddress))\n  - void kickStationReason((string macaddress), (int32 reason))\n  - void cleanStation((string macaddress))\n  - bool sendBssTransferRequest((string mac), (string target), (int class), (int channel), (int wait), (int retries), (uint32 bssidInfo), (int transitionReason))\n  - bool sendPublicAction((string mac), (string oui), (uint8 type), (uint8 subtype), (uint8 channel), (string data))\n  - bool sendRemoteMeasumentRequest((string mac), (string bssid), (uint32 class), (uint32 channel), (uint32 timeout), (string ssid))\n  - void getSSIDStats()\n  - variant getStatusHistogram()\n  - void getStationStats()\n  - uint32 getFarAssociatedDevicesCount((int32 threshold))\n  - void delNeighbourAP((string BSSID))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ULIntf - Name: NeMo.Intf.46.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.LLIntf - Name: NeMo.Intf.46.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Query - Name: NeMo.Intf.46.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211r - Name: NeMo.Intf.46.IEEE80211r\n == PARAMETERS:\n  - Enabled (type: bool)\n      Attributes: persistent\n  - FTOverDSEnable (type: bool)\n      Attributes: persistent\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - MobilityDomain (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IEEE80211u - Name: NeMo.Intf.46.IEEE80211u\n == PARAMETERS:\n  - InterworkingEnable (type: bool)\n      Attributes: persistent\n  - QoSMapSet (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Security - Name: NeMo.Intf.46.Security\n == PARAMETERS:\n  - ModesSupported (type: string)\n      Attributes: read_only\n  - ModesAvailable (type: string)\n      Attributes: persistent\n  - ModeEnabled (type: string)\n      Attributes: persistent\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - WEPKey (type: string)\n      Attributes: persistent\n  - PreSharedKey (type: string)\n      Attributes: persistent\n  - KeyPassPhrase (type: string)\n      Attributes: persistent\n      Validator: {'min': '8', 'max': '63'}\n  - RekeyingInterval (type: uint32)\n      Attributes: persistent\n  - OWETransitionInterface (type: string)\n      Attributes: persistent\n  - TransitionDisable (type: string)\n      Attributes: persistent\n  - SAEPassphrase (type: string)\n      Attributes: persistent\n  - EncryptionMode (type: string)\n      Attributes: persistent\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - RadiusServerIPAddr (type: string)\n      Attributes: persistent\n  - RadiusServerPort (type: uint32)\n      Attributes: persistent\n  - RadiusSecret (type: string)\n      Attributes: persistent\n  - RadiusDefaultSessionTimeout (type: uint32)\n      Attributes: persistent\n  - RadiusOwnIPAddress (type: string)\n      Attributes: persistent\n  - RadiusNASIdentifier (type: string)\n      Attributes: persistent\n  - RadiusCalledStationId (type: string)\n      Attributes: persistent\n  - RadiusChargeableUserId (type: bool)\n      Attributes: persistent\n  - MFPConfig (type: string)\n      Attributes: persistent\n      Validator: ['Disabled', 'Optional', 'Required']\n  - SPPAmsdu (type: int32)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.WPS - Name: NeMo.Intf.46.WPS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigMethodsSupported (type: string)\n      Attributes: read_only\n  - ConfigMethodsEnabled (type: string)\n      Attributes: persistent\n  - CertModeEnable (type: bool)\n      Attributes: persistent\n  - SelfPIN (type: string)\n  - Configured (type: bool)\n      Attributes: persistent\n  - PairingInProgress (type: bool)\n      Attributes: read_only\n  - UUID (type: string)\n  - RelayCredentialsEnable (type: bool)\n      Attributes: persistent\n  - RestartOnRequest (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - uint32 pushButton((string clientPIN))\n  - string generateSelfPIN()\n  - void cancelPairing()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering - Name: NeMo.Intf.46.MACFiltering\n == PARAMETERS:\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Off', 'WhiteList', 'BlackList']\n  - TempBlacklistEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void addEntry((string mac))\n  - void delEntry((string mac))\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.Entry - Name: NeMo.Intf.46.MACFiltering.Entry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MACFiltering.TempEntry - Name: NeMo.Intf.46.MACFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering - Name: NeMo.Intf.46.ProbeFiltering\n == FUNCTIONS:\n  - void addTempEntry((string mac))\n  - void delTempEntry((string mac))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ProbeFiltering.TempEntry - Name: NeMo.Intf.46.ProbeFiltering.TempEntry\n == PARAMETERS:\n  - MACAddress (type: string)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs - Name: NeMo.Intf.46.VendorIEs\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void createVendorIE((string oui), (string data), (string frame_type))\n  - void deleteVendorIE((string oui), (string data))\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.VendorIEs.VendorIE - Name: NeMo.Intf.46.VendorIEs.VendorIE\n == PARAMETERS:\n  - OUI (type: string)\n      Attributes: persistent\n  - Data (type: string)\n      Attributes: persistent\n  - FrameType (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.HotSpot2 - Name: NeMo.Intf.46.HotSpot2\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DgafDisable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - L2TrafficInspect (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - IcmpV4Echo (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Interworking (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Internet (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - Hs2Ie (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - P2PEnable (type: bool)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '1'}\n  - GasDelay (type: int32)\n      Attributes: persistent\n  - AccessNetworkType (type: uint8)\n      Attributes: persistent\n  - VenueType (type: uint8)\n      Attributes: persistent\n  - VenueGroup (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice - Name: NeMo.Intf.46.AssociatedDevice\n == PARAMETERS:\n  - ChargeableUserId (type: string)\n  - MACAddress (type: string)\n      Attributes: read_only\n  - AuthenticationState (type: bool)\n      Attributes: read_only\n  - LastDataDownlinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - LastDataUplinkRate (type: uint32)\n      Attributes: read_only, volatile\n  - SignalStrength (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - AvgSignalStrengthByChain (type: int32)\n      Attributes: read_only, volatile\n      Validator: {'min': '-200', 'max': '0'}\n  - SignalStrengthByChain (type: string)\n      Attributes: read_only, volatile\n  - SignalStrengthHistory (type: string)\n      Attributes: read_only, volatile\n  - Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n      Validator: {'min': '0', 'max': '100'}\n  - RxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - TxErrors (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_Retransmissions (type: uint32)\n      Attributes: read_only, volatile\n  - Rx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - Tx_RetransmissionsFailed (type: uint32)\n      Attributes: read_only, volatile\n  - RxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxFrameCount (type: uint32)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only\n  - SignalNoiseRatio (type: int32)\n      Attributes: read_only, volatile\n  - Noise (type: int32)\n      Attributes: read_only, volatile\n  - NoiseByChain (type: string)\n      Attributes: read_only, volatile\n  - Inactive (type: uint32)\n      Attributes: read_only, volatile\n  - RxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxUnicastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - RxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxMulticastPacketCount (type: uint32)\n      Attributes: read_only, volatile\n  - TxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - RxBytes (type: uint64)\n      Attributes: read_only, volatile\n  - UplinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - UplinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - DownlinkMCS (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkBandwidth (type: uint32)\n      Attributes: read_only, volatile\n  - DownlinkShortGuard (type: bool)\n      Attributes: read_only, volatile\n  - MaxDownlinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxDownlinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxUplinkRateSupported (type: uint32)\n      Attributes: read_only\n  - MaxUplinkRateReached (type: uint32)\n      Attributes: read_only, volatile\n  - MaxBandwidthSupported (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'Unknown']\n  - Mode (type: string)\n      Attributes: read_only\n  - OperatingStandard (type: string)\n      Attributes: read_only\n      Validator: ['a', 'b', 'g', 'n', 'ac', 'ax', 'Unknown']\n  - DeviceType (type: string)\n      Validator: ['Video', 'Data', 'Guest']\n  - DevicePriority (type: int32)\n  - AssociationTime (type: date_time)\n      Attributes: read_only\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - SupportedHtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - TxSupportedVhtMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - TxSupportedHeMCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe160MCS (type: string)\n      Attributes: read_only\n  - RxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - TxSupportedHe80x80MCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - MaxRxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - MaxTxSpatialStreamsSupported (type: uint16)\n      Attributes: read_only\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - Capabilities (type: string)\n      Attributes: read_only\n  - UNIIBandsCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n  - AssociationType (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'Assoc', 'Reassoc', 'FtAssoc']\n  - ProbeTime (type: date_time)\n      Attributes: read_only\n  - AssociationStartTime (type: date_time)\n      Attributes: read_only\n  - AssociationSetupTime (type: uint32)\n      Attributes: read_only\n  - ProbeRssi (type: int32)\n      Attributes: read_only\n  - MCSConsistencyFlags (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociatedDevice.ProbeReqCaps - Name: NeMo.Intf.46.AssociatedDevice.ProbeReqCaps\n == PARAMETERS:\n  - SupportedMCS (type: string)\n      Attributes: read_only\n  - VendorOUI (type: string)\n      Attributes: read_only\n  - SecurityModeEnabled (type: string)\n      Attributes: read_only\n      Validator: ['None', 'OWE', 'WEP-64', 'WEP-128', 'WEP-128iv', 'WPA-Personal', 'WPA2-Personal', 'WPA-WPA2-Personal', 'WPA3-Personal', 'WPA2-WPA3-Personal', 'E-None', 'WPA-Enterprise', 'WPA2-Enterprise', 'WPA-WPA2-Enterprise', 'WPA3-Enterprise', 'WPA2-WPA3-Enterprise']\n  - LinkBandwidth (type: string)\n      Attributes: read_only\n      Validator: ['20MHz', '40MHz', '80MHz', '160MHz', 'None']\n  - EncryptionMode (type: string)\n      Attributes: read_only\n      Validator: ['Default', 'AES', 'TKIP', 'TKIP-AES']\n  - HtCapabilities (type: string)\n      Attributes: read_only\n  - VhtCapabilities (type: string)\n      Attributes: read_only\n  - HeCapabilities (type: string)\n      Attributes: read_only\n  - FrequencyCapabilities (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount - Name: NeMo.Intf.46.AssociationCount\n == PARAMETERS:\n  - Success (type: uint32)\n      Attributes: read_only\n  - Fail (type: uint32)\n      Attributes: read_only\n  - FailSecurity (type: uint32)\n      Attributes: read_only\n  - Disconnect (type: uint32)\n      Attributes: read_only\n  - FastReconnects (type: uint32)\n      Attributes: read_only\n  - ResetCounters (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.AssociationCount.FastReconnectTypes - Name: NeMo.Intf.46.AssociationCount.FastReconnectTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n  - Count (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.MgtStats - Name: NeMo.Intf.46.MgtStats\n == PARAMETERS:\n  - NumberOfToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfToggleDisconnects (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggles (type: uint32)\n      Attributes: read_only\n  - NumberOfErrorToggleDisconnects (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleConfig - Name: NeMo.Intf.46.ErrorToggleConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ErrorToggleStats - Name: NeMo.Intf.46.ErrorToggleStats\n == PARAMETERS:\n  - NrTogglesRequested (type: uint32)\n      Attributes: read_only\n  - NrTogglesExecuted (type: uint32)\n      Attributes: read_only\n  - LastToggleExecuted (type: date_time)\n      Attributes: read_only\n  - LastToggleReason (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void resetStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.Neighbour - Name: NeMo.Intf.46.Neighbour\n == PARAMETERS:\n  - BSSID (type: string)\n  - SSID (type: string)\n  - Information (type: int32)\n  - OperatingClass (type: int32)\n  - Channel (type: int32)\n  - PhyType (type: int32)\n  - NASIdentifier (type: string)\n  - R0KHKey (type: string)\n  - ColocatedAP (type: bool)\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.RssiEventing - Name: NeMo.Intf.46.RssiEventing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RssiInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - AveragingFactor (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '1000'}\n  - Interval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '100'}\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - HistoryLen (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - HistoryIntervalCoeff (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getShortHistoryStats()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError - Name: NeMo.Intf.46.StaKickOnError\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableAllTests (type: bool)\n      Attributes: persistent\n  - MaxNrToggles (type: uint32)\n      Attributes: persistent\n  - ToggleDelay (type: uint32)\n      Attributes: persistent\n  - NumberOfKickActions (type: uint32)\n      Attributes: read_only\n  - NumberOfStationsKicked (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void debug()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.GenericTests - Name: NeMo.Intf.46.StaKickOnError.GenericTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaKickOnError.VendorTests - Name: NeMo.Intf.46.StaKickOnError.VendorTests\n == PARAMETERS:\n  - TestsSupported (type: string)\n      Attributes: read_only\n  - TestsEnabled (type: string)\n      Attributes: persistent\n  - KickActions (type: uint32)\n      Attributes: read_only\n  - IgnoredErrorsDetected (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.DriverConfig - Name: NeMo.Intf.46.DriverConfig\n == PARAMETERS:\n  - BssMaxIdlePeriod (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '65535'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StaHistogram - Name: NeMo.Intf.46.StaHistogram\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - SendPeriodicNotification (type: bool)\n      Attributes: persistent\n  - SendNotificationOnDisassoc (type: bool)\n      Attributes: persistent\n  - NrReadingsPerWindow (type: uint32)\n      Attributes: persistent\n  - NrWindows (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getCurrentStaHistograms()\n  - void getAllStaHistograms()\n  - void clearStaHistograms()\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.ApMonitorConfig - Name: NeMo.Intf.46.ApMonitorConfig\n == PARAMETERS:\n  - InfoEventEnable (type: bool)\n      Attributes: persistent\n  - InfoEventBootDelay (type: uint32)\n      Attributes: persistent\n  - InfoEventInterval (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Addr - Name: NeMo.Intf.46.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Addr - Name: NeMo.Intf.46.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv4Route - Name: NeMo.Intf.46.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.IPv6Route - Name: NeMo.Intf.46.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vap6g0priv0.StatMon - Name: NeMo.Intf.46.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.veip0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0 - Name: NeMo.Intf.2\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - RegistrationID (type: string)\n      Validator: {'max': '36'}\n  - RegistrationIDIsInHexFormat (type: bool)\n  - VeipPptpUni (type: bool)\n      Attributes: persistent\n  - MaxBitRateSupported (type: int32)\n  - SignalRxPower (type: int32)\n      Attributes: read_only, volatile\n  - SignalTxPower (type: int32)\n      Attributes: read_only, volatile\n  - Temperature (type: int16)\n      Attributes: read_only, volatile\n  - Voltage (type: uint16)\n      Attributes: read_only, volatile\n  - Bias (type: uint32)\n      Attributes: read_only, volatile\n  - PonMode (type: string)\n      Attributes: read_only\n      Validator: ['Unknown', 'GPON', 'XGS-PON']\n  - SerialNumber (type: string)\n      Attributes: read_only\n  - HardwareVersion (type: string)\n      Attributes: read_only\n  - EquipmentId (type: string)\n      Attributes: read_only\n      Validator: {'max': '20'}\n  - VendorId (type: string)\n      Attributes: read_only\n      Validator: {'max': '4'}\n  - VendorProductCode (type: uint16)\n      Attributes: read_only\n  - ONTSoftwareVersion0 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersion1 (type: string)\n      Attributes: read_only\n      Validator: {'max': '14'}\n  - ONTSoftwareVersionActive (type: uint8)\n      Attributes: read_only\n  - LowerOpticalThreshold (type: int32)\n      Attributes: read_only\n  - UpperOpticalThreshold (type: int32)\n      Attributes: read_only\n  - LowerTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - UpperTransmitPowerThreshold (type: int32)\n      Attributes: read_only\n  - Mode (type: string)\n      Attributes: persistent\n      Validator: ['Normal', 'Custom']\n  - CustomVendorID (type: string)\n      Attributes: persistent\n      Validator: {'max': '4'}\n  - CustomEquipmentID (type: string)\n      Attributes: persistent\n      Validator: {'max': '20'}\n  - VLANs (type: string)\n      Attributes: read_only\n      Validator: {'max': '128'}\n  - RogueOnu (type: bool)\n      Attributes: read_only\n  - RogueOnuCount (type: uint32)\n      Attributes: read_only\n  - RogueOnuLastOccurence (type: date_time)\n      Attributes: read_only\n  - OnuState (type: string)\n      Attributes: read_only\n  - OnuId (type: uint16)\n      Attributes: read_only\n  - PonId (type: string)\n      Attributes: read_only\n      Validator: {'max': '7'}\n  - DownstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - UpstreamMaxRate (type: uint32)\n      Attributes: read_only\n  - DownstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - UpstreamCurrRate (type: uint32)\n      Attributes: read_only\n  - PhysicalInterface (type: string)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.ULIntf - Name: NeMo.Intf.2.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.LLIntf - Name: NeMo.Intf.2.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.Query - Name: NeMo.Intf.2.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Addr - Name: NeMo.Intf.2.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Addr - Name: NeMo.Intf.2.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv4Route - Name: NeMo.Intf.2.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.IPv6Route - Name: NeMo.Intf.2.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.veip0.StatMon - Name: NeMo.Intf.2.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vlan_data.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data - Name: NeMo.Intf.9\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.ULIntf - Name: NeMo.Intf.9.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.LLIntf - Name: NeMo.Intf.9.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.Query - Name: NeMo.Intf.9.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Addr - Name: NeMo.Intf.9.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Addr - Name: NeMo.Intf.9.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv4Route - Name: NeMo.Intf.9.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.IPv6Route - Name: NeMo.Intf.9.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.QoS - Name: NeMo.Intf.9.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_data.StatMon - Name: NeMo.Intf.9.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vlan_iptv1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vlan_iptv2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_iptv2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vlan_multi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi - Name: NeMo.Intf.10\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - LastChangeTime (type: uint32)\n      Attributes: read_only\n  - LastChange (type: uint32)\n      Attributes: read_only, volatile\n  - VLANID (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - VLANPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - DscpToPbitsTable (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.ULIntf - Name: NeMo.Intf.10.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.LLIntf - Name: NeMo.Intf.10.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.Query - Name: NeMo.Intf.10.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Addr - Name: NeMo.Intf.10.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Addr - Name: NeMo.Intf.10.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv4Route - Name: NeMo.Intf.10.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.IPv6Route - Name: NeMo.Intf.10.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.QoS - Name: NeMo.Intf.10.QoS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Tags (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '1', 'max': '31'}\n  - SetVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - SetPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '7'}\n  - SetDscp (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '63'}\n  - SetEthertype (type: uint16)\n      Attributes: persistent\n  - DscpToPbits (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '4'}\n  - PushTag (type: bool)\n      Attributes: persistent\n  - PopTag (type: bool)\n      Attributes: persistent\n  - Direction (type: bool)\n      Attributes: persistent\n  - FilterVlanId (type: uint16)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '4095'}\n  - FilterSkbPriority (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '127'}\n  - FilterSkbMarkFlowid (type: int16)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '255'}\n  - FilterEthertype (type: uint16)\n      Attributes: persistent\n  - FilterVlanDevMacAddr (type: int8)\n      Attributes: persistent\n      Validator: {'min': '-1', 'max': '1'}\n\n=======================================================================\nOBJECT: NeMo.Intf.vlan_multi.StatMon - Name: NeMo.Intf.10.StatMon\n == PARAMETERS:\n  - Enable (type: bool)\n  - Interval (type: uint32)\n  - Type (type: string)\n      Validator: ['unknown', 'netdev', 'wlansta', 'dslline']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vlan_voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vlan_voip\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.voip.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.voip - Name: NeMo.Intf.31\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - void setFlag((string flag), (string condition), (string traverse))\n  - void clearFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - uint32 openQuery((string subscriber))\n  - void closeQuery((string subscriber))\n  - void csiRegister((string func))\n  - void csiUnregister((string func))\n  - void csiFinish((uint32 id))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.ULIntf - Name: NeMo.Intf.31.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.LLIntf - Name: NeMo.Intf.31.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.voip.Query - Name: NeMo.Intf.31.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vpnc_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpnc_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vpns_default.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_default\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.vpns_t.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/vpns_t\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds5g0priv1_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds5g0priv1_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_0.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_0\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_1.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_1\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_2.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_2\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_3.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_3\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_4.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_4\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wds6g0priv0_5.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo/Intf/wds6g0priv0_5\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.Intf.wwan.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan - Name: NeMo.Intf.33\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - Status (type: bool)\n  - Flags (type: string)\n  - Alias (type: string)\n      Attributes: persistent\n  - APN (type: string)\n      Attributes: persistent\n  - PINCode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - DNSServers (type: string)\n  - IPRouter (type: string)\n  - LocalIPAddress (type: string)\n  - ConnectionStatus (type: string)\n      Validator: ['NotPresent', 'Unconfigured', 'Connecting', 'Connected', 'PendingDisconnect', 'Disconnecting', 'Disconnected']\n  - SignalStrength (type: uint8)\n  - Technology (type: string)\n      Validator: ['none', 'gprs', 'edge', 'umts', 'hsdpa', 'hsupa', 'hspa', 'lte']\n  - Manufacturer (type: string)\n  - Model (type: string)\n  - PinType (type: string)\n  - PinRetryCount (type: int32)\n  - PukRetryCount (type: int32)\n  - NATEnabled (type: bool)\n  - NetDevIndex (type: int32)\n  - NetDevType (type: string)\n      Attributes: read_only\n  - NetDevFlags (type: string)\n  - NetDevName (type: string)\n  - LLAddress (type: string)\n  - TxQueueLen (type: uint32)\n  - MTU (type: uint32)\n  - NetDevState (type: string)\n      Attributes: read_only\n  - IPv4Forwarding (type: bool)\n  - IPv4ForceIGMPVersion (type: uint32)\n      Validator: {'min': '0', 'max': '3'}\n  - IPv4AcceptSourceRoute (type: bool)\n  - IPv4AcceptLocal (type: bool)\n  - IPv4AcceptRedirects (type: bool)\n  - IPv4ArpFilter (type: bool)\n  - IPv6AcceptRA (type: bool)\n  - IPv6ActAsRouter (type: bool)\n  - IPv6AutoConf (type: bool)\n  - IPv6MaxRtrSolicitations (type: uint32)\n  - IPv6RtrSolicitationInterval (type: uint32)\n  - IPv6AcceptSourceRoute (type: bool)\n  - IPv6AcceptRedirects (type: bool)\n  - IPv6OptimisticDAD (type: bool)\n  - IPv6Disable (type: bool)\n  - IPv6HostPart (type: string)\n  - RtTable (type: int32)\n      Validator: {'max': '256'}\n  - RtPriority (type: uint32)\n  - IPv6AddrDelegate (type: string)\n  - IPv6RouterDownTimeout (type: int32)\n == FUNCTIONS:\n  - bool isUp((string flag), (string traverse))\n  - bool hasFlag((string flag), (string condition), (string traverse))\n  - bool isLinkedTo((string target), (string traverse))\n  - list getIntfs((string flag), (string traverse))\n  - string luckyIntf((string flag), (string traverse))\n  - string getFirstParameter((string name), (string flag), (string traverse))\n  - void setFirstParameter((string name), (string value), (string flag), (string traverse))\n  - string getParameters((string name), (string flag), (string traverse))\n  - void setParameters((string name), (string value), (string flag), (string traverse))\n  - void getMIBs((string mibs), (string flag), (string traverse))\n  - void setMIBs((string mibs))\n  - void copy(string name)\n  - variant getDHCPOption((string type), (uint8 tag), (string traverse))\n  - list getAddrs((string flag), (string traverse))\n  - void luckyAddr((string flag), (string traverse))\n  - string luckyAddrAddress((string flag), (string traverse))\n  - void getRAOptions(uint8 tag, (string traverse))\n  - void getRARouters((string traverse))\n  - void setPin((string pin))\n  - void resetPin((string puk), (string newpin))\n  - void configureConnection((string apn), (string username), (string Password))\n  - string getPinType()\n  - void refreshNetDev()\n  - void getNetDevStats()\n  - void setNetDevFlag(string flags)\n  - void clearNetDevFlag(string flags)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.ULIntf - Name: NeMo.Intf.33.ULIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.LLIntf - Name: NeMo.Intf.33.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.Query - Name: NeMo.Intf.33.Query\n == PARAMETERS:\n  - Description (type: string)\n      Attributes: read_only\n  - Subscribers (type: string)\n      Attributes: read_only\n  - ResultString (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getResult()\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Addr - Name: NeMo.Intf.33.IPv4Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Addr - Name: NeMo.Intf.33.IPv6Addr\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - Address (type: string)\n      Attributes: persistent\n  - Peer (type: string)\n      Attributes: persistent\n  - PrefixLen (type: uint8)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - NeMoFlags (type: string)\n      Attributes: persistent\n  - PreferredLifetime (type: uint32)\n      Attributes: persistent\n  - ValidLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv4Route - Name: NeMo.Intf.33.IPv4Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Route - Name: NeMo.Intf.33.IPv6Route\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n  - DstLen (type: uint8)\n      Attributes: persistent\n  - Table (type: string)\n      Attributes: persistent\n  - Scope (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - Type (type: string)\n      Attributes: persistent\n  - Dst (type: string)\n      Attributes: persistent\n  - Priority (type: int32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router - Name: NeMo.Intf.33.IPv6Router\n == PARAMETERS:\n  - Address (type: string)\n  - LastAdvertisement (type: uint32)\n  - CurHopLimit (type: uint8)\n  - Managed (type: bool)\n  - Other (type: bool)\n  - HomeAgent (type: bool)\n  - Preference (type: int8)\n  - RouterLifetime (type: uint16)\n  - ReachableTime (type: uint32)\n  - RetransTimer (type: uint32)\n\n=======================================================================\nOBJECT: NeMo.Intf.wwan.IPv6Router.Option - Name: NeMo.Intf.33.IPv6Router.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n  - Value (type: string)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NeMo.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NeMo\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NetDev.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"NetDev\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/NetMaster.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ObjectMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ObjectMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/OopsTracker.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OopsTracker\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/OrangeDynDNS.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"OrangeDynDNS\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/OrangeRemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/OrangeServices.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/PPP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"PPP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Pass.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Pass\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/PasswordRecovery.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Phonebook.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/PnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/PowerManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Probe.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Process.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"error\": 13,\n    \"description\": \"Permission denied\",\n    \"info\": \"Process\"\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ProcessMonitor.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ProcessMonitor\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Profiles.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/QueueManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"QueueManagement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/RemoteAccess.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/RouterAdvertisement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"RouterAdvertisement\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SAHPairing.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SSLEServer.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSLEServer\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SSW.FeatureConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: SSW.FeatureConfig - Name: SSW.FeatureConfig\n == FUNCTIONS:\n  - void startEventing((string MAC))\n  - void stopEventing((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul - Name: SSW.FeatureConfig.MultiBackhaul\n == PARAMETERS:\n  - SteeringEnable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void debugMultiBackhaul()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules - Name: SSW.FeatureConfig.MultiBackhaul.Rules\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Score', 'Gmap']\n  - Query (type: string)\n      Attributes: persistent\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Rules.Station - Name: SSW.FeatureConfig.MultiBackhaul.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n  - RuleName (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config - Name: SSW.FeatureConfig.MultiBackhaul.Config\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - PrioBand (type: string)\n      Attributes: persistent\n      Validator: ['2.4GHz', '5GHz', '6GHz']\n  - PrioTargets (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.MultiBackhaul.Config.Station - Name: SSW.FeatureConfig.MultiBackhaul.Config.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - CurrentBackhaulFrequency (type: string)\n  - RuleName (type: string)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving - Name: SSW.FeatureConfig.EnergySaving\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - FeaturesRunning (type: string)\n      Attributes: read_only\n  - MaxStatsLength (type: uint32)\n      Attributes: persistent\n  - RssiThreshold (type: int32)\n      Attributes: persistent\n  - DeltaThreshold (type: uint8)\n      Attributes: persistent\n  - AirtimeThreshold (type: uint32)\n      Attributes: persistent\n  - EnableThreshold (type: uint32)\n      Attributes: persistent\n  - ModesEnabled (type: string)\n      Attributes: persistent\n  - AntennaConfiguration (type: string)\n      Attributes: persistent\n      Validator: ['Divided', 'Minimum']\n == FUNCTIONS:\n  - void getStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.EnergySaving.Stats - Name: SSW.FeatureConfig.EnergySaving.Stats\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NrActivations (type: uint32)\n      Attributes: read_only\n  - LastUpTime (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery - Name: SSW.FeatureConfig.BackhaulRecovery\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ProvisioningEnable (type: bool)\n      Attributes: persistent\n  - AttemptTimeout (type: uint32)\n      Attributes: persistent\n  - SlaveCertsFolder (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void provisionMAC((string MAC))\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.BackhaulRecovery.Stats - Name: SSW.FeatureConfig.BackhaulRecovery.Stats\n == PARAMETERS:\n  - NrTrigger (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AddOnMode - Name: SSW.FeatureConfig.AddOnMode\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Invalid', 'Disabled', 'Enabled', 'Active', 'ActiveNotConnected']\n  - LastStateChange (type: date_time)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - AddonMACAddress (type: string)\n      Attributes: read_only\n  - ActiveTimeout (type: int32)\n      Attributes: persistent\n      Validator: {'min': '-1'}\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.LongStats - Name: SSW.FeatureConfig.LongStats\n == PARAMETERS:\n  - HistoryEnable (type: bool)\n      Attributes: persistent\n  - SendPeriodicEvent (type: bool)\n      Attributes: persistent\n  - SendEventOnAssoc (type: bool)\n      Attributes: persistent\n  - SendEventOnDisassoc (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void getLongHistoryStats()\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.NodeModel - Name: SSW.FeatureConfig.NodeModel\n == PARAMETERS:\n  - HistogramCycleInterval (type: uint32)\n      Attributes: persistent\n  - SendTopologyEvent (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AutoPairing - Name: SSW.FeatureConfig.AutoPairing\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - RSSIThreshold (type: int32)\n      Attributes: persistent\n  - IEEE80211kRequestTimeout (type: uint32)\n      Attributes: persistent\n  - PairingTimeout (type: uint32)\n      Attributes: persistent\n  - MonitoringTimeout (type: uint32)\n      Attributes: persistent\n  - VendorIEData (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void startAutoPairing(string MAC, uint8 channel)\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.AutoPairing.Stats - Name: SSW.FeatureConfig.AutoPairing.Stats\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n  - NrAttempts (type: uint32)\n      Attributes: read_only\n  - CurrentState (type: string)\n      Attributes: read_only\n  - IsSuccess (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.FeatureConfig.SlaveScan - Name: SSW.FeatureConfig.SlaveScan\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ScanInterval (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SSW.Steering.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: SSW.Steering - Name: SSW.Steering\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Down', 'Up']\n == FUNCTIONS:\n  - void getNodeBackhaul((string MAC))\n  - void getUplinkInfo((string MAC))\n  - void getRoamInfo((string MAC))\n  - stationInfo getStationStats((string MAC))\n  - void getAllStationsCompactInfo()\n  - void getStationAssocLog((string MAC))\n  - list getAllStations((string ap))\n  - stationsStandards getAllStationsStandards((string ap))\n  - bool deleteStationInfo((string MAC))\n  - void setModeConfig((string mode), (string targetBroker))\n  - void getTopologyScoreInfo()\n\n=======================================================================\nOBJECT: SSW.Steering.MasterConfig - Name: SSW.Steering.MasterConfig\n == PARAMETERS:\n  - SyncEnableField (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList - Name: SSW.Steering.ExceptionList\n == PARAMETERS:\n  - MaxNumberOfExceptions (type: uint32)\n      Attributes: persistent\n  - DeployExceptions (type: bool)\n      Attributes: persistent\n  - VideoAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n  - SlaveAutoExceptType (type: string)\n      Attributes: persistent\n      Validator: ['Legacy', 'Auto', 'Force', 'ForceNoSteer']\n == FUNCTIONS:\n  - void createGmapAutoException(string query, (string target), (string type), (bool persistent), (string key))\n  - void deleteGmapAutoExceptionByKey(string key)\n  - void deleteGmapAutoExceptionByQuery(string query)\n  - void createException((string MAC), (uint8 mask), (string target), (string type))\n  - void deleteException((string MAC), (uint8 mask))\n\n=======================================================================\nOBJECT: SSW.Steering.ExceptionList.Station - Name: SSW.Steering.ExceptionList.Station\n == PARAMETERS:\n  - MAC (type: string)\n      Attributes: persistent\n  - Mask (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '6'}\n  - Type (type: string)\n      Attributes: persistent\n      Validator: ['Auto', 'Force', 'ForceNoSteer']\n  - Target (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade - Name: SSW.Steering.QoSUpgrade\n == PARAMETERS:\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['ftos', 'wmm-mark']\n == FUNCTIONS:\n  - void createRule(string mac, (uint8 tid))\n  - void deleteRule(string mac)\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules - Name: SSW.Steering.QoSUpgrade.Rules\n == PARAMETERS:\n  - Query (type: string)\n      Attributes: persistent\n  - TID (type: uint8)\n      Attributes: persistent\n      Validator: {'min': '0', 'max': '7'}\n\n=======================================================================\nOBJECT: SSW.Steering.QoSUpgrade.Rules.Station - Name: SSW.Steering.QoSUpgrade.Rules.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n  - IPv4Address (type: string)\n  - IPv6Address (type: string)\n\n=======================================================================\nOBJECT: SSW.Steering.Policy - Name: SSW.Steering.Policy\n == PARAMETERS:\n  - BandSteeringStatus (type: bool)\n      Attributes: read_only\n  - ClientSteeringStatus (type: bool)\n      Attributes: read_only\n  - NrHandovers (type: uint32)\n      Attributes: read_only\n  - NrHandbacks (type: uint32)\n      Attributes: read_only\n  - NrFalseHandovers (type: uint32)\n      Attributes: read_only\n  - NrTriggers (type: uint32)\n      Attributes: read_only\n  - NrSuccess (type: uint32)\n      Attributes: read_only\n  - NrFail (type: uint32)\n      Attributes: read_only\n  - NrAbort (type: uint32)\n      Attributes: read_only\n  - NrFastFail (type: uint32)\n      Attributes: read_only\n  - AvgReconnectTime (type: uint32)\n      Attributes: read_only\n  - AvgSteeringTime (type: uint32)\n      Attributes: read_only\n  - NrReconnectMeasurements (type: uint32)\n      Attributes: read_only\n  - AvgFailReconnectTime (type: uint32)\n      Attributes: read_only\n  - MaxSteerReached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice - Name: SSW.Steering.ExternalDevice\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: SSW.Steering.ExternalDevice.Station - Name: SSW.Steering.ExternalDevice.Station\n == PARAMETERS:\n  - MACAddress (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SSW.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SSW\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Scheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Screen.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setAnonymousDisplay(string name)\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ServiceInvocation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SpeedTest.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - MaxRetriesPerServer (type: uint8)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/SrvInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"SrvInterface\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/StorageService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Time.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/ToD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"ToD\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/TopologyDiagnostics.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - JSONUploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/UDPEchoConfig.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UDPEchoConfig\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/UPnP-IGD.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/UPnP.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"UPnP\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/USBHosts.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/Upgrade.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"Upgrade\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/UserInterface.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/UserManagement.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/VPN.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VPN\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/VoWifi.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoWifi\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/VoiceActivation.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceActivation\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/VoiceService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"VoiceService\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WLanScheduler.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WOL.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WOLProxy.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WOLProxy\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WatchDog.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WatchDog\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WebuiupgradeService.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - ReleaseNotesPubkey (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - UpgradeOnly (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/WiFiBCM.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n{\n    \"errors\": [\n        {\n            \"error\": 13,\n            \"description\": \"Permission denied\",\n            \"info\": \"WiFiBCM\"\n        }\n    ]\n}"
  },
  {
    "path": "docs/API Documentation/Livebox 7/_ALL MODULES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: . - Name: .\n\n=======================================================================\nOBJECT: .UserManagement - Name: .UserManagement\n == FUNCTIONS:\n  - bool addUser((string name), (string password), (list groups), (bool enable), (string usertype), (string salt), (uint32 uid), (bool linux_user), (string friendlyname))\n  - bool changeUser((string name), (string password), (list groups), (bool enable), (string usertype), (string friendlyname))\n  - bool changePassword((string name), (string password))\n  - bool changePasswordSec((string name), (string password), (string old_password))\n  - bool removeUser((string name))\n  - bool removeUsers((string name), (string type))\n  - bool addGroup((string name), (bool enable), (bool linux_group))\n  - bool changeGroup((string name), (bool enable))\n  - bool removeGroup((string name))\n  - list getUsers()\n  - list getGroups()\n  - list getGroup((string name))\n  - bool getUsersAndGroups((list users), (list groups))\n  - list getUser(string name)\n  - bool addUserToGroups((string name), (list groups))\n  - bool removeUserFromGroups((string name), (list groups))\n  - bool authenticate(string name, string password, (string groupName))\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: .UserInterface - Name: .UserInterface\n == PARAMETERS:\n  - AvailableLanguages (type: string)\n      Attributes: read_only\n  - CurrentLanguage (type: string)\n      Attributes: persistent\n      Validator: ['en', 'fr']\n  - BackupFileName (type: string)\n      Attributes: persistent\n  - CurrentState (type: string)\n      Attributes: persistent\n      Validator: ['installed', 'connected', '']\n == FUNCTIONS:\n  - string getLanguage((string availableLanguages))\n  - bool setLanguage(string currentLanguage)\n  - string setState(string currentState)\n  - string getState()\n  - bool export((string fileName))\n  - bool import((string fileName))\n  - variant getDebugInformation()\n\n=======================================================================\nOBJECT: .DeviceManager - Name: .DeviceManager\n == PARAMETERS:\n  - DeviceSources (type: string)\n      Attributes: read_only\n  - DeviceTypes (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((string sources), (string types))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n=======================================================================\nOBJECT: .DeviceInfo - Name: .DeviceInfo\n == PARAMETERS:\n  - Manufacturer (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ModelName (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: read_only\n      Validator: {'max': '256'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - HardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - RescueVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ModemFirmwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - EnabledOptions (type: string)\n      Attributes: read_only\n      Validator: {'max': '1024'}\n  - AdditionalHardwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - AdditionalSoftwareVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SpecVersion (type: string)\n      Attributes: read_only\n      Validator: {'max': '16'}\n  - ProvisioningCode (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - UpTime (type: uint32)\n      Attributes: read_only\n  - FirstUseDate (type: date_time)\n      Attributes: read_only\n  - DeviceLog (type: string)\n      Attributes: read_only\n      Validator: {'max': '32768'}\n  - VendorConfigFileNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ManufacturerURL (type: string)\n      Attributes: read_only\n  - Country (type: string)\n      Attributes: persistent\n      Validator: {'max': '8'}\n  - ExternalIPAddress (type: string)\n      Attributes: read_only\n  - DeviceStatus (type: string)\n      Validator: ['Initializing', 'Up', 'Synchronized', 'Error', 'Disabled']\n  - NumberOfReboots (type: uint32)\n      Attributes: read_only, persistent\n  - UpgradeOccurred (type: bool)\n      Attributes: read_only\n  - ResetOccurred (type: bool)\n      Attributes: read_only\n  - RestoreOccurred (type: bool)\n      Attributes: read_only\n  - StandbyOccurred (type: bool)\n      Attributes: read_only\n  - X_SOFTATHOME-COM_AdditionalSoftwareVersions (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '4096'}\n  - BaseMAC (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - variant getPairingInfo()\n  - bool update()\n  - bool export((string fileName))\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: .Screen - Name: .Screen\n == FUNCTIONS:\n  - void setAnonymousDisplay(string name)\n  - void setShowWifiPassword(bool Enable)\n  - bool getShowWifiPassword()\n\n=======================================================================\nOBJECT: .DHCPv6 - Name: .DHCPv6\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: .Manifests - Name: .Manifests\n == PARAMETERS:\n  - ManifestDirs (type: string)\n  - Categories (type: string)\n == FUNCTIONS:\n  - list get((string user))\n  - list categories()\n  - void store(string user, string option, variant data)\n  - variant retrieve(string user, string option)\n  - bool export()\n  - bool import()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Manifests.UserData.Data - Name: Manifests.UserData.Data\n == PARAMETERS:\n  - Content (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Profiles - Name: .Profiles\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n=======================================================================\nOBJECT: .DynDNS - Name: .DynDNS\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - EnableOnCgnat (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getServices()\n  - list getHosts()\n  - bool addHost((string service), (string hostname), (string username), (string password), (bool enable))\n  - bool delHost((string hostname))\n  - void setGlobalEnable((bool enable))\n  - bool getGlobalEnable()\n  - void setEnableOnCgnat((bool value))\n  - bool getEnableOnCgnat()\n\n=======================================================================\nOBJECT: .Phonebook - Name: .Phonebook\n == FUNCTIONS:\n  - string addContactAndGenUUID(contact_t contact)\n  - bool addContact(contact_t contact)\n  - bool addContacts(list contacts, (list result))\n  - bool removeContactByUniqueID(string uniqueID)\n  - bool removeContactByVref(string vref)\n  - bool removeContactByFormattedName(string formattedName)\n  - bool removeContact(string formattedName)\n  - bool removeAllContacts()\n  - contact_t getContactByUniqueID(string uniqueID)\n  - contact_t getContactByFormattedName(string formattedName)\n  - contact_t getContactByVref(string vref)\n  - contact_t getContact(string formattedName)\n  - contact_t getContactByNumber(string number)\n  - contact_t getContactByUsername(string username)\n  - list getAllContacts()\n  - uint32 getNumberOfContacts()\n  - uint32 getAvailableNumberOfContacts()\n  - uint32 getMaxNumberOfContacts()\n  - bool checkContactExistsWithUniqueID(string uniqueID)\n  - bool modifyContactByUniqueID(string uniqueID, contact_t contact)\n  - bool modifyContactByFormattedName(string formattedName, contact_t contact)\n  - bool modifyContact((string formattedName), (contact_t contact))\n  - bool disableCardDavAndCleanupEntries()\n\n=======================================================================\nOBJECT: .Scheduler - Name: .Scheduler\n == PARAMETERS:\n  - TypesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool addSchedule(string type, schedule_t info)\n  - bool updateScheduleEntries(string type, string ID, list entries, (string device))\n  - bool enableSchedule(string type, string ID, (bool enable), (string device))\n  - bool enableAllSchedule(string type, bool enable)\n  - bool overrideSchedule(string type, string ID, string override, (string device))\n  - bool overrideState(string type, string ID, string state, (string device))\n  - bool removeSchedules(string type, (list ID), (list device))\n  - bool getScheduleTypes((list types))\n  - bool getSchedules(string type, (list scheduleInfo), (list target))\n  - bool getCompleteSchedules(string type, (list scheduleInfo), (list target))\n  - bool getSchedule(string type, string ID, (schedule_t info), (string device))\n\n=======================================================================\nOBJECT: .USBHosts - Name: .USBHosts\n == PARAMETERS:\n  - PortNameNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDevices((list deviceClass))\n  - void import()\n  - void export()\n  - bool enableUSB3(bool enable)\n\n=======================================================================\nOBJECT: .WOL - Name: .WOL\n == FUNCTIONS:\n  - void sendWakeOnLan(string hostID, (string intf), (string password), (bool broadcast), (uint32 retries), (uint32 interval))\n\n=======================================================================\nOBJECT: .WLanScheduler - Name: .WLanScheduler\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules.Entry - Name: WLanScheduler.Schedules.Entry\n == PARAMETERS:\n  - State (type: string)\n      Attributes: persistent\n  - Begin (type: uint32)\n      Attributes: persistent\n  - End (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .RemoteAccess - Name: .RemoteAccess\n == PARAMETERS:\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - SourcePrefixNonEmpty (type: bool)\n  - PortMode (type: string)\n      Attributes: persistent\n      Validator: ['RANDOM', 'DEFAULT']\n  - AllowedPorts (type: string)\n      Attributes: persistent\n  - Port (type: uint16)\n      Attributes: persistent\n  - SupportedProtocols (type: string)\n      Attributes: read_only\n  - Protocol (type: string)\n      Attributes: persistent\n      Validator: ['HTTP', 'HTTPS']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - TimeLeft (type: uint32)\n      Attributes: read_only\n  - Interface (type: string)\n      Attributes: persistent\n  - EnableTime (type: date_time)\n      Attributes: read_only, persistent\n  - DisabledAtStartup (type: bool)\n      Attributes: read_only, persistent\n  - ForcePortFailure (type: uint16)\n  - EmulateHTTPService (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - uint16 enable((uint16 port), (bool secure), (uint32 timeout), (string sourcePrefix))\n  - bool disable()\n  - uint32 getTimeLeft()\n  - bool restartTimer()\n\n=======================================================================\nOBJECT: .History - Name: .History\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: History.Backup.Entry - Name: History.Backup.Entry\n == PARAMETERS:\n  - Filenames (type: string)\n      Attributes: read_only\n  - RotationIndex (type: uint32)\n      Attributes: read_only\n  - CreationDate (type: date_time)\n      Attributes: read_only\n  - SoftwareVersion (type: string)\n      Attributes: read_only\n  - Source (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .PowerManagement - Name: .PowerManagement\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n  - ConfigurationMode (type: string)\n      Attributes: read_only\n      Validator: ['Dynamic', 'Static']\n  - Power (type: uint32)\n      Attributes: read_only\n  - InformRandomDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant getSupportedModes()\n  - variant getSupportedTriggers()\n  - variant setProfiles(list profiles)\n  - variant setScheduledProfiles(list profiles)\n  - variant setScheduledProfilesOverride(list overrides)\n  - variant setTriggeredProfiles(list profiles)\n  - variant getProfiles((list profiles))\n  - void removeProfiles((list profiles))\n  - void setState(string ID, string state)\n  - bool import()\n  - bool export()\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .UPnP-IGD - Name: .UPnP-IGD\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WANAccessProvider (type: string)\n      Attributes: persistent\n  - ModelNumber (type: string)\n      Attributes: persistent\n  - ModelName (type: string)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - AllowedHostHeader (type: string)\n      Attributes: persistent\n  - AlwaysStartIgdDaemon (type: bool)\n      Attributes: persistent\n  - TR064ServiceURL (type: string)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .NetMaster - Name: .NetMaster\n == PARAMETERS:\n  - EnableInterfaces (type: bool)\n      Attributes: persistent\n  - EnableIPv6 (type: bool)\n      Attributes: persistent\n  - IPv6PrefixMode (type: string)\n      Attributes: persistent\n      Validator: ['DHCPv6', 'RA', 'RAandDHCPv6']\n  - DisablePhysicalInterfaces (type: bool)\n      Attributes: persistent\n  - WANMode (type: string)\n == FUNCTIONS:\n  - map getInterfaceConfig(string name)\n  - void addWANMode(string wanmode)\n  - void delWANMode(string wanmode)\n  - void renameWANMode(string wanmode, (string new_wanmode))\n  - void export((string filename))\n  - void import()\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge - Name: NetMaster.LAN.Bridge\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - NemoName (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void setIPv4(string Address, uint8 PrefixLength, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void getIPv4((string Address), (uint8 PrefixLength), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime), (string DNSServers), (string NTPServers), (string DomainSearchList), (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv4Configuration(string Name, string Address, uint8 PrefixLength, (bool Enable), (bool AllowPublic), (bool NATEnable))\n  - void setIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void getIPv6Configuration(string Name, (string Address), (uint8 PrefixLength), (string Intf), (uint8 SubnetOffset), (bool DHCPEnable), (bool DHCPIAPDEnable), (bool DHCPIANAEnable), (string DNSServers), (string NTPServers), (bool Enable))\n  - void addIntf(string Intf)\n  - void removeIntf(string Intf)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.LLIntf - Name: NetMaster.LAN.Bridge.LLIntf\n == PARAMETERS:\n  - Name (type: string)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv4 - Name: NetMaster.LAN.Bridge.IPv4\n == PARAMETERS:\n  - Enable (type: bool)\n  - NemoName (type: string)\n      Attributes: read_only\n  - Address (type: string)\n  - PrefixLength (type: uint8)\n      Validator: {'min': '0', 'max': '30'}\n  - NATEnable (type: bool)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.DHCPv4 - Name: NetMaster.LAN.Bridge.DHCPv4\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - MinAddress (type: string)\n  - MaxAddress (type: string)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DomainSearchList (type: string)\n  - LeaseTime (type: uint32)\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6 - Name: NetMaster.LAN.Bridge.IPv6\n == PARAMETERS:\n  - Enable (type: bool)\n  - Address (type: string)\n  - PrefixLength (type: string)\n  - Intf (type: string)\n  - SubnetOffset (type: uint8)\n  - DNSServers (type: string)\n  - NTPServers (type: string)\n  - DNSMode (type: string)\n      Validator: ['GUA', 'LLA', 'GUA_LLA']\n\n=======================================================================\nOBJECT: NetMaster.LAN.Bridge.IPv6.DHCPv6 - Name: NetMaster.LAN.Bridge.IPv6.DHCPv6\n == PARAMETERS:\n  - Pool (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n  - IAPDEnable (type: bool)\n  - IAPDPrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '62'}\n  - IAPDPrefixMask (type: string)\n  - IAPDLeasePrefixLength (type: uint32)\n      Validator: {'min': '0', 'max': '64'}\n  - IANAEnable (type: bool)\n  - DefaultValidLifetime (type: int32)\n      Attributes: persistent\n  - DefaultPreferredLifetime (type: int32)\n      Attributes: persistent\n  - DeprecatedTimeout (type: int32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .DHCPv4 - Name: .DHCPv4\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool - Name: DHCPv4.Server.Pool\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Authoritative (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error_Misconfigured']\n  - Allocation (type: string)\n      Attributes: persistent\n      Validator: ['dynamic', 'auto']\n  - PersistentLeases (type: bool)\n      Attributes: persistent\n  - LeasesOnHold (type: bool)\n      Attributes: persistent\n  - ARPProtect (type: bool)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - DSCPMark (type: int8)\n      Attributes: persistent\n  - MinAddress (type: string)\n      Attributes: persistent\n  - MaxAddress (type: string)\n      Attributes: persistent\n  - SubnetMask (type: string)\n      Attributes: persistent\n  - IPRouters (type: string)\n      Attributes: persistent\n  - Server (type: string)\n      Attributes: persistent\n  - MinLeaseTime (type: uint32)\n      Attributes: persistent\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - MaxLeaseTime (type: uint32)\n      Attributes: persistent\n  - DNSServers (type: string)\n      Attributes: persistent\n  - NTPServers (type: string)\n      Attributes: persistent\n  - DomainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '72'}\n  - Unnumbered (type: bool)\n      Attributes: persistent\n  - IncludeOption125 (type: bool)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - ServerHostName (type: string)\n      Attributes: persistent\n      Validator: {'max': '63'}\n  - FileName (type: string)\n      Attributes: persistent\n      Validator: {'max': '127'}\n  - LeaseNumberOfEntries (type: uint32)\n      Attributes: read_only, volatile\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - StaticAddressNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addStaticLease(string MACAddress, string IPAddress)\n  - string addLeaseFromPool(string MACAddress)\n  - void setStaticLease(string MACAddress, (string IPAddress), (bool Enable))\n  - void deleteStaticLease(string MACAddress)\n  - list getStaticLeases()\n  - list getLeases((string rule))\n  - void setLeaseTime(uint32 leasetime)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Authentication - Name: DHCPv4.Server.Pool.Authentication\n == PARAMETERS:\n  - Protocol (type: int32)\n      Attributes: persistent\n      Validator: {'max': '1'}\n  - Algorithm (type: uint8)\n      Attributes: persistent\n  - ConfigurationToken (type: string)\n      Attributes: persistent\n      Validator: {'max': '40'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Option - Name: DHCPv4.Server.Pool.Option\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Tag (type: uint8)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - Value (type: string)\n      Attributes: persistent\n  - Policy (type: string)\n      Attributes: persistent\n      Validator: ['requested', 'always']\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule - Name: DHCPv4.Server.Pool.Rule\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - VendorClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - VendorClassIDExclude (type: bool)\n      Attributes: persistent\n  - VendorClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - ClientID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - ClientIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassID (type: string)\n      Attributes: persistent\n      Validator: {'max': '255'}\n  - UserClassIDExclude (type: bool)\n      Attributes: persistent\n  - UserClassIDMode (type: string)\n      Attributes: persistent\n      Validator: ['Exact', 'Prefix', 'Suffix', 'Substring']\n  - Chaddr (type: string)\n      Attributes: persistent\n  - ChaddrMask (type: string)\n      Attributes: persistent\n  - ChaddrExclude (type: string)\n      Attributes: persistent\n  - Criteria (type: uint32)\n      Attributes: volatile\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease - Name: DHCPv4.Server.Pool.Rule.Lease\n == PARAMETERS:\n  - ClientID (type: string)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n  - MACAddress (type: string)\n      Attributes: persistent\n  - LeaseTimeRemaining (type: int32)\n      Attributes: read_only, volatile\n  - LeaseTime (type: uint32)\n      Attributes: persistent\n  - Gateway (type: string)\n      Attributes: persistent\n  - WaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - StoppedWaitingForPing (type: bool)\n      Attributes: read_only, volatile\n  - Active (type: bool)\n      Attributes: read_only, volatile\n  - StopLease (type: bool)\n      Attributes: read_only, volatile\n  - NullTermination (type: bool)\n      Attributes: read_only, volatile\n  - MsftClasslessRt (type: bool)\n      Attributes: persistent\n  - Reserved (type: bool)\n      Attributes: persistent\n  - Internal (type: bool)\n      Attributes: persistent\n  - OnHold (type: bool)\n      Attributes: persistent\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: read_only, volatile\n  - TransactionID (type: uint32)\n      Attributes: read_only, volatile\n  - CIAddr (type: string)\n      Attributes: read_only, volatile\n  - GIAddr (type: string)\n      Attributes: read_only, volatile\n  - DiscoverOptionList (type: string)\n  - RequestOptionList (type: string)\n  - OptionNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void forceRenew()\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.Rule.Lease.Option - Name: DHCPv4.Server.Pool.Rule.Lease.Option\n == PARAMETERS:\n  - Tag (type: uint8)\n      Validator: {'max': '255'}\n  - Value (type: string)\n\n=======================================================================\nOBJECT: DHCPv4.Server.Pool.StaticAddress - Name: DHCPv4.Server.Pool.StaticAddress\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Alias (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Chaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '17'}\n  - Yiaddr (type: string)\n      Attributes: persistent\n      Validator: {'max': '15'}\n\n=======================================================================\nOBJECT: DHCPv4.Server.Stats - Name: DHCPv4.Server.Stats\n == PARAMETERS:\n  - State (type: string)\n      Validator: ['Running']\n  - CorruptPackets (type: uint32)\n      Attributes: read_only, volatile\n  - Discover (type: uint32)\n      Attributes: read_only, volatile\n  - Request (type: uint32)\n      Attributes: read_only, volatile\n  - Decline (type: uint32)\n      Attributes: read_only, volatile\n  - Release (type: uint32)\n      Attributes: read_only, volatile\n  - Inform (type: uint32)\n      Attributes: read_only, volatile\n  - BOOTP (type: uint32)\n      Attributes: read_only, volatile\n  - OtherMessageTypes (type: uint32)\n      Attributes: read_only, volatile\n  - Offer (type: uint32)\n      Attributes: read_only, volatile\n  - ACK (type: uint32)\n      Attributes: read_only, volatile\n  - NAK (type: uint32)\n      Attributes: read_only, volatile\n  - ForceRenew (type: uint32)\n      Attributes: read_only, volatile\n  - TxFailure (type: uint32)\n      Attributes: read_only, volatile\n  - RelayOptionDropped (type: uint32)\n      Attributes: read_only, volatile\n  - SecondServerDetected (type: bool)\n      Attributes: read_only, volatile\n  - DoraCyclesAverageDuration_short_ms (type: uint32)\n      Attributes: read_only\n  - DoraCyclesAverageDuration_normal_ms (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getDoraCyclesDetails()\n\n=======================================================================\nOBJECT: .DNS - Name: .DNS\n == FUNCTIONS:\n  - list getDNSServers(string flag)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DNS.Server.Route - Name: DNS.Server.Route\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled', 'Error']\n  - DNS (type: string)\n      Attributes: persistent\n  - SRC (type: string)\n      Attributes: persistent\n  - Srcmask (type: uint8)\n      Attributes: persistent\n  - Domain (type: string)\n      Attributes: persistent\n  - Metric (type: uint8)\n      Attributes: persistent\n  - Intf (type: string)\n      Attributes: persistent\n  - Flags (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .Maculan - Name: .Maculan\n\n=======================================================================\nOBJECT: .PnP - Name: .PnP\n == PARAMETERS:\n  - Status (type: string)\n      Validator: ['Idle', 'Disabled', 'Running', 'Error', 'OK', 'Timeout']\n  - LastName (type: string)\n      Attributes: persistent\n  - FirstName (type: string)\n      Attributes: persistent\n  - MobilePhoneNumber (type: string)\n      Attributes: persistent\n      Validator: {'max': '10'}\n  - ValidationDomain (type: string)\n  - ConnectionMode (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - list get()\n\n=======================================================================\nOBJECT: .PasswordRecovery - Name: .PasswordRecovery\n == FUNCTIONS:\n  - void start()\n  - void stop()\n  - int setPassword((string password))\n\n=======================================================================\nOBJECT: .Time - Name: .Time\n == FUNCTIONS:\n  - bool getTime((string time))\n  - void getUTCTime((string time))\n  - void getStatus((string status))\n  - void getNTPServers((variant servers))\n  - bool getLocalTimeZoneName((string timezone))\n  - bool setLocalTimeZoneName(string timezone)\n  - bool listLocalTimeZoneNames((list timezones))\n\n=======================================================================\nOBJECT: .Locations - Name: .Locations\n == FUNCTIONS:\n  - void addLocation(string key, string name, (string description))\n  - void removeLocation(string key)\n  - void setSection(string location, string section)\n  - void removeSection(string location, string section)\n  - list getComposition(string location, (string flags))\n  - list getLocations(string location)\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: .SpeedTest - Name: .SpeedTest\n == PARAMETERS:\n  - MaxRetriesPerServer (type: uint8)\n      Attributes: persistent\n  - ServerConfigNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - DiagnosticNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void getWANResults()\n  - void getLinkInfo((string iface))\n\n=======================================================================\nOBJECT: .StorageService - Name: .StorageService\n == FUNCTIONS:\n  - logicalVolume_t getLogicalVolume(string uri)\n  - list getPhysicalMediums()\n  - bool ejectLogicalVolume(string uri)\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Rules.Target - Name: StorageService.Rules.Target\n == PARAMETERS:\n  - Path (type: string)\n      Attributes: read_only, persistent\n  - Value (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium.Kernel - Name: StorageService.PhysicalMedium.Kernel\n == PARAMETERS:\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Kernel - Name: StorageService.LogicalVolume.Kernel\n == PARAMETERS:\n  - UUID (type: string)\n      Attributes: read_only, persistent\n  - Label (type: string)\n      Attributes: read_only, persistent\n  - SysfsPath (type: string)\n      Attributes: read_only, persistent\n  - DevfsPath (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Process - Name: StorageService.LogicalVolume.Process\n == PARAMETERS:\n  - ProcessID (type: int32)\n  - ApplicationName (type: string)\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder - Name: StorageService.LogicalVolume.Folder\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - UserAccountAccess (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.UserAccess - Name: StorageService.LogicalVolume.Folder.UserAccess\n == PARAMETERS:\n  - UserReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume.Folder.GroupAccess - Name: StorageService.LogicalVolume.Folder.GroupAccess\n == PARAMETERS:\n  - GroupReference (type: string)\n      Attributes: persistent\n  - Permissions (type: uint8)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .AutoDiag - Name: .AutoDiag\n == PARAMETERS:\n  - DiagnosticsScriptFile (type: string)\n      Attributes: read_only\n  - DiagnosticsState (type: string)\n      Validator: ['None', 'Requested', 'Cancel', 'Complete', 'Error_Internal', 'Error_Other']\n  - Results (type: string)\n      Attributes: read_only\n  - InternalGetProperty (type: bool)\n      Attributes: read_only, persistent\n  - HeaderFieldNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ScriptReflashMethod (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Firmware', '']\n == FUNCTIONS:\n  - bool executeDiagnostics(string id, (bool usr))\n  - bool executeTrigger(string event)\n  - bool cancelDiagnostics((string id))\n  - void getDiagnosticsState()\n  - void getOpenLanDiagnosticsList()\n  - void getDatamodelWhiteList()\n  - void getFunctionWhiteList()\n  - void getDiagnosticsList()\n  - list listDiagnostics()\n  - list getContext()\n  - bool clearContext()\n  - bool setUserInput(string input)\n\n=======================================================================\nOBJECT: .ServiceInvocation - Name: .ServiceInvocation\n == PARAMETERS:\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool export((string fileName))\n  - bool import((string fileName))\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: .Probe - Name: .Probe\n == PARAMETERS:\n  - Version (type: string)\n      Attributes: read_only\n  - BlacklistMQTT (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void logEvents(plib_event_list_t events)\n\n=======================================================================\nOBJECT: .OrangeServices - Name: .OrangeServices\n == FUNCTIONS:\n  - string getSubscriptionStatus(bool refresh)\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n=======================================================================\nOBJECT: .SAHPairing - Name: .SAHPairing\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Unconfigured', 'MasterIdle', 'MasterPairing', 'SlaveUnpaired', 'SlaveConnecting', 'SlavePairing', 'SlavePaired']\n  - Interface (type: string)\n      Attributes: persistent\n  - DevicesNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void startPairing()\n  - void startAutoPairing()\n  - void stopAutoPairing()\n  - void setMaster()\n  - void setSlave()\n  - void export()\n  - void import()\n  - bool addAclEntry(string topic, (string deviceClass), (string accessType), (string device))\n  - void removeAclTopic(string topic, (string device))\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: .HTTPService - Name: .HTTPService\n == PARAMETERS:\n  - EnableWebServiceStatistics (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool getAuthenticationModes()\n  - bool getCurrentUser()\n\n=======================================================================\nOBJECT: .WebuiupgradeService - Name: .WebuiupgradeService\n == PARAMETERS:\n  - SOPMinimumVersion (type: string)\n      Attributes: persistent\n  - URL (type: string)\n      Attributes: persistent\n  - ReleaseNotesURL (type: string)\n      Attributes: persistent\n  - ReleaseNotesTypes (type: string)\n      Attributes: persistent\n  - ReleaseNotesPubkey (type: string)\n      Attributes: persistent\n  - MinimumDelay (type: uint32)\n      Attributes: persistent\n  - LastSyncTime (type: date_time)\n      Attributes: read_only\n  - MaxCachedVersionAge (type: uint32)\n      Attributes: persistent\n  - NewVersion (type: string)\n      Attributes: read_only\n  - UpgradeOnly (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - openfile_return_t openfile((filemap_t filemap), (bool cert))\n  - bool verifyRUIVersion((string filetype), (string version))\n  - void getReleaseNotes((string version), (string language), (string releaseNotes))\n  - bool isCustomFileTypeSupported((string filetype), (bool cert))\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .HomeLan - Name: .HomeLan\n == FUNCTIONS:\n  - bool getResults((uint32 Seconds), (uint32 NumberOfReadings), (list InterfaceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getDeviceResults((uint32 Seconds), (uint32 NumberOfReadings), (string DeviceName), (uint32 BeginTrafficTimestamp), (uint32 EndTrafficTimestamp))\n  - bool getSaturationResults()\n  - bool getWANCounters()\n  - bool getInterfacesNames()\n  - bool getDevicesNames()\n  - bool getStatus()\n  - bool getMaxNumberOfRecords()\n  - bool getReadingInterval()\n  - bool getDevicesStatus()\n  - bool getDevicesReadingInterval()\n  - bool import()\n  - bool export()\n  - bool addDevice((string macaddress))\n  - bool deleteDevice((string macaddress))\n  - void startDeviceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopDeviceMonitoringTest()\n  - void startInterfaceMonitoringTest((uint32 duration), (uint32 interval))\n  - void stopInterfaceMonitoringTest()\n  - bool getSaturationMeasures()\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Interface.Stats - Name: HomeLan.Interface.Stats\n == PARAMETERS:\n  - BytesSent (type: uint64)\n      Attributes: read_only\n  - BytesReceived (type: uint64)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: .IoTService - Name: .IoTService\n == PARAMETERS:\n  - MaximumConnectionTime (type: uint32)\n      Attributes: persistent\n  - ScheduledConnectionTime (type: date_time)\n      Attributes: persistent\n  - Reset (type: bool)\n      Attributes: volatile\n == FUNCTIONS:\n  - int32 setStatus(string status)\n  - int32 getStatus((status_t status))\n  - int32 getUUID((string uniqueIdentifier))\n\n=======================================================================\nOBJECT: .TopologyDiagnostics - Name: .TopologyDiagnostics\n == PARAMETERS:\n  - DiagnosticsState (type: string)\n  - DiscoveryMode (type: string)\n      Attributes: persistent\n      Validator: ['Relative', 'Absolute']\n  - Timeout (type: uint32)\n      Attributes: persistent\n  - LLTDIcon (type: bool)\n      Attributes: persistent\n  - PeriodicEnable (type: bool)\n      Attributes: persistent\n  - PeriodicInterval (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '30'}\n  - UploadXML (type: bool)\n      Attributes: persistent\n  - UploadJSON (type: bool)\n      Attributes: persistent\n  - LastUpdate (type: date_time)\n      Attributes: read_only, persistent\n  - AutomaticUpload (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Remote', 'Both', 'None']\n  - JSONUploadURL (type: string)\n      Attributes: persistent\n  - BootTimer (type: uint32)\n      Attributes: persistent\n  - CustomerAuthorization (type: bool)\n      Attributes: persistent\n  - APIVersion (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant data))\n  - variant buildTopology((uint32 Timeout), (bool LLTDIcon), (bool SendXmlFile), (bool SendJson))\n  - bool uploadTopology()\n  - bool enableAutomaticUpload((bool enable))\n  - bool isAutomaticUploadEnabled()\n  - bool setCustomerAuthorization(bool allowed)\n  - void export()\n  - void import()\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: .Firewall - Name: .Firewall\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n  - ExcludedOriginsPCP (type: string)\n      Attributes: persistent\n  - UpnpPortForwardingStatus (type: bool)\n      Attributes: read_only\n  - UpnpPortForwardingEnable (type: bool)\n      Attributes: persistent\n  - ChainNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ProtocolForwardingNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PinholeNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - ListNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool commit()\n  - bool setRespondToPing(string sourceInterface, service_enable_t service_enable)\n  - service_enable_t getRespondToPing(string sourceInterface)\n  - string setRedirect(string id, (string sourceInterface), (string destinationPort), string protocol, (int32 ipversion), (bool enable))\n  - bool deleteRedirect(string id)\n  - list getRedirect(string id)\n  - string setProtocolForwarding(string id, string destinationIPAddress, string protocol, (string sourceInterface), (string sourcePrefix), (bool enable), (bool persistent), (string description))\n  - bool deleteProtocolForwarding(string id)\n  - list getProtocolForwarding((string id))\n  - string setPortForwarding((string id), string origin, string sourceInterface, (string externalPort), string internalPort, string destinationIPAddress, (string sourcePrefix), string protocol, (bool enable), (bool persistent), (string description), (string destinationMACAddress), (int32 leaseDuration), (bool upnpv1Compat))\n  - string refreshPortForwarding(string id, string origin, (string description), (bool persistent), (int32 leaseDuration))\n  - bool deletePortForwarding((string id), string origin, (string destinationIPAddress))\n  - list getPortForwarding((string id), (string origin))\n  - void enablePortForwarding(string id, string origin, bool enable)\n  - string setPinhole((string id), string origin, string sourceInterface, (string sourcePort), string destinationPort, string destinationIPAddress, (string sourcePrefix), string protocol, (int32 ipversion), (bool enable), (bool persistent), (string description), (string destinationMACAddress))\n  - bool deletePinhole((string id), string origin)\n  - list getPinhole((string id), (string origin))\n  - string setDMZ((string id), string sourceInterface, string destinationIPAddress, (string sourcePrefix), bool enable)\n  - bool deleteDMZ(string id)\n  - list getDMZ((string id))\n  - string setCustomRule((string id), (string chain), string action, (string destinationPort), (string sourcePort), (string destinationPrefix), (string sourcePrefix), (string protocol), (int32 ipversion), (bool enable), (string description), (string destinationMAC), (string sourceMAC), (bool persistent))\n  - bool deleteCustomRule(string id, (string chain))\n  - list getCustomRule((string id), (string chain))\n  - void setListEntry(string listName, string entryId, string destinationPrefix, string protocol, (bool enable), (string sourcePrefix))\n  - void deleteListEntry(string listName, string entryId)\n  - list getListEntries(string listName, (string entryId))\n  - bool setFirewallLevel(string level)\n  - bool setFirewallIPv6Level(string level)\n  - string getFirewallIPv6Level()\n  - string getFirewallLevel()\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Chain.Rule - Name: Firewall.Chain.Rule\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'TargetChain']\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Class (type: string)\n      Attributes: persistent\n      Validator: ['Local', 'Forward', 'PortFW', '']\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - SourceMACAddress (type: string)\n      Attributes: persistent\n  - DestinationPrefix (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - TargetChain (type: string)\n      Attributes: persistent\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.List.Entry - Name: Firewall.List.Entry\n == PARAMETERS:\n  - Id (type: string)\n  - Enable (type: bool)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Pending', 'Error']\n  - Protocol (type: string)\n  - DestinationPrefix (type: string)\n  - SourcePrefix (type: string)\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP - Name: Firewall.PCP.MAP\n == PARAMETERS:\n  - Enable (type: bool)\n  - Status (type: bool)\n  - PCPStatus (type: string)\n      Validator: ['INIT', 'STARTED', 'SUCCESS', 'UNSUPP_VERSION', 'NOT_AUTHORIZED', 'MALFORMED_REQUEST', 'UNSUPP_OPCODE', 'UNSUPP_OPTION', 'MALFORMED_OPTION', 'NETWORK_FAILURE', 'NO_RESOURCES', 'UNSUPP_PROTOCOL', 'USER_EX_QUOTA', 'CANNOT_PROVIDE_EXTERNAL_PORT', 'ADDRESS_MISMATCH', 'EXCESSIVE_REMOTE_PEERS', 'ERROR']\n  - Nonce (type: string)\n      Attributes: persistent\n  - Protocol (type: uint8)\n      Attributes: persistent\n  - InternalPort (type: uint16)\n      Attributes: persistent\n  - InternalIPAddress (type: string)\n      Attributes: persistent\n  - ProposedExternalPort (type: uint16)\n      Attributes: persistent\n  - ProposedExternalIPAddress (type: string)\n      Attributes: persistent\n  - ExternalPort (type: uint16)\n      Attributes: persistent\n  - ExternalIPAddress (type: string)\n      Attributes: persistent\n  - Lifetime (type: uint32)\n      Attributes: persistent\n  - AssignedLifetime (type: uint32)\n  - ActiveLifetime (type: uint32)\n      Attributes: read_only\n  - UPnPv1Compat (type: bool)\n  - FilterNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP.MAP.Filter - Name: Firewall.PCP.MAP.Filter\n == PARAMETERS:\n  - Prefix (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '32'}\n  - RemotePort (type: uint16)\n      Attributes: persistent\n  - IPAddress (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: .NMC - Name: .NMC\n == PARAMETERS:\n  - WanModeList (type: string)\n      Attributes: read_only\n  - WanMode (type: string)\n      Attributes: persistent\n  - Username (type: string)\n      Attributes: persistent\n  - FactoryResetScheduled (type: bool)\n      Attributes: read_only\n  - ConnectionError (type: bool)\n  - DefaultsLoaded (type: bool)\n  - ProvisioningState (type: string)\n      Attributes: persistent\n      Validator: ['reset', 'upgrade', 'restore', 'done']\n  - OfferType (type: string)\n      Attributes: persistent\n      Validator: ['Res', 'Pro']\n  - OfferName (type: string)\n      Attributes: persistent\n  - IPTVMode (type: string)\n      Attributes: persistent\n      Validator: ['Dedicated', 'Internet']\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n  - bool setWanMode(string WanMode, (string Username), (string Password))\n  - string getWanModeList()\n  - bool getWANStatus((string LinkType), (string LinkState), (string WanState), (string MACAddress), (string Protocol), (string ConnectionState), (string LastConnectionError), (string IPAddress), (string RemoteGateway), (string DNSServers))\n  - void reset((string reason))\n  - void reboot((string reason))\n  - void setLANIP(string Address, string Netmask, bool DHCPEnable, string DHCPMinAddress, string DHCPMaxAddress, (uint32 LeaseTime))\n  - void getLANIP((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void shutdown((string reason))\n  - uint32 enableRemoteAccess((string username), (string password), (uint32 port), (uint32 timeout), (string sourcePrefix), (string accessType), (bool secure))\n  - remoteaccess_t getRemoteAccess((string username), (string usertype))\n  - uint32 disableRemoteAccess((string accessType))\n  - void updateVersionInfo()\n  - bool checkForUpgrades()\n  - list getVoIPConfig()\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser - Name: NMC.Gpon.Laser\n == PARAMETERS:\n  - FilePath (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Gpon.Laser.Attribute - Name: NMC.Gpon.Laser.Attribute\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Value (type: int32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Wifi.WPS - Name: NMC.Wifi.WPS\n == PARAMETERS:\n  - UsePersistentPin (type: bool)\n      Attributes: persistent\n  - PersistentPin (type: string)\n      Attributes: persistent\n  - CurrentPinCode (type: string)\n == FUNCTIONS:\n  - void generateSelfPIN()\n\n=======================================================================\nOBJECT: NMC.Wifi.Config - Name: NMC.Wifi.Config\n == PARAMETERS:\n  - ForwardWPSCredentials (type: bool)\n      Attributes: persistent\n  - EpWpsUseBackhaulCredentials (type: bool)\n      Attributes: persistent\n  - EnableStateChange (type: bool)\n      Attributes: persistent\n  - EnableVapStateChange (type: bool)\n      Attributes: persistent\n  - EpEnableStateChange (type: bool)\n      Attributes: persistent\n  - DelayApDownTime (type: uint32)\n      Attributes: persistent\n  - DelayEpUpTime (type: uint32)\n      Attributes: persistent\n  - SlaveEnableRegistrarOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - SlaveEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - MasterEnableVapOn (type: string)\n      Attributes: persistent\n      Validator: ['NoBackhaul', 'BackhaulUp']\n  - CredentialsSet (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostEnable (type: bool)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostTimeout (type: uint32)\n      Attributes: persistent\n  - ToggleEpOnBackhaulLostMaxNrToggle (type: uint32)\n      Attributes: persistent\n  - SlaveRadiosOnWhenCredentialsSet (type: bool)\n      Attributes: persistent\n  - SlaveWifiClientModeEnable (type: bool)\n      Attributes: persistent\n  - CallSSWOnWPS (type: string)\n      Attributes: persistent\n      Validator: ['Never', 'Addon', 'Always']\n  - EpWpsScanForSecMode (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig - Name: NMC.Wifi.Config.EnableConfig\n == PARAMETERS:\n  - DefaultTarget (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Config.EnableConfig.Custom - Name: NMC.Wifi.Config.EnableConfig.Custom\n == PARAMETERS:\n  - Source (type: string)\n      Attributes: persistent\n  - Target (type: string)\n      Attributes: persistent\n      Validator: ['AccessPoint', 'Radio', 'Auto']\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor - Name: NMC.Wifi.Vendor\n\n=======================================================================\nOBJECT: NMC.Wifi.Vendor.BCM - Name: NMC.Wifi.Vendor.BCM\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - DebugModeEnable (type: bool)\n      Attributes: persistent\n  - DebugModeStatus (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Wifi.Stats - Name: NMC.Wifi.Stats\n == PARAMETERS:\n  - TogglesOnBackhaulLost (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Reboot.Reboot - Name: NMC.Reboot.Reboot\n == PARAMETERS:\n  - BootDate (type: date_time)\n      Attributes: read_only, persistent\n  - BootReason (type: string)\n      Attributes: read_only, persistent\n      Validator: ['POR', 'Ext.HW', 'Watchdog', 'NMC', 'WakeUp', 'PCIE', 'ERROR', 'TimedReboot', 'Unsupported chipset']\n  - ShutdownDate (type: date_time)\n      Attributes: read_only, persistent\n  - ShutdownReason (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.VPN.FWServices - Name: NMC.VPN.FWServices\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: .Devices - Name: .Devices\n == FUNCTIONS:\n  - bool destroyDevice(string key)\n  - list find((variant expression), (string flags))\n  - list get((variant expression), (string flags))\n  - list findByIPAddress(string ipaddress, (string ipstatus), (string flags))\n  - device_t fetchDevice(string key, (string flags))\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Devices.Device.Alternative - Name: Devices.Device.Alternative\n\n=======================================================================\nOBJECT: Devices.Device.Names - Name: Devices.Device.Names\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n  - Suffix (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.DeviceTypes - Name: Devices.Device.DeviceTypes\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only, persistent\n  - Source (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: Devices.Device.UDevice - Name: Devices.Device.UDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Devices.Device.LDevice - Name: Devices.Device.LDevice\n == PARAMETERS:\n  - Type (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: .OrangeRemoteAccess - Name: .OrangeRemoteAccess\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Activate (type: bool)\n      Attributes: persistent\n  - Status (type: bool)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addUser(string username, string cookie)\n  - void removeUser(string username)\n  - void listUsers((list listOfUsers))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/_PROCESSES_.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: Process.sysbus - Name: Process.1\n\n=======================================================================\nOBJECT: Process.sysbus_watchdog - Name: Process.2\n\n=======================================================================\nOBJECT: Process.sysbus_objectmonitor - Name: Process.3\n\n=======================================================================\nOBJECT: Process.sysbus_wansetup - Name: Process.4\n\n=======================================================================\nOBJECT: Process.sysbus_usermngt - Name: Process.5\n\n=======================================================================\nOBJECT: Process.sysbus_led - Name: Process.6\n\n=======================================================================\nOBJECT: Process.sysbus_faultmonitorplugin - Name: Process.7\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6_plugin - Name: Process.8\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-core - Name: Process.9\n\n=======================================================================\nOBJECT: Process.sysbus_netdev - Name: Process.10\n\n=======================================================================\nOBJECT: Process.sysbus_netmaster - Name: Process.11\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_core - Name: Process.12\n\n=======================================================================\nOBJECT: Process.sysbus_nmc_client - Name: Process.13\n\n=======================================================================\nOBJECT: Process.sysbus_www-backend - Name: Process.14\n\n=======================================================================\nOBJECT: Process.sysbus_deviceinfo_plugin - Name: Process.15\n\n=======================================================================\nOBJECT: Process.sysbus_firewall - Name: Process.16\n\n=======================================================================\nOBJECT: Process.sysbus_kmcd - Name: Process.17\n\n=======================================================================\nOBJECT: Process.sysbus_screen - Name: Process.18\n\n=======================================================================\nOBJECT: Process.sysbus_bcmeth - Name: Process.19\n\n=======================================================================\nOBJECT: Process.sysbus_nemo-clients - Name: Process.20\n\n=======================================================================\nOBJECT: Process.sysbus_raplugin - Name: Process.21\n\n=======================================================================\nOBJECT: Process.sysbus_gpon-plugin - Name: Process.22\n\n=======================================================================\nOBJECT: Process.sysbus_dhcp - Name: Process.23\n\n=======================================================================\nOBJECT: Process.sysbus_dnsplugin - Name: Process.24\n\n=======================================================================\nOBJECT: Process.sysbus_pppd_plugin - Name: Process.25\n\n=======================================================================\nOBJECT: Process.sysbus_dhcpv6d_plugin - Name: Process.26\n\n=======================================================================\nOBJECT: Process.sysbus_ipsec - Name: Process.27\n\n=======================================================================\nOBJECT: Process.sysbus_wlan-manager - Name: Process.28\n\n=======================================================================\nOBJECT: Process.sysbus_wld_bcm - Name: Process.29\n\n=======================================================================\nOBJECT: Process.sysbus_conntrack_plugin - Name: Process.30\n\n=======================================================================\nOBJECT: Process.sysbus_flowstats - Name: Process.31\n\n=======================================================================\nOBJECT: Process.sysbus_maculan - Name: Process.32\n\n=======================================================================\nOBJECT: Process.sysbus_vowifi - Name: Process.33\n\n=======================================================================\nOBJECT: Process.sysbus_ssle-server - Name: Process.34\n\n=======================================================================\nOBJECT: Process.sysbus_devicemngt - Name: Process.35\n\n=======================================================================\nOBJECT: Process.sysbus_mqttmessages - Name: Process.36\n\n=======================================================================\nOBJECT: Process.sysbus_sahpairing - Name: Process.37\n\n=======================================================================\nOBJECT: Process.sysbus_dnssd - Name: Process.38\n\n=======================================================================\nOBJECT: Process.sysbus_llmnr - Name: Process.39\n\n=======================================================================\nOBJECT: Process.sysbus_pnp - Name: Process.40\n\n=======================================================================\nOBJECT: Process.sysbus_vpn - Name: Process.41\n\n=======================================================================\nOBJECT: Process.sysbus_gmap - Name: Process.42\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_self - Name: Process.43\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_eth - Name: Process.44\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_hgw - Name: Process.45\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_devtype - Name: Process.46\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_dns - Name: Process.47\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_upnp - Name: Process.48\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_wan - Name: Process.49\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_usb - Name: Process.50\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mdns - Name: Process.51\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_events - Name: Process.52\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_useragents - Name: Process.53\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcav - Name: Process.54\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_plcdevolo - Name: Process.55\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ieee1905 - Name: Process.56\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_db - Name: Process.57\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_owner - Name: Process.58\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_location - Name: Process.59\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_lltd - Name: Process.60\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_ssw - Name: Process.61\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_voice - Name: Process.62\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_mqtt - Name: Process.63\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_vdev - Name: Process.64\n\n=======================================================================\nOBJECT: Process.sysbus_manifest - Name: Process.65\n\n=======================================================================\nOBJECT: Process.sysbus_mss - Name: Process.66\n\n=======================================================================\nOBJECT: Process.sysbus_passwordrecovery - Name: Process.67\n\n=======================================================================\nOBJECT: Process.sysbus_eventmanager - Name: Process.68\n\n=======================================================================\nOBJECT: Process.sysbus_captiveportal - Name: Process.69\n\n=======================================================================\nOBJECT: Process.sysbus_dyndns_plugin - Name: Process.70\n\n=======================================================================\nOBJECT: Process.sysbus_time-plugin - Name: Process.71\n\n=======================================================================\nOBJECT: Process.sysbus_httpd - Name: Process.72\n\n=======================================================================\nOBJECT: Process.sysbus_netmon - Name: Process.73\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_client - Name: Process.74\n\n=======================================================================\nOBJECT: Process.sysbus_audiphone_plugin - Name: Process.75\n\n=======================================================================\nOBJECT: Process.sysbus_phonebook_plugin - Name: Process.76\n\n=======================================================================\nOBJECT: Process.sysbus_voipapp - Name: Process.77\n\n=======================================================================\nOBJECT: Process.sysbus_tr181 - Name: Process.78\n\n=======================================================================\nOBJECT: Process.sysbus_voipaad_plugin - Name: Process.79\n\n=======================================================================\nOBJECT: Process.sysbus_scheduler-plugin - Name: Process.80\n\n=======================================================================\nOBJECT: Process.sysbus_udpechoconfig - Name: Process.81\n\n=======================================================================\nOBJECT: Process.sysbus_usbhosts - Name: Process.82\n\n=======================================================================\nOBJECT: Process.sysbus_dlnadms - Name: Process.83\n\n=======================================================================\nOBJECT: Process.sysbus_tod-plugin - Name: Process.84\n\n=======================================================================\nOBJECT: Process.sysbus_wakeonlan-plugin - Name: Process.85\n\n=======================================================================\nOBJECT: Process.sysbus_wlanscheduler-plugin - Name: Process.86\n\n=======================================================================\nOBJECT: Process.sysbus_cwmp-plugin - Name: Process.87\n\n=======================================================================\nOBJECT: Process.sysbus_launcher - Name: Process.88\n\n=======================================================================\nOBJECT: Process.sysbus_location - Name: Process.89\n\n=======================================================================\nOBJECT: Process.sysbus_lxcmanager - Name: Process.90\n\n=======================================================================\nOBJECT: Process.sysbus_mqttbroker - Name: Process.91\n\n=======================================================================\nOBJECT: Process.sysbus_remoteaccess - Name: Process.92\n\n=======================================================================\nOBJECT: Process.sysbus_speedtest - Name: Process.93\n\n=======================================================================\nOBJECT: Process.sysbus_srvinterface - Name: Process.94\n\n=======================================================================\nOBJECT: Process.sysbus_ssw - Name: Process.95\n\n=======================================================================\nOBJECT: Process.sysbus_rule-engine - Name: Process.96\n\n=======================================================================\nOBJECT: Process.sysbus_upgraded_plugin - Name: Process.97\n\n=======================================================================\nOBJECT: Process.sysbus_storage - Name: Process.98\n\n=======================================================================\nOBJECT: Process.sysbus_pass - Name: Process.99\n\n=======================================================================\nOBJECT: Process.sysbus_webuiupgrade_plugin - Name: Process.100\n\n=======================================================================\nOBJECT: Process.sysbus_account-remoteaccess - Name: Process.101\n\n=======================================================================\nOBJECT: Process.sysbus_accountmanager - Name: Process.102\n\n=======================================================================\nOBJECT: Process.sysbus_autodiag - Name: Process.103\n\n=======================================================================\nOBJECT: Process.sysbus_bulkdata - Name: Process.104\n\n=======================================================================\nOBJECT: Process.sysbus_ConMon - Name: Process.105\n\n=======================================================================\nOBJECT: Process.sysbus_cpu_monitor - Name: Process.106\n\n=======================================================================\nOBJECT: Process.sysbus_devicelookup - Name: Process.107\n\n=======================================================================\nOBJECT: Process.sysbus_rule-factory - Name: Process.108\n\n=======================================================================\nOBJECT: Process.sysbus_domino_plugin - Name: Process.109\n\n=======================================================================\nOBJECT: Process.sysbus_dummyplugin - Name: Process.110\n\n=======================================================================\nOBJECT: Process.sysbus_genlog - Name: Process.111\n\n=======================================================================\nOBJECT: Process.sysbus_gmap_orange - Name: Process.112\n\n=======================================================================\nOBJECT: Process.sysbus_history - Name: Process.113\n\n=======================================================================\nOBJECT: Process.sysbus_homelan - Name: Process.114\n\n=======================================================================\nOBJECT: Process.sysbus_ieee1905-registrar - Name: Process.115\n\n=======================================================================\nOBJECT: Process.sysbus_iot-service - Name: Process.116\n\n=======================================================================\nOBJECT: Process.sysbus_ippingdiagnostics - Name: Process.117\n\n=======================================================================\nOBJECT: Process.sysbus_memstat - Name: Process.118\n\n=======================================================================\nOBJECT: Process.sysbus_oopstracker - Name: Process.119\n\n=======================================================================\nOBJECT: Process.sysbus_orange-dyndns_plugin - Name: Process.120\n\n=======================================================================\nOBJECT: Process.sysbus_orange-invoc - Name: Process.121\n\n=======================================================================\nOBJECT: Process.sysbus_powermanagement - Name: Process.122\n\n=======================================================================\nOBJECT: Process.sysbus_probe_plugin - Name: Process.123\n\n=======================================================================\nOBJECT: Process.sysbus_probe_client - Name: Process.124\n\n=======================================================================\nOBJECT: Process.sysbus_processmonitor - Name: Process.125\n\n=======================================================================\nOBJECT: Process.sysbus_runmode - Name: Process.126\n\n=======================================================================\nOBJECT: Process.sysbus_topologydiagnostics - Name: Process.127\n\n=======================================================================\nOBJECT: Process.sysbus_upnp-igd_plugin - Name: Process.128\n\n=======================================================================\nOBJECT: Process.sysbus_upnpdiscd_plugin - Name: Process.129\n\n=======================================================================\nOBJECT: Process.sysbus_bcm_fxs - Name: Process.130\n\n=======================================================================\nOBJECT: Process.sysbus_WOLProxy - Name: Process.131\n\n=======================================================================\nOBJECT: Process.sysbus_wt_plugin - Name: Process.132\n\n=======================================================================\nOBJECT: Process.sysbus_invoc - Name: Process.133\n\n=======================================================================\nOBJECT: UserManagement.Group - Name: UserManagement.Group\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - GID (type: uint32)\n      Attributes: read_only, persistent\n  - GroupName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - System (type: bool)\n      Attributes: read_only, persistent\n  - LinuxGroup (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: UserManagement.User - Name: UserManagement.User\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - UID (type: uint32)\n      Attributes: read_only, persistent\n  - LinuxUser (type: bool)\n      Attributes: read_only, persistent\n  - UserName (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Password (type: string)\n      Attributes: persistent\n  - FactoryPassword (type: string)\n      Attributes: read_only, persistent\n  - PasswordType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['MD5', 'SSHA256', 'PREHASHED-SSHA256', 'SSHA512', 'PREHASHED-SSHA512', 'INVALID', 'PREHASHED-INVALID']\n  - PasswordState (type: uint8)\n      Attributes: read_only\n  - Salt (type: string)\n      Attributes: read_only, persistent\n  - UserGroupParticipation (type: string)\n      Attributes: read_only, persistent\n  - AllowFTPAccess (type: bool)\n  - AllowHTTPAccess (type: bool)\n  - RemoteAccessCapable (type: bool)\n  - UserType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['system', 'limited']\n  - FriendlyName (type: string)\n      Attributes: persistent\n  - CurrentLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - CurrentLoginSource (type: string)\n      Attributes: read_only, persistent\n  - CurrentLoginIP (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginTime (type: date_time)\n      Attributes: read_only, persistent\n  - PreviousLoginSource (type: string)\n      Attributes: read_only, persistent\n  - PreviousLoginIP (type: string)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: NetMaster.LANConfig - Name: NetMaster.LANConfig\n == PARAMETERS:\n  - LANMode (type: string)\n      Attributes: persistent\n  - ValidSubnets (type: string)\n      Attributes: persistent\n  - InvalidSubnets (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setLANMode(string lanmode)\n  - bool import()\n  - bool export()\n  - bool enableIPv6((bool IPv6Enable))\n  - string setIPv6PrefixMode((string IPv6PrefixMode))\n\n=======================================================================\nOBJECT: NetMaster.LAN - Name: NetMaster.LAN\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void addBridge(string Name)\n  - void removeBridge(string Name)\n\n=======================================================================\nOBJECT: NetMaster.DR - Name: NetMaster.DR\n == PARAMETERS:\n  - DefaultLifetime (type: uint32)\n      Attributes: persistent\n  - DNSSLLifetime (type: uint32)\n      Attributes: persistent\n  - RDNSSLifetime (type: uint32)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Error - Name: NMC.Error\n == FUNCTIONS:\n  - string getPrimaryErrorCode()\n\n=======================================================================\nOBJECT: NMC.DataTracking - Name: NMC.DataTracking\n\n=======================================================================\nOBJECT: NMC.Gpon - Name: NMC.Gpon\n == PARAMETERS:\n  - RxPowerLowThreshold (type: int32)\n      Attributes: persistent\n  - RxPowerHighThreshold (type: int32)\n      Attributes: persistent\n  - PoolInterval (type: uint32)\n      Attributes: persistent\n  - RxSignalSampleNum (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - RxPowerSignalQuality (type: bool)\n\n=======================================================================\nOBJECT: NMC.IPv6 - Name: NMC.IPv6\n == FUNCTIONS:\n  - void set((bool Enable), (bool UserRequested), (bool IPv4UserRequested))\n  - void get((bool Enable), (string IPv6Address))\n\n=======================================================================\nOBJECT: NMC.Container - Name: NMC.Container\n == PARAMETERS:\n  - Address (type: string)\n  - Netmask (type: string)\n  - DHCPEnable (type: bool)\n  - DHCPMinAddress (type: string)\n  - DHCPMaxAddress (type: string)\n  - LeaseTime (type: uint32)\n == FUNCTIONS:\n  - void set((string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n  - void get((string Status), (string Address), (string Netmask), (bool DHCPEnable), (string DHCPMinAddress), (string DHCPMaxAddress), (uint32 LeaseTime))\n\n=======================================================================\nOBJECT: NMC.LED - Name: NMC.LED\n == PARAMETERS:\n  - Suspend (type: bool)\n == FUNCTIONS:\n  - void getLedStatus(string name, (string state), (string color))\n  - bool setLed(string name, string state, string color)\n\n=======================================================================\nOBJECT: NMC.NetworkConfig - Name: NMC.NetworkConfig\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - ConfigDate (type: date_time)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: persistent\n      Validator: ['Enabled', 'Disabled', 'Triggered', 'Instant', 'Saving', 'Available', 'Loading', 'Uploading', 'Downloading', 'Reset', 'Error']\n == FUNCTIONS:\n  - void enableNetworkBR((bool state))\n  - void launchNetworkBackup((bool delay))\n  - void launchNetworkRestore()\n  - void get()\n\n=======================================================================\nOBJECT: NMC.OrangeTV - Name: NMC.OrangeTV\n == FUNCTIONS:\n  - void getIPTVStatus((string IPTVStatus))\n  - void setIPTVMultiScreens((bool Enable))\n  - void getIPTVMultiScreens((bool Enable))\n  - list getIPTVConfig()\n\n=======================================================================\nOBJECT: NMC.Wifi - Name: NMC.Wifi\n == PARAMETERS:\n  - RegulatoryAuthorization6GHz (type: bool)\n      Attributes: persistent\n  - EnableTarget (type: string)\n      Attributes: read_only\n      Validator: ['AccessPoint', 'Radio']\n  - Enable (type: bool)\n      Attributes: persistent\n  - TempEnable (type: bool)\n  - Status (type: bool)\n      Attributes: read_only\n  - ReadOnlyStatus (type: bool)\n      Attributes: persistent\n  - PairingStatus (type: string)\n      Validator: ['Idle', 'Pairing', '']\n  - Scheduler (type: bool)\n      Attributes: read_only\n  - SchedulingOverride (type: bool)\n      Attributes: persistent\n  - SchedulingEnabled (type: bool)\n  - SchedulingActivationTimeSlots (type: string)\n  - ConfigurationMode (type: bool)\n      Attributes: persistent\n  - TriggerAutoChannelSelection (type: bool)\n  - WPSMode (type: string)\n      Attributes: read_only\n      Validator: ['Registrar', 'Enrollee']\n  - CurrentState (type: string)\n      Attributes: read_only\n      Validator: ['NoBackhaul', 'BackhaulUp', 'CredentialsSet', 'SswSync']\n  - VAPsEnabled (type: bool)\n      Attributes: read_only\n  - CurrentBackhaul (type: string)\n      Attributes: read_only\n      Validator: ['None', 'Ethernet', 'Wifi']\n  - AddOnModeState (type: string)\n  - PINCode (type: string)\n  - AllowButtonDisable (type: bool)\n      Attributes: persistent\n == FUNCTIONS:\n  - void setEnable(bool value, (bool temporary), (string source))\n  - void toggleEnable((bool temporary), (string source))\n  - void startPairing((string clientPIN))\n  - void stopPairing()\n  - void startAutoChannelSelection()\n  - void getStats((uint32_t RxBytes), (uint32_t TxBytes))\n  - void set((bool Enable), (bool Status), (bool ConfigurationMode), (bool TriggerAutoChannelSelection))\n  - variant get()\n  - void setInternal((string EnableTarget))\n  - void setStatus((bool Status))\n  - void debug()\n\n=======================================================================\nOBJECT: NMC.Profiles - Name: NMC.Profiles\n == PARAMETERS:\n  - Operator (type: string)\n      Attributes: persistent\n  - CurrentProfile (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: NMC.Reboot - Name: NMC.Reboot\n == PARAMETERS:\n  - Flush (type: bool)\n  - BootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - WatchdogRebootCounter (type: uint32)\n      Attributes: read_only, persistent\n  - ForceRebootDuration (type: uint16)\n      Attributes: persistent\n == FUNCTIONS:\n  - void flush()\n\n=======================================================================\nOBJECT: NMC.Autodetect - Name: NMC.Autodetect\n == PARAMETERS:\n  - FirstBoot (type: bool)\n      Attributes: persistent\n  - LastConnectionError (type: string)\n  - IPv6SwitchEnable (type: bool)\n      Attributes: persistent\n  - IPv6Mode (type: string)\n      Attributes: persistent\n      Validator: ['DualStack', 'Dslite', 'Switching_To_DualStack', 'Switching_To_Dslite']\n == FUNCTIONS:\n  - variant get()\n\n=======================================================================\nOBJECT: NMC.TPPP - Name: NMC.TPPP\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - Timeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtraTimeout (type: uint32)\n      Attributes: persistent\n      Validator: {'min': '1'}\n  - ExtensionDelay (type: uint32)\n      Attributes: persistent\n  - RefreshDelay (type: uint32)\n      Attributes: persistent\n == FUNCTIONS:\n  - bool force()\n\n=======================================================================\nOBJECT: NMC.Voip - Name: NMC.Voip\n\n=======================================================================\nOBJECT: NMC.VPN - Name: NMC.VPN\n\n=======================================================================\nOBJECT: NMC.WlanClear - Name: NMC.WlanClear\n == FUNCTIONS:\n  - bool setState((string ID), (string state))\n      Attributes: message\n\n=======================================================================\nOBJECT: NMC.WlanTimer - Name: NMC.WlanTimer\n == FUNCTIONS:\n  - void setActivationTimer((string InterfaceName), (uint32 Timeout))\n  - uint32 getActivationTimer((string InterfaceName))\n  - bool disableActivationTimer((string InterfaceName))\n\n=======================================================================\nOBJECT: NMC.Guest - Name: NMC.Guest\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WifiGuestKeyConfig (type: bool)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Disabled', 'Enabled']\n  - ActivationTimeout (type: uint64)\n      Attributes: read_only, persistent\n  - StartTime (type: date_time)\n      Attributes: read_only, persistent\n  - ValidTime (type: date_time)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - void set((bool Enable))\n  - void get()\n\n=======================================================================\nOBJECT: DeviceManager.Connectivity - Name: DeviceManager.Connectivity\n == PARAMETERS:\n  - ConnectivitySources (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - variant getStatus((string sources))\n  - bool enableNotifications()\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: DeviceInfo.VendorConfigFile - Name: DeviceInfo.VendorConfigFile\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Alias (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '64'}\n  - Version (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '16'}\n  - UseForBackupRestore (type: bool)\n      Attributes: read_only, persistent\n  - Date (type: date_time)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - Affected (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n == FUNCTIONS:\n  - void Restore(string URL, string Username, string Password, (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n  - void RestoreExtended(string URL, string Username, string Password, (string CACert), (string ClientCert), (string PrivateKey), (uint32 FileSize), (string TargetFileName), (string CheckSumAlgorithm), (string CheckSum))\n\n=======================================================================\nOBJECT: DeviceInfo.MemoryStatus - Name: DeviceInfo.MemoryStatus\n == PARAMETERS:\n  - Total (type: uint32)\n      Attributes: read_only\n  - Free (type: uint32)\n      Attributes: read_only\n  - Buffered (type: uint32)\n      Attributes: read_only\n  - Cached (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DeviceInfo.MessageServer - Name: DeviceInfo.MessageServer\n == PARAMETERS:\n  - ClientCertificate (type: string)\n      Attributes: read_only\n      Validator: {'max': '2048'}\n\n=======================================================================\nOBJECT: DeviceInfo.GatewayInfo - Name: DeviceInfo.GatewayInfo\n == PARAMETERS:\n  - ManufacturerOUI (type: string)\n      Attributes: read_only\n      Validator: {'max': '6'}\n  - ProductClass (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - SerialNumber (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Level - Name: Firewall.Level\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.LevelIPv6 - Name: Firewall.LevelIPv6\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - Chain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n  - ReverseChain (type: string)\n      Attributes: read_only\n      Validator: {'max': '64'}\n\n=======================================================================\nOBJECT: Firewall.Chain - Name: Firewall.Chain\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'None']\n  - RuleNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.Redirect - Name: Firewall.Redirect\n == PARAMETERS:\n  - Id (type: string)\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n  - DestinationPorts (type: string)\n  - Protocol (type: string)\n  - IPVersion (type: uint32)\n  - Enable (type: bool)\n\n=======================================================================\nOBJECT: Firewall.ProtocolForwarding - Name: Firewall.ProtocolForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data']\n  - Protocol (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.PortForwarding - Name: Firewall.PortForwarding\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp', 'internal', 'cwmp', 'pass', 'pcp', 'cwmp-data', 'cwmp-mgmt', 'cwmp-iptv', 'cwmp-voip']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n      Validator: ['data', 'iptv', 'voip', 'mgmt']\n  - Protocol (type: string)\n      Attributes: persistent\n  - ExternalPort (type: string)\n      Attributes: persistent\n  - ExternalPortEndRange (type: uint32)\n      Attributes: persistent\n  - InternalPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - LeaseDuration (type: uint32)\n      Attributes: persistent\n  - HairpinNAT (type: bool)\n      Attributes: persistent\n  - SymmetricSNAT (type: bool)\n      Attributes: persistent\n  - UPnPV1Compat (type: bool)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.Pinhole - Name: Firewall.Pinhole\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - Origin (type: string)\n      Attributes: persistent\n      Validator: ['webui', 'upnp']\n  - Description (type: string)\n      Attributes: persistent\n      Validator: {'max': '256'}\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error', 'Pending']\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - Protocol (type: string)\n      Attributes: persistent\n  - IPVersion (type: int32)\n      Attributes: persistent\n  - SourcePort (type: string)\n      Attributes: persistent\n  - DestinationPort (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - DestinationMACAddress (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.DMZ - Name: Firewall.DMZ\n == PARAMETERS:\n  - SourceInterface (type: string)\n      Attributes: persistent\n  - DestinationIPAddress (type: string)\n      Attributes: persistent\n  - SourcePrefix (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Firewall.List - Name: Firewall.List\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: persistent\n      Validator: {'max': '28'}\n  - Enable (type: bool)\n      Attributes: persistent\n  - TableName (type: string)\n      Attributes: persistent\n      Validator: ['filter', 'nat', 'mangle', 'raw']\n  - ChainName (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - DefaultPolicy (type: string)\n      Attributes: persistent\n      Validator: ['Drop', 'Reject', 'Accept', 'Return', 'TargetChain']\n  - TargetChain (type: string)\n      Attributes: persistent\n      Validator: {'max': '64'}\n  - ListEntryNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: Firewall.PCP - Name: Firewall.PCP\n == PARAMETERS:\n  - PCPVersion (type: uint32)\n      Attributes: persistent\n      Validator: {'max': '2'}\n  - PCPServer (type: string)\n      Attributes: persistent\n  - Interface (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n  - WANIPAddress (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['PCP_DISABLED', 'PCP_INIT', 'PCP_SUCCESS', 'PCP_TIMEOUT', 'PCP_ERROR']\n  - MAPNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PeerNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: DHCPv4.Server - Name: DHCPv4.Server\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - VerifyFirst (type: bool)\n      Attributes: persistent\n  - TrustClient (type: bool)\n      Attributes: persistent\n  - RtBehaviour (type: string)\n      Attributes: persistent\n      Validator: ['traditional', 'standard', 'msft']\n  - AckInform (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void clearStatistics()\n  - void getDHCPServerPool((string id))\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: DNS.Server - Name: DNS.Server\n\n=======================================================================\nOBJECT: DHCPv6.Server - Name: DHCPv6.Server\n == PARAMETERS:\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Enabled', 'Disabled', 'Error']\n  - Enable (type: bool)\n      Attributes: persistent\n  - PoolNumberOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - list getPDPrefixLeases()\n  - list getPDPrefixInformation()\n  - void enableDHCPv6Server(bool enable)\n  - string getDHCPv6ServerStatus()\n  - void createPool(string name, string interface)\n\n=======================================================================\nOBJECT: SAHPairing.Debug - Name: SAHPairing.Debug\n == PARAMETERS:\n  - LastEvent (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - void inject(string eventName, (variant eventArg))\n  - void injectError(string errorName)\n\n=======================================================================\nOBJECT: SAHPairing.ACL - Name: SAHPairing.ACL\n == PARAMETERS:\n  - Topic (type: string)\n  - AccessGroup (type: string)\n      Validator: ['Everyone', 'PairedDevices', 'SpecificDevice']\n  - SpecificDevice (type: string)\n  - AccessType (type: string)\n      Validator: ['Publish', 'Subscribe', 'PublishAndSubscribe']\n\n=======================================================================\nOBJECT: Devices.Device - Name: Devices.Device\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - DiscoverySource (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - DeviceType (type: string)\n      Attributes: read_only, persistent\n  - Active (type: bool)\n      Attributes: read_only\n  - Tags (type: string)\n      Attributes: persistent\n  - FirstSeen (type: date_time)\n      Attributes: read_only, persistent\n  - LastConnection (type: date_time)\n      Attributes: persistent, volatile\n  - LastChanged (type: date_time)\n      Attributes: persistent, volatile\n  - Master (type: string)\n      Attributes: read_only, persistent\n == FUNCTIONS:\n  - device_t get((string flags))\n  - bool set(device_t parameters)\n  - bool remove(string path)\n  - bool hasTag(string tag, (string expression), (string traverse))\n  - void setTag(string tag, (string expression), (string traverse))\n  - void clearTag(string tag, (string expression), (string traverse))\n  - variant getFirstParameter(string parameter, (string expression), (string traverse))\n  - list getParameters(string parameter, (string expression), (string traverse))\n  - variant topology((string expression), (string traverse), (string flags))\n  - bool isLinkedTo(string device, (string traverse))\n  - bool setName(string name, (string source))\n  - bool addName(string name, (string source))\n  - bool removeName(string source)\n  - bool delName(string name, (string source))\n  - bool setType(string type, (string source))\n  - bool removeType(string source)\n  - bool isImplemented(string function, (string subObject))\n  - bool setAlternative(string alternative)\n  - bool removeAlternative(string alternative)\n  - bool isAlternative(string alternative)\n  - bool setAlternativeRules(list rules)\n  - bool removeAlternativeRules()\n\n=======================================================================\nOBJECT: Manifests.UserData - Name: Manifests.UserData\n\n=======================================================================\nOBJECT: Profiles.Profile - Name: Profiles.Profile\n == PARAMETERS:\n  - Current (type: string)\n      Attributes: persistent\n  - Profiles (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get()\n  - variant getData()\n  - variant setData(variant data, (string profileName))\n  - void setCurrent(string profileName)\n  - list getNames()\n\n=======================================================================\nOBJECT: WLanScheduler.Schedules - Name: WLanScheduler.Schedules\n == PARAMETERS:\n  - ID (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Enable (type: bool)\n      Attributes: persistent\n  - Base (type: string)\n      Attributes: persistent\n      Validator: ['Once', 'Hourly', 'Daily', 'Weekly', 'Monthly', 'Yearly']\n  - Default (type: string)\n      Attributes: persistent\n  - Override (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: Locations.Location - Name: Locations.Location\n == PARAMETERS:\n  - Key (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: read_only, persistent\n  - Description (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - variant get((string flags))\n\n=======================================================================\nOBJECT: StorageService.Rules - Name: StorageService.Rules\n == PARAMETERS:\n  - Condition (type: string)\n      Attributes: read_only, persistent\n  - TargetNumberOfEntries (type: uint32)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.Capabilities - Name: StorageService.Capabilities\n == PARAMETERS:\n  - FTPCapable (type: bool)\n      Attributes: read_only\n  - SFTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPCapable (type: bool)\n      Attributes: read_only\n  - SHTTPCapable (type: bool)\n      Attributes: read_only\n  - HTTPWritable (type: bool)\n      Attributes: read_only\n  - SupportedNetworkProtocols (type: string)\n      Attributes: read_only\n  - SupportedFileSystemTypes (type: string)\n      Attributes: read_only\n  - VolumeEncryptionCapable (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: StorageService.PhysicalMedium - Name: StorageService.PhysicalMedium\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - Vendor (type: string)\n      Attributes: read_only, persistent\n  - Model (type: string)\n      Attributes: read_only, persistent\n  - SerialNumber (type: string)\n      Attributes: read_only, persistent\n  - FirmwareVersion (type: string)\n      Attributes: read_only, persistent\n  - ConnectionType (type: string)\n      Attributes: read_only, persistent\n      Validator: ['USB 1.1', 'USB 2.0', 'USB 3.0', 'IEEE1394', 'IEEE1394b', 'IDE', 'EIDE', 'ATA/33', 'ATA/66', 'ATA/100', 'ATA/133', 'SATA/150', 'SATA/300', 'SCSI-1', 'Fast SCSI', 'Fast-Wide SCSI', 'Ultra SCSI', 'Ultra Wide SCSI', 'Ultra2 SCSI', 'Ultra2 Wide SCSI', 'Ultra3 SCSI', 'Ultra-320 SCSI', 'Ultra-640 SCSI', 'SSA', 'SSA-40', 'Fibre Channel', 'MMC']\n  - Removable (type: bool)\n      Attributes: read_only, persistent\n  - Capacity (type: uint64)\n      Attributes: read_only, persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Online', 'Standby', 'Offline', 'Disconnected', 'Restoring']\n  - Uptime (type: uint32)\n      Attributes: read_only, persistent\n  - SMARTCapable (type: bool)\n      Attributes: read_only, persistent\n  - Temperature (type: uint32)\n      Attributes: read_only\n  - Health (type: string)\n      Attributes: read_only, persistent\n      Validator: ['OK', 'Failing', 'Error']\n  - HotSwappable (type: bool)\n      Attributes: read_only, persistent\n\n=======================================================================\nOBJECT: StorageService.LogicalVolume - Name: StorageService.LogicalVolume\n == PARAMETERS:\n  - URI (type: string)\n      Attributes: read_only, persistent\n  - Name (type: string)\n      Attributes: persistent\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Offline', 'Online', 'Error', 'Disconnected']\n  - Enable (type: bool)\n      Attributes: persistent\n  - Flags (type: string)\n      Attributes: persistent\n  - PhysicalReference (type: string)\n      Attributes: read_only, persistent\n      Validator: {'max': '256'}\n  - PhysicalURI (type: string)\n      Attributes: read_only, persistent\n  - FileSystem (type: string)\n      Attributes: read_only, persistent\n      Validator: ['Unknown', 'FAT16', 'FAT32', 'NTFS', 'HFS', 'HFS+', 'HFSJ', 'ext2', 'ext3', 'ext4', 'XFS', 'REISER', 'WebDAV', 'NFS', 'PTP', 'exFAT']\n  - FileSystemStatus (type: uint32)\n      Attributes: read_only, persistent\n      Validator: ['0', '1', '2', '4', '8', '16', '32', '128']\n  - FileSystemCheck (type: bool)\n  - LastFileSystemCheck (type: date_time)\n      Attributes: persistent\n  - FileSystemCheckNeeded (type: bool)\n      Attributes: persistent\n  - FileSystemCheckDateNeeded (type: bool)\n      Attributes: persistent\n  - Capacity (type: uint64)\n      Attributes: persistent\n  - CapacityKb (type: uint64)\n      Attributes: persistent\n  - UsedSpace (type: uint64)\n      Attributes: read_only, persistent\n  - UsedSpaceKb (type: uint64)\n      Attributes: read_only, persistent\n  - Encrypted (type: bool)\n      Attributes: read_only, persistent\n  - FolderNumberOfEntries (type: uint32)\n      Attributes: read_only\n  - PreferredMountPoint (type: string)\n      Attributes: persistent\n  - AutoMount (type: bool)\n      Attributes: persistent\n  - MountPoint (type: string)\n      Attributes: read_only\n  - LastError (type: string)\n      Attributes: read_only\n  - MountOptions (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.VendorConfigFile - Name: WebuiupgradeService.VendorConfigFile\n == PARAMETERS:\n  - FileType (type: string)\n      Attributes: read_only\n  - URL (type: string)\n      Attributes: read_only\n  - Enable (type: bool)\n      Attributes: persistent\n  - AlwaysAllowTLSAuthentication (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: WebuiupgradeService.AutoCheck - Name: WebuiupgradeService.AutoCheck\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - CheckAtBoot (type: bool)\n      Attributes: persistent\n  - Interval (type: uint32)\n      Attributes: persistent\n  - TimeReference (type: date_time)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: WebuiupgradeService.Authentication - Name: WebuiupgradeService.Authentication\n == PARAMETERS:\n  - Username (type: string)\n      Attributes: persistent\n  - Password (type: string)\n      Attributes: persistent\n  - CACert (type: string)\n      Attributes: persistent\n  - ClientCert (type: string)\n      Attributes: persistent\n  - PrivateKey (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: OrangeRemoteAccess.OnDemand - Name: OrangeRemoteAccess.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n == FUNCTIONS:\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: History.Backup - Name: History.Backup\n == PARAMETERS:\n  - Count (type: uint32)\n      Attributes: read_only\n  - MaxHistSize (type: uint32)\n      Attributes: read_only\n  - AmountOfEntries (type: uint32)\n      Attributes: read_only\n == FUNCTIONS:\n  - void updateHistory()\n  - void cleanHistory()\n  - void getSimpleHistory()\n  - void rotate((string source))\n\n=======================================================================\nOBJECT: HomeLan.Interface - Name: HomeLan.Interface\n == PARAMETERS:\n  - FriendlyName (type: string)\n  - Name (type: string)\n  - Alias (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: HomeLan.Device - Name: HomeLan.Device\n == PARAMETERS:\n  - MacAddress (type: string)\n  - NumberOfStoredMeasures (type: uint32)\n\n=======================================================================\nOBJECT: ServiceInvocation.OnDemand - Name: ServiceInvocation.OnDemand\n == PARAMETERS:\n  - Enable (type: bool)\n      Attributes: persistent\n  - WakeUpURL (type: string)\n      Attributes: read_only\n  - Port (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - void updateWakeUpURL((string host), (uint32 port))\n  - variant get()\n  - bool set((variant parameters))\n\n=======================================================================\nOBJECT: PowerManagement.SupportedTriggers - Name: PowerManagement.SupportedTriggers\n == PARAMETERS:\n  - Name (type: string)\n      Attributes: read_only\n  - Description (type: string)\n      Attributes: read_only\n  - Value (type: bool)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: TopologyDiagnostics.Results - Name: TopologyDiagnostics.Results\n == PARAMETERS:\n  - Alias (type: string)\n      Attributes: read_only\n      Validator: ['XML', 'JSON']\n  - Name (type: string)\n      Attributes: read_only\n  - Status (type: string)\n      Attributes: read_only\n      Validator: ['Uploaded', 'Error', 'Complete']\n  - LastUploadTime (type: date_time)\n      Attributes: read_only\n  - DiagnosticMode (type: string)\n      Attributes: read_only\n == FUNCTIONS:\n  - bool setState(string state)\n\n=======================================================================\nOBJECT: UPnP-IGD.PnP-X - Name: UPnP-IGD.PnP-X\n == PARAMETERS:\n  - HardwareId-VID (type: string)\n      Attributes: persistent\n  - HardwareId-DID (type: string)\n      Attributes: persistent\n  - HardwareId-SID (type: string)\n      Attributes: persistent\n  - HardwareId-RID (type: string)\n      Attributes: persistent\n\n=======================================================================\nOBJECT: UPnP-IGD.UDN - Name: UPnP-IGD.UDN\n == PARAMETERS:\n  - Id (type: string)\n      Attributes: read_only\n  - Value (type: string)\n      Attributes: read_only\n\n=======================================================================\nOBJECT: OrangeServices.Services - Name: OrangeServices.Services\n == PARAMETERS:\n  - Name (type: string)\n  - SubscriptionStatus (type: string)\n      Validator: ['Subscribed', 'Unknown', 'NotSubscribed']\n  - Option (type: bool)\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/eventmanager.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .eventmanager - Name: .eventmanager\n == PARAMETERS:\n  - longpolling_timeout (type: uint32)\n      Attributes: read_only\n  - channelinactivity_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_timeout (type: uint32)\n      Attributes: read_only\n  - dosprotection_maxchannels (type: uint32)\n      Attributes: read_only\n  - max_subscriptions (type: uint32)\n      Attributes: read_only\n  - message_servers (type: string)\n      Attributes: persistent\n == FUNCTIONS:\n  - notification get_events((uint32 channelid), (list events))\n  - notification open_channel((list events))\n  - void subscribe((uint32 channelid), (list events))\n  - void unsubscribe((uint32 channelid), (list events))\n\n"
  },
  {
    "path": "docs/API Documentation/Livebox 7/sah.txt",
    "content": "=== LIVEBOX SOFTWARE VERSION: SG70-fr-G07.R02.C02_18\n\n=======================================================================\nOBJECT: .sah - Name: .sah\n\n=======================================================================\nOBJECT: sah.Device - Name: sah.Device\n\n=======================================================================\nOBJECT: sah.Device.Information - Name: sah.Device.Information\n == FUNCTIONS:\n  - int32 getSummary((string deviceID), (string deviceType), (string friendlyName), (string manufacturer), (string manufacturerURL), (string modelDescription), (string modelName), (string modelNumber), (string modelURL), (string serialNumber), (string UDN), (string UPC))\n  - int32 getVersion((string deviceID), (string softwareDate), (string softwareVersion), (string hardwareVersion))\n\n=======================================================================\nOBJECT: sah.Device.PowerManagement - Name: sah.Device.PowerManagement\n == FUNCTIONS:\n  - int32 restart()\n\n=======================================================================\nOBJECT: sah.Device.AttachedDevices - Name: sah.Device.AttachedDevices\n == FUNCTIONS:\n  - int32 listAll(string deviceType, (list deviceList))\n\n=======================================================================\nOBJECT: sah.Device.LocalStorage - Name: sah.Device.LocalStorage\n == FUNCTIONS:\n  - int32 eject(string USBMassStorageID)\n\n=======================================================================\nOBJECT: sah.AccessManagement - Name: sah.AccessManagement\n\n=======================================================================\nOBJECT: sah.HomeNetworkManagement - Name: sah.HomeNetworkManagement\n\n=======================================================================\nOBJECT: sah.Voice - Name: sah.Voice\n\n=======================================================================\nOBJECT: sah.hgw - Name: sah.hgw\n\n=======================================================================\nOBJECT: sah.hgw.models - Name: sah.hgw.models\n\n=======================================================================\nOBJECT: sah.hgw.models.DeviceManager - Name: sah.hgw.models.DeviceManager\n == FUNCTIONS:\n  - void getDevices()\n\n"
  },
  {
    "path": "docs/APICodingGuide.md",
    "content": "\n# ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_AppIcon.png) LiveboxMonitor API Usage Guide\n\nThis documentation explains how to use the API layer of LiveboxMonitor, specifically the `LmApi` class tree, and how to interact with the API registry (`ApiRegistry`) and session (`LmSession`) classes. This guide assumes you are developing in Python and have access to the `LiveboxMonitor` source code.\n\n---\n\n## 1. Creating an LmSession\n\nBefore interacting with any API, you must create an authenticated session with the Livebox device:\n\n```python\nfrom LiveboxMonitor.api.LmSession import LmSession\n\n# Instantiate a Livebox session (the URL should point to your Livebox device)\nsession = LmSession(\"http://livebox.home/\")\nresult = session.signin(\"admin\", \"your_password\")\nif result != 1:\n    raise Exception(\"Authentication failed\")\n```\nA session can also be created to connect to an Orange Wifi Repeater. In that case the URL should point to the Repeater IP address.\n```python\n# Instantiate a Repeater session (the URL should point to your Repeater device)\nsession = LmSession(\"http://192.168.0.100/\")\nresult = session.signin(\"admin\", \"your_password\")\n```\n---\n\n## 2. Creating the API Registry\n\nThe API registry is responsible for managing all API objects and providing unified access to them:\n\n```python\nfrom LiveboxMonitor.api.LmApiRegistry import ApiRegistry\n\n# Create the API registry with your Livebox session\napi = ApiRegistry(session)\n\n# Create the API registry with your Repeater session\napi = ApiRegistry(session, is_repeater=True)\n```\n\nThe registry provides attributes for each API. For example:\n- `api._info`: Livebox (or Repeater) Information APIs\n- `api._intf`: Interface APIs\n- `api._wifi`: Wifi setup APIs\n- `api._device`: Device information APIs\n- `api._stats`: Statistics APIs\n- `api._dhcp`: DHCP setup APIs\n- `api._voip`: VOIP APIs\n- `api._iptv`: IPTV APIs\n- `api._reboot`: Reboot APIs\n- `api._firewall`: Firewall setup APIs\n- `api._dyndns`: DynDNS setup APIs\n- `api._backup`: Backup & Restore APIs\n- `api._screen`: Screen setup APIs\n\n---\n\n## 3. Using the LmApi Tree\n\nEach API object is a subclass of `LmApi`. Here is how you typically interact with them:\n\n### Example: Fetching Connected Devices\n\n```python\ndevice_list = api._device.get_list()\nfor device in device_list:\n    print(device)\n```\n\n### Example: Accessing Wi-Fi Status\n\n```python\nwifi_status = api._wifi.get_status()\nprint(wifi_status)\n```\n\n### Example: Changing Wi-Fi Setup\n\n```python\nimport copy\nwifi_config = api._wifi.get_config()\nprint(wifi_config)\nnew_config = copy.deepcopy(wifi_config)\n# Change anything\napi._wifi.set_config(wifi_config, new_config)\n```\n\n### Example: Getting Livebox Info\n\n```python\ninfo = api._info.get_device_info()\nprint(info)\n```\n\n---\n\n## 4. Error Handling\n\nMost API methods will raise `LmApiException` on error:\n\n```python\nfrom LiveboxMonitor.api.LmApi import LmApiException\n\ntry:\n    result = api._device.get_list()\nexcept LmApiException as e:\n    print(\"API error:\", e)\n```\n\n---\n\n## 5. Closing the Session\n\nAlways close the registry (and session) when done:\n\n```python\napi.close()\n```\n\n---\n\n## 6. API Reference Overview\n\nEach API provides various methods. Here are some common examples (see the code for details):\n\n- `DeviceApi.get_list()`: Returns a list of connected devices.\n- `WifiApi.get_status()`: Returns the Wi-Fi status.\n- `DhcpApi.get_leases()`: Returns DHCP leases.\n- `VoipApi.get_info()`: Returns VoIP information.\n- `LiveboxInfoApi.get_device_info()`: Returns device info.\n\nAll API objects are constructed with the registry and are accessible as attributes on the `ApiRegistry` instance.\n\n---\n\n### 7. Complete Sample Script Displaying Contact List\n\n```python\nfrom LiveboxMonitor.api.LmSession import LmSession\nfrom LiveboxMonitor.api.LmApiRegistry import ApiRegistry\n\nsession = LmSession(\"http://livebox.home/\")\nresult = session.signin(\"admin\", \"your_password\")\nif result != 1:\n    raise Exception(\"Authentication failed\")\n\napi = ApiRegistry(session)\n\ntry:\n    contacts = api._voip.get_contact_list()\nfinally:\n    api.close()\n\nprint(contacts)\n```\n\n---\n\n### 8. Getting Livebox Events\n\n```python\nfrom LiveboxMonitor.api.LmSession import LmSession\n\nsession = LmSession(\"http://livebox.home/\")\nresult = session.signin(\"admin\", \"your_password\")\nif result != 1:\n    raise Exception(\"Authentication failed\")\n\nwhile True:\n    # Subscribing to device and statistic events\n    reply = session.event_request([\"Devices.Device\", \"HomeLan\"], timeout=2)\n    if reply:\n        if reply.get(\"errors\") or reply.get(\"error\"):\n            print(\"Event request failed\")\n        else:\n            events = reply.get(\"events\")\n            for e in events:\n                print(e)\n```\n\n---\n\n## Additional Notes\n\nFor more details on each class and method, consult the source code:\n- [LmSession.py](https://github.com/p-dor/LiveboxMonitor/blob/main/src/LiveboxMonitor/api/LmSession.py)\n- [LmApiRegistry.py](https://github.com/p-dor/LiveboxMonitor/blob/main/src/LiveboxMonitor/api/LmApiRegistry.py)\n- [LmApi.py](https://github.com/p-dor/LiveboxMonitor/blob/main/src/LiveboxMonitor/api/LmApi.py)\n\nBrowse the [LiveboxMonitor/api](https://github.com/p-dor/LiveboxMonitor/tree/main/src/LiveboxMonitor/api) directory for all available APIs.\n\n---\n"
  },
  {
    "path": "docs/CustomIcons.md",
    "content": "\n# ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_AppIcon.png) LiveboxMonitor - personnaliser les icônes d'appareil\n\n## Sections de cette documentation\n1. [Répertoire de configuration](#configuration)\n2. [Personnalisation des icônes d'appareil existant](#perso)\n3. [Créer un nouveau type d'appareil avec son icônes](#create)\n\n\n## Répertoire de configuration <a id=\"configuration\"></a>\n- Si le programme est lancé par son code source le répertoire de configuration est le même que celui contenant le fichier source de lancement `LiveboxMonitor.py`.\n\n- Si les programmes construits avec [PyInstaller](https://pyinstaller.org) sont utilisés, le répertoire de configuration se trouve dans les répertoires standards du système :\n\t- Windows : `%APPDATA%\\LiveboxMonitor`\n\t- MacOS : `~/Library/Application Support/LiveboxMonitor`\n\n## Personnalisation des icônes d'appareil existant <a id=\"perso\"></a>\nLes nouvelles icônes doivent :\n- Se trouver dans un répertoire `custom_icons` à placer dans le répertoire de configuration décrit ci-dessus.\n- Être au format PNG.\n\nLes types d'appareils existants supportés par la Livebox sont caractérisés par :\n- Une clef, qui est assignée à l'appareil dans la Livebox.\n- Un nom qui est affiché par l'interface en fonction de la clef. Ce nom peut être différent de la clef, par exemple en fonction de la langue d'affichage choisie dans l'interface web de la Livebox.\n- Une icône à afficher, sachant que la même icône est parfois assignée à plusieurs clefs.\n\nIl est possible de personnaliser une icône de deux façons différentes :\n1. En mettant dans le répertoire `custom_icons` un fichier PNG ayant exactement le même nom qu'une icône utilisée par la Livebox. Par exemple un fichier `e_ordibureau_windows.png` remplacera les icônes utilisées pour les clefs `Desktop Windows` et `Computer`, car toutes les deux référencent cette icône.\n2. En mettant dans le répertoire `custom_icons` un fichier PNG ayant le même nom que la clef dont on veut modifier l'icône. Par exemple un fichier `Desktop Windows.png` remplacera l'icône uniquement pour la clef `Desktop Windows`.\n\nLa table ci-dessous donne l'ensemble des clefs disponibles, les noms affichés dans la version anglaise de l'interface ainsi que les noms d'icône associés. On peut aussi retrouver cette table au format JSON dans le fichier `LmConfig.py` (voir la variable `DEVICE_TYPES`).\n\n| Clef Livebox                  | Nom affiché                  | Icône                        |\n| :---------------------------- |:-----------------------------| :----------------------------|\n| Unknown                       | Unknown                      | e_default_device.png         |\n| AC Outlet                     | AC Outlet                    | e_smart_plug.png             |\n| Acces Point                   | Acces Point                  | e_pointacceswifi.png         |\n| Airbox                        | Airbox                       | e_airbox_gen.png             |\n| Apple AirPort                 | Apple AirPort                | e_apple_express.png          |\n| Apple AirPort Time Capsule    | Apple AirPort Time Capsule   | e_apple_extreme_capsule.png  |\n| Apple Time Capsule            | Apple Time Capsule           | e_apple_extreme_capsule.png  |\n| Apple TV                      | Apple TV                     | e_apple_tv.png               |\n| Chromecast                    | Chromecast                   | e_chromecast.png             |\n| Desktop                       | Computer                     | e_ordibureau.png             |\n| Desktop Linux                 | Computer (Linux)             | e_ordibureau_Linux.png       |\n| Desktop iOS                   | Computer (MacOS)             | e_ordibureau_ios.png         |\n| Desktop Windows               | Computer (Windows)           | e_ordibureau_windows.png     |\n| Game Console                  | Console                      | e_consolejeux.png            |\n| Dimmable Color Bulb           | Dimmer Light                 | e_smart_bulb.png             |\n| Djingo Speaker                | Djingo Speaker               | e_djingospeaker.png          |\n| Domestic Robot                | Domestic Robot               | e_Homelive.png               |\n| Domino                        | Domino                       | e_domino.png                 |\n| Door Sensor                   | Door Sensor                  | e_door_sensor.png            |\n| ExtenderTV                    | Extender TV                  | e_liveplugsolo.png           |\n| ExtenderWiFiPlus              | Extender Wi-Fi Plus          | e_pointacceswifi.png         |\n| Femtocell                     | Femtocell                    | e_femtocell.png              |\n| Google OnHub                  | Google OnHub                 | e_google_onhub.png           |\n| HiFi                          | HiFi                         | e_enceinte_hifi.png          |\n| HomeLibrary                   | Home Library                 | e_homelibrary.png            |\n| HomeLive                      | Home Live                    | e_Homelive.png               |\n| Homepoint                     | Home Point                   | e_homepoint.png              |\n| IP Camera                     | IP Camera                    | e_camera_ip.png              |\n| Laptop                        | Laptop                       | e_ordiportable.png           |\n| Laptop iOS                    | Laptop (iOS)                 | e_ordiportable_ios.png       |\n| Laptop Linux                  | Laptop (Linux)               | e_ordiportable_Linux.png     |\n| Laptop Windows                | Laptop (Windows)             | e_ordiportable_windows.png   |\n| leBloc                        | Le Bloc d'Orange             | e_leblocdorange.png          |\n| HomePlug                      | Liveplug                     | e_liveplug_cpl.png           |\n| LivePlugWifi                  | Liveplug solo Wi-Fi          | e_liveplugsolo.png           |\n| WiFiExtender                  | Liveplug Wi-Fi Extender      | e_liveplug_extender.png      |\n| Liveradio                     | LiveRadio                    | e_liveradio.png              |\n| Motion Sensor                 | Motion Sensor                | e_motion_sensor.png          |\n| Nas                           | NAS                          | e_nas.png                    |\n| Notebook                      | Notebook                     | e_notebook.png               |\n| Notebook Linux                | Notebook (Linux)             | e_notebook_Linux.png         |\n| Notebook Windows              | Notebook (Windows)           | e_notebook_windows.png       |\n| Old Phone                     | Old Handset Phone            | e_telephoneold.png           |\n| Phone                         | Phone                        | e_telephonenew.png           |\n| Power Meter                   | Power Meter                  | e_smart_plug.png             |\n| Printer                       | Printer                      | e_imprimante.png             |\n| Set-top Box                   | Set-top Box                  | e_decodeurTV.png             |\n| Set-top Box TV 4              | Set-top Box 4                | e_decodeur_tv_4.png          |\n| Set-top Box TV Play           | Set-top Box Play             | e_decodeur_tv_play.png       |\n| Set-top Box TV UHD            | Set-top Box UHD              | e_decodeur_tv_uhd.png        |\n| Set-top Box TV Universal      | Set-top Box Universal        | e_decodeur_tv_universel.png  |\n| Simple Button                 | Simple Button                | e_simple_button.png          |\n| Color Bulb                    | Smart Bulb                   | e_smart_bulb.png             |\n| Smart Plug                    | Smart Plug                   | e_smart_plug.png             |\n| Mobile                        | Smartphone                   | e_mobile.png                 |\n| Mobile Android                | Smartphone (Android)         | e_mobile_android.png         |\n| Mobile iOS                    | Smartphone (iOS)             | e_mobile_ios.png             |\n| Mobile Windows                | Smartphone (Windows)         | e_mobile_windows.png         |\n| Smoke Detector                | Smoke Detector               | e_sensorhome.png             |\n| Disk                          | Storage Device               | e_periphstockage.png         |\n| Switch4                       | Switch (4 ports)             | e_switch4.png                |\n| Switch8                       | Switch (8 ports)             | e_switch8.png                |\n| Tablet                        | Tablet                       | e_tablette.png               |\n| Tablet Android                | Tablet (Android)             | e_tablette_android.png       |\n| Tablet iOS                    | Tablet (iOS)                 | e_tablette_ios.png           |\n| Tablet Windows                | Tablet (Windows)             | e_tablette_windows.png       |\n| TV                            | TV                           | e_TV.png                     |\n| TVKey                         | TV Stick                     | e_cletv.png                  |\n| TVKey v2                      | TV Stick v2                  | e_cletv_v2.png               |\n| USBKey                        | USB Key                      | e_cleusb.png                 |\n| WiFi_Access_Point             | Wi-Fi Access Point           | e_pointacceswifi.png         |\n| Window Sensor                 | Window Sensor                | e_door_sensor.png            |\n| Computer                      | Windows Computer             | e_ordibureau_windows.png     |\n| SAH AP                        | Wi-Fi Repeater               | e_pointacceswifi.png         |\n| repeteurwifi6                 | Wi-Fi Repeater 6             | e_pointacceswifi.png         |\n\n\n## Créer un nouveau type d'appareil avec son icône <a id=\"create\"></a>\nIl est possible de créer un nouveau type d'appareil en simplement plaçant dans le répertoire `custom_icons` un fichier PNG ayant pour nom la clef du type que l'on veut ajouter (et qui n'est donc pas référencée dans la table ci-dessus).\nPar exemple un fichier `Balance.png` aura pour effet de créer une nouvelle clef `Balance` avec exactement le même nom pour l'affichage et utilisant l'icône `Balance.png`.  \nBien évidemment, le type ajouté restera inconnu de l'interface web de la Livebox.\n"
  },
  {
    "path": "docs/ReleaseHistory.md",
    "content": "# ![Icone](http://p-dor.github.io/LiveboxMonitor/docs/png/Doc_AppIcon.png) LiveboxMonitor - historique des versions\n\n\n## v1.6 - 05/08/2025\n\n- Prise en charge des nouvelles Livebox W7 & S.\n- Évolutions des règles de redirection de protocoles :\n  - Prise en charge des préfixes IPv4 & IPv6 dans les adresses IP des règles.\n  - Sélection du protocole via une liste déroulante à cases à cocher et prise en charge d’une grande liste de protocoles.\n- Gestion du spam des appels téléphoniques entrants :\n  - Nouveaux boutons pour déclarer/annuler la déclaration des appels indésirables.\n  - Nouveau fichier local SpamCalls.txt pour stocker les numéros indésirables.\n  - Nouveaux boutons pour vérifier un numéro sur des sites web reconnus.\n  - Nouveaux boutons pour vérifier automatiquement les numéros indésirables via l’API Call Filter (nécessite de demander/configurer l'API Key).\n- Identification de la Livebox Pro.\n- Logs au démarrage pour afficher le modèle de Livebox identifié, le type de liaison, la liaison fibre et l’abonnement pro.\n- Évolutions du bouton IPv6 :\n  - Affichage du statut CGNat, du mode de connexion IPv6 et de la passerelle distante IPv6.\n  - Affichage de la liste des délégations de préfixes IPv6 par appareil.\n  - Nouveau bouton pour gérer le paramétrage CGNat.\n- Évolutions de la génération de documentation API :\n  - Ajout de nouveaux services :\n      Dms.Configuration\n      Dms.Database\n      Dms.Partition\n      Dms.Streaming\n      Domino.Cellular\n      Domino.Airbox\n      Domino.Intf\n      LEDs.LED\n  - Bouton de génération désactivé pour les LB W7 & S, car désormais bloqué par le firmware Orange :-(\n- Prise en charge complète de la configuration Wifi et Wifi Invités :\n  - Changement SSID, mot de passe + gestion des paramètres avancés.\n  - Filtrage MAC en deux modes (WhiteList et BlackList) et gestion de la liste des appareils concernés.\n  - Prise en charge de la configuration MLO pour LB W7 + affichage du paramétrage MLO dans les infos Wifi de la Livebox.\n- Nouveau bouton \"LEDs & Écran\" pour LB6 ou modèles plus récents pour gérer la luminosité des LEDs et afficher/masquer le mot de passe Wifi à l’écran (merci à @acut3 pour l’aide et le support).\n- Le code a été entièrement et profondément refactorisé :\n  - Toutes les fonctionnalités reposent sur une nouvelle couche API, unifiant la gestion des appels et des erreurs.\n  - La couche API peut être appelée indépendamment par d’autres logiciels. Voir le guide associé : https://github.com/p-dor/LiveboxMonitor/blob/main/docs/APICodingGuide.md\n  - Prise en charge du mockup des appels API pour simuler facilement n’importe quel modèle de Livebox.\n  - Tous les dialogues ont été découplés.\n  - Tous les fichiers sources sont désormais conformes aux normes de codage Python.\n- Suppression de la prise en charge de l’interface 6 GHz pour les répéteurs Wifi 6 (car elle n’existe pas).\n- Sauvegarde et restauration : correction de l’affichage du dernier backup en GMT au lieu de UTC.\n- Évolutions de l’envoi de notifications mail :\n  - Gestion améliorée des exceptions SSL lors de l’envoi des mails.\n  - Correction du nommage des options de sécurité (STARTTLS & TLS au lieu de TLS & SSL). Merci à @acut3 pour l'aide.\n  - La date et l’heure sont maintenant correctement définies dans les mails envoyés.\n- Les informations ONT peuvent maintenant être exportées pour les LB4 avec liaison fibre.\n- Toutes les listes du programme, y compris dans les dialogues, disposent d’un menu contextuel (clic droit) permettant d’exporter le contenu dans un fichier CSV.\n- Évolutions de la gestion de la clé de chiffrement :\n  - Le fichier Key.txt est maintenant recréé automatiquement lorsqu’il devient invalide.\n  - Amélioration de la gestion de la clé afin d’éviter les blocages.\n- Toutes les info-bulles sont désormais disponibles en anglais.\n- Évolutions de l’affichage des infos appareils :\n  - Ajout des champs Mode de chiffrement, Mode de sécurité, Bande passante de liaison, Standard opérationnel, Bande opérationnelle.\n  - Prise en charge des changements de nom et des événements de mise à jour pour rafraîchir dynamiquement les infos.\n  - Correction de l'affichage vide du niveau de signal Wifi pour les appareils Ethernet.\n- Évolutions de la liste des appareils :\n  - Amélioration de la correspondance des noms d’interfaces, y compris pour les répéteurs.\n  - Réinitialisation de l’icône de puissance Wifi dès qu’un appareil devient inactif.\n- Découverte dynamique de la liste des interfaces : offre une adaptation automatique relative à n’importe quel modèle de Livebox.\n- Nouveaux boutonx “Réinitialisation aux réglages d'usine” dans les onglets Actions et Répéteurs. Merci à @acut3 pour l'aide.\n- Nouveau bouton “Appel APIs...” dans les onglets Actions et Répéteur : permet d’appeler manuellement toute API REST/JSON de la Livebox ou du Répéteur. Quelques appels prédéfinis sont accessibles via une liste déroulante.\n- Nouveau bouton dans l’onglet Actions pour configurer la table de routage de la Livebox Pro (merci à @jfgiorgi pour l’aide).\n- Les fenêtres de confirmation AskQuestion() proposent maintenant Oui/Non au lieu de OK/Annuler.\n- Activation/désactivation Wifi plus robuste. Le Wifi peut maintenant être réactivé depuis l’application s’il a été désactivé via le bouton de la Livebox (merci à @Matrixbx pour l’info).\n\n\n## v1.5 - 26/01/2025\n\n- Ajustement des niveaux de logs pour faciliter la lecture. Toutes les logs de l'application sont au niveau 1 et les logs de trafic au niveau 2.\n- Amélioration de la sécurité avec un clef dynamique d'encryption des mots de passe, stockée dans un fichier Key.txt et encryptée avec une clef unique correspondant à l'ordinateur. Cette nouvelle version vous redemandera tous vos mots de passe (quand les cookies expireront).\n- Nouveau bouton \"Notifications\" dans l'onglet \"Événements\" permettant de recevoir des notifications automatiques par email ou de générer une log dans un fichier CSV local pour des événements concernant des appareils (connexion, déconnexion, changement de point d'accès, appareil connu ou inconnu, etc).\n- Possibilité de forcer la réauthentification à un répéteur Wifi si indiqué comme inactif.\n- Affichage du nombre total de redémarrages dans les informations Livebox & Répéteurs.\n- Affichage du voltage et du BIAS à la bonne unité pour les Livebox 6 et 7.\n- Possibilité de configurer le caractère séparateur à utiliser lors de la génération de fichiers CSV.\n- Nouveaux boutons dans l'onglet \"Actions\" pour configurer le DynDNS, la DMZ et gérer les sauvegardes/restaurations.\n- Nouvelle option pour empêcher l'ordinateur de partir en veille lorsque le logiciel est lancé.\n- Nouvelle option pour spécifier une marge de timeout pour les requêtes à la Livebox. Utile en cas d'accès sur un réseau lent ou à distance.\n- Adaptations au nouveau firmeware, notamment pour contrôler le planificateur Wifi.\n- Affichage du mode d'opération, du mode WPS et du type de lien dans les informations Wifi des répéteurs.\n- Nouvelle fonction (et bouton) pour assigner tous les noms locaux de façon identique aux noms assignés à la Livebox, pour tous les appareils inconnus. Lors de son premier lancement le programme propose d'utiliser ces noms.\n- Tous les messages sont maintenant traduits en français.\n- Nouveau bouton \"WakeOnLAN\" dans l'onglet \"Infos Appareil\", pour déclencher l'allumage de l'appareil s'il supporte cette fonction.\n- Lorsqu'on édite un contact depuis la liste d'appels, celui-ci est maintenant cherché par numéro et plus par nom.\n- Nouvelle méthode d'identification des répéteurs Wifi plus robuste.\n- Nouveau bouton \"Spam\" dans l'onglet \"Téléphone\" pour vérifier l'origine d'un appel sur le site numeroinconnu.fr.\n- Nouvelle option pour choisir d'enregistrer les mots de passe ou pas.\n- Ajustement de l'affichage des couleurs pour les puissances d'émission/réception des lignes XGS-PON.\n- Diverses améliorations et corrections de bugs mineures.\n\n\n## v1.4 - 24/04/2024\n\n- Support des icônes personnalisées pour les appareils / possibilité de créer de nouveaux types d'appareils avec leurs icônes.\n- Les icônes d'appareils sont maintenant stockées en cache local pour améliorer les performances.\n- Les valeurs de bande passante dans \"Internet Infos\" ont été corrigées pour être exprimées en GB au lieu de MB.\n- Les LB4 connectées en Fibre via un module SFP externe sont maintenant reconnues comme telle.\n- Le bouton \"ONT infos\" est disponible pour les LB4 connectées en Fibre.\n- ONT Max Bit Rate Suppported: valeur corrigée pour être exprimée en Gbps au lieu de mW.\n- Correction du calcul de la couleur du champ SignalTxPower dans \"ONT infos\".\n- Amélioration de la gestion du défilement automatique des valeurs des graphes de trafic, corrigeant quelques cas qui ne fonctionnaient pas correctement.\n- Correction mineure dans la gestion de l'événement notifiant du changement de type d'un appareil.\n- Suppression de la possibilité d'indiquer un port externe pour les règles NAT IPv6 car non supporté par la Livebox.\n- Rajout de l'unité dBm dans les valeurs de force de signal Wifi.\n\n\n## v1.3 - 01/11/2023\n\n- Support des plages de port dans les règles NAT/PAT pour IPv4 et IPv6.\n- Nouveau bouton \"Générer documentation APIs...\" dans l'onglet \"Actions\" permettant de générer dans des fichiers texte l'ensemble de la documentation accessible sur les APIs de la Livebox, par module. Par défaut le programme génère l'ensemble des instances trouvées par type de ressources (ou \"object\") ainsi que toutes les valeurs trouvées par paramètres, mais ces valeurs sont filtrées si on maintient la touche `Ctrl` en cliquant sur le bouton. Cela permet de partager librement ces fichiers sans divulguer d'informations spécifiques à sa configuration.\n- Les documentations (filtrées) générées pour les Livebox 5, 6, 6 Pro et 7 sont disponibles dans le repo.\n- Correction du séparateur des en-têtes dans les exports CVS des graphes.\n- Redirection d'URL par ligne de commande (par @jfgiorgi).\n- En cas de connexion wifi, la colonne \"Accès\" dans la liste des appareils affiche s'il s'agit du réseau wifi invité.\n- Le dernier niveau de signal wifi connu est maintenant masqué pour les appareils non actifs, pour plus de clarté.\n- Correction d'un problème mineur lors de l'assignation d'un nom à un appareil.\n- Nouvelle méthode plus robuste pour désactiver/activer le planificateur wifi. Il s'agit de la même méthode que celle utilisée par l'app \"MaLivebox\".\n- Amélioration de la gestion des erreurs de chargement des icônes.\n- Support de la Livebox 7.\n\n\n## v1.2 - 25/06/2023\n\n- Nouvel onglet NAT/PAT permettant de régler finement les règles de redirection de port et de protocole, d'exporter et d'importer les règles, etc.\n- Plus d'informations sur le modèle de Livebox sont disponibles via le bouton \"Infos Livebox\".\n- Nouveau bouton \"Niveaux de pare-feu...\" dans l'onglet \"Actions\" permettant de régler le niveau de protection des pare-feux IPv4 et IPv6.\n- Nouveau bouton \"Réponses aux pings...\" dans l'onglet \"Actions\" permettant de régler les réponses aux pings en IPv4 et en IPv6.\n- Nouveau bouton \"DNS...\" dans l'onglet \"Appareils\" permettant d'obtenir la liste intégrale des noms DNS assignés aux appareils.\n- Il est maintenant possible d'assigner, de modifier ou de supprimer le nom DNS d'un appareil via le bouton \"Assigner Nom...\" de l'onglet \"Infos Appareil\".\n- Quand la Livebox retourne des erreurs plus d'informations sont disponibles dans le dialogue.\n- Corrections de bugs mineurs.\n\n\n## v1.1.1 - 15/05/2023\n\n- Le chargement des icônes en accès distant fonctionne.\n- Les graphes de statistiques affichent maintenant une grille en fond qui aide à mieux visualiser les volumes.\n- Utilisation du séparateur d'Excel ( ; ) pour l'export CSV des statistiques de trafic et plus la virgule ( , )\n- Le programme maintenant vérifie au lancement si une nouvelle version a été publiée et averti l'utilisateur. Possibilité d'inhiber les avertissements.\n- Correction concernant les onglets Événements et DHCP qui empêchait l'affichage des tooltips.\n- S'il y a des appareils dans la liste de l'onglet Graphe, leur nom est maintenant automatiquement mis à jour s'il est changé.\n- Correction d'un bug dans le décodage des informations de topologie qui pouvait amener à afficher des noms de point d'accès erronés dans certains cas (colonne \"Accès\").\n\n\n## v1.1 - 01/05/2023\n\n- Correction d'un problème de crash en mode no-console si les logs étaient activées.\n- Correction d'un problème d'export des infos Livebox pour les LB4.\n- Support de l'HTTPS pour l'accès à distance.\n- Les exceptions et erreurs fatales s'affichent maintenant dans un dialogue au lieu de la console, ce qui est plus pratique pour les visualiser.\n- L'ONT n'étant pas détectable sur les LB4 le bouton permettant de voir ses informations n'apparaît plus pour ces modèles.\n- Support des répéteurs Wifi 5, ancienne génération.\n- Détection automatique du profil à utiliser au démarrage en fonction de la Livebox détectée.\n- Certaines statistiques d'interface ne recyclent plus à 4 Go grâce à l'utilisation d'une autre API pour choper des compteurs avec une plus haute résolution.\n- Nouvelle préférence pour désactiver les statistiques Wifi temps réel des appareils (qui apparaissent en bleu). Cette option est désactivée par défaut, car cela parasite  un peu les statistiques qui affichent les taux toutes les 30 secondes, on n'a pas vraiment le temps de les lire...\n- Comme l'interface \"Windows\" de base est finalement assez moche rajout d'une option pour basculer sur le style \"Fusion\" qui est plus sympa. C'est ce style qui est maintenant utilisé par défaut, sur Mac comme sur Windows, mais si vous préférez l'interface native de votre OS vous avez cette option.\n- Les adresses IP sont maintenant triées de façon numérique, ce qui est plus logique.\n- Nouvel onglet pour visualiser graphiquement les statistiques des interfaces et des appareils sur plusieurs jours.\n- La fenêtre principale dispose maintenant d'une barre de statut. Elle affiche les tâches en cours (qui apparaissaient dans le titre de la fenêtre dans les versions précédentes), et le nom du profil en cours. Un clic sur le nom du profil affiche le dialogue pour changer de profil.\n- Les onglets peuvent maintenant être déplacés à la souris y compris les onglets des répéteurs pour être mis dans n'importe quel ordre. Cet ordre est sauvé dans la configuration pour être restauré au lancement du programme.\n\n\n## v1.0 - 26/02/2023\n\n- L'alerte intempestive sur le \"Wrong or inexistant MacAddrTable.txt file\" a été fixée.\n- Toutes les colonnes sont maintenant redimensionnables à la souris à l'exception des colonnes dynamiques qui s'ajustent avec la taille de la fenêtre.\n- La détermination de l'adresse IP est beaucoup plus robuste, surtout si plusieurs sont assignées à un appareil (et dans ce cas, l'adresse active s'affiche dans les informations appareils).\n- Nouveau tab DHCP qui permet de gérer les baux statiques sur les domaines \"Home\" et \"Guest\", voir toutes les informations DHCP y compris les options envoyées et reçues, et gérer les paramètres DHCP. Les informations appareils affichent aussi l'option DHCP 55.\n- Les informations appareils affichent maintenant les standards Wifi supportés (2.4G / 5G / 6G).\n- Le noms du profil courant, pour l'identifier, s'affiche dans les titres des dialogues de connexion.\n- Adaptations pour Livebox 4.\n- Barres de défilement natives MacOS, évitant qu'elles mordent sur les colonnes de liste.\n- Une traduction française est maintenant disponible. Cette traduction est néanmoins partielle car elle concerne l'ensemble des labels de l'interface et pas les messages d'alerte, mais c'est déjà largement suffisant. Du coup une option est disponible dans les préférences pour choisir la langue entre français et anglais. Si quelqu'un veut faire une autre langue c'est très simple grâce au fichier template LmLanguage_XX.py.\n- Des tooltips sont maintenant disponibles à peu près partout dans le but de pouvoir se passer de la documentation. Tous les tooltips français sont là, seuls quelques uns dans la version anglaises. D'ailleurs si une bonne âme se sent de faire la version anglaise complète c'est très simple (fichier LmLanguage_EN.py, en recopiant les textes depuis la version française LmLanguage_FX.py). Les tooltips sont activés par défaut mais une option dans les préférences permet de les désactiver.\n- Nouveau paramêtre controlant la fréquence de rafraîchissement des statistiques temps réel, avec 3 secondes par défaut.\n\n\n### v0.9.7 - 22/01/2023\n\n- Le prefix IPv6 est affiché dans les infos Internets.\n- Dans les infos d'appareils, rajout du scope des adresses IPv6, pour différencier les adresses \"Globales\" des \"Links\".\n- Un dialogue IPv6 a été rajouté montrant le statut IPv6 de la Livebox, son adresse et préfixe et la liste des appareils actifs ou non ayant une ou plusieurs IPv6.\n- Si le fichier de configuration est incorrect, le programme ne le réinitialise plus sans demander avant.\n- Une section \"Debug\" a été rajoutée dans l'onglet \"Actions\" dans lequel on peut retrouver les boutons Raw device list, Raw topology plus un bouton pour contrôler le niveau de log dans la console.\n- Le programme supporte maintenant plusieurs Livebox via un système de profils. Au démarrage de l'application s'il n'y a pas de profil par défaut ou si la touche Ctrl est enfoncée, un dialogue permet de choisir lequel utiliser. Un bouton est disponible dans l'onglet \"Actions\" pour changer de profil. Si plusieurs profils sont configurés, le profil en cours est affiché dans la titre de la fenêtre principale.\n- S'il y a un problème pour se connecter à la Livebox le programme affiche maintenant un dialogue au démarrage pour configurer l'URL. Et s'il y a un problème au niveau de l'authentication le programme demande maintenant le nom d'utilisateur en plus du mot de passe.\n- Il y a maintenant un bouton dans l'onglet \"Actions\" pour configurer les profils et toutes les préférences. Il n'est plus utile maintenant d'ouvrir le fichier de configuration, tout peut être géré depuis l'interface graphique.\n\n\n### v0.9.6 - 07/01/2023\n\n- Un nouvel onglet \"Phone\" a été rajouté pour supporter les appels téléphoniques et la liste des contacts. Contrairement à l'interface web d'Orange la liste des appels affiche aussi la durée des appels, et la correspondance avec le nom du contact. Si la Livebox n'a pas enregistré de nom pour l'appel (car elle le fait bien), alors le programme essai de trouver lui-même un nom. Un double clic sur un appel permet de créer ou de retrouver le contact correspondant rapidement. La liste des contacts peut être exportée dans un fichier, ou importée depuis un ou plusieurs fichiers en un coup. Le format est le standard VCF, supporté par la plupart des gestionnaires de contacts (Gmail, Thunderbird, Outlook, etc). L'export est particulièrement utile pour la sauvegarde, la migration à une autre Livebox, etc.\n- Le paramètre Phone Code a été rajouté pour connaitre le code international par défaut des numéros de téléphone (par défaut 33 pour la France).\n- L'interface a été mieux réglée pour les systèmes Linux.\n- Le bouton de test de sonnerie de téléphone (maintenant dans l'onglet \"Phone\") permet de choisir parmi les 7 types de sonneries.\n- Un bouton pour quitter l'application a été rajouté dans l'onglet \"Actions\". Même effet que fermer la fenêtre.\n- Une zone \"À propos\" a été rajoutée dans l'onglet \"Actions\", avec un lien permettant de retrouver la page de l'application en cliquant dessus.\n- Les paramètres List Header Height / List Line Height ont été rajoutés pour régler la hauteur des entêtes et lignes des listes du programme.\n- Les paramètres List Header Font Size / List Line Font Size ont été rajoutés pour régler la taille de la police de caractère des entêtes et lignes des listes.\n- Le programme supporte maintenant le fait que les répéteurs Wifi aient des mots de passe différents de celui de la Livebox (chose possible avec une Livebox 6).\n- Pour pouvoir supporter des polices de caractères plus grandes les tables de statistiques dans les onglets de la Livebox et des répéteurs Wifi ont été élargies.\n\n\n### v0.9.5 - 25/12/2022\n\n- Les appareils sont détectés de manière bien plus native. Le programme détecte maintenant l'ensemble exhaustif des appareils référencés par la Livebox, y compris parfois des appareils \"fantômes\" probablement déclarés par les routeurs/switches du réseau. Du coup rajout du paramètre ci-dessous pour gérer cela.\n- Paramètre 'Filter Devices' dans le fichier de config, actif par défaut, qui permet de filtrer ces appareils \"fantômes\". Pour vraiment tout voir, mettre ce paramètre à \"false\".\n- Le programme se comporte maintenant correctement lorsque le PC/Mac sort de veille, il restore automatiquement toutes les sessions et repart normalement. Cependant un \"Refresh\" est conseillé tout de suite derrière car pendant la période de veille de nombreux événements importants ont probablement été manqués.\n- Meilleure couleur de fond pour les listes sur MacOS.\n- Ajout du bouton \"Forget...\" dans l'écran \"Device Infos\" qui permet de demander à la Livebox (et donc au programme) d'oublier définitivement un appareil. Utile pour \"nettoyer\" les listes et supprimer des appareils inactifs qui n'ont aucune chance de se reconnecter. Par contre le bouton fonctionne aussi pour les appareils actifs, dans ce cas l'appareil en question n'est absolument pas banni (il y a un bouton \"Block\" pour cela), sa connexion reste toujours effective, il devient juste invisible jusqu'à sa prochaine tentative de connexion.\n- Et une longue liste d'amèliorations mineures...\n\n\n### v0.9.4 - 03/12/2022\n\n- Adaptations pour Livebox 6.\n- Détection plus robuste des répéteurs Wifi.\n- Nom des interfaces Ethernet et leur numérotation maintenant alignée sur ce qu'on peut voir physiquement sur la Livebox (tout comme le fait l'interface Web de la Livebox).\n\n\n### v0.9.3 - 20/11/2022\n\n- Nouvelle colonne montrant l'icône de la Livebox correspondant au type d'appareil.\n- La colonne \"Active\" affiche maintenant des icônes.\n- Toutes les colonnes affichant des icônes sont maintenant triables.\n\n\n### v0.9.2 - 06/11/2022\n\n- Première béta.\n"
  },
  {
    "path": "pyproject.toml",
    "content": "# pyproject.toml\n\n[build-system]\nrequires = [\"setuptools\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"LiveboxMonitor\"\nversion = \"1.7\"\ndescription = \"Advanced graphical user interface to control Livebox 4, 5, 6, 7, W7 & S\"\nreadme = \"README.md\"\nauthors = [{ name = \"Pierre Dor\", email = \"dorpierre@orange.fr\" }]\nlicense = { file = \"LICENSE\" }\nclassifiers = [\n    \"License :: OSI Approved :: MIT License\",\n    \"Development Status :: 5 - Production/Stable\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\n    \"Programming Language :: Python :: 3\",\n    \"Topic :: System :: Monitoring\",\n    \"Topic :: System :: Networking :: Monitoring\",\n    \"Topic :: Home Automation\"\n]\nkeywords = [\"livebox\", \"sysbus\", \"ui\", \"monitoring\", \"traffic\"]\ndependencies = [\n    \"PyQt6\",\n    \"requests\",\n    \"python-dateutil\",\n    \"cryptography\",\n    \"pyqtgraph\",\n    \"wakepy\",\n    \"xmltodict\"\n]\nrequires-python = \">=3.10\"\n\n[project.optional-dependencies]\ndev = []\n\n[project.urls]\nhomepage = \"https://github.com/p-dor/LiveboxMonitor\"\ndocumentation = \"https://p-dor.github.io/LiveboxMonitor\"\nsource = \"https://github.com/p-dor/LiveboxMonitor\"\nissues = \"https://github.com/p-dor/LiveboxMonitor/issues\"\nchangelog = \"https://github.com/p-dor/LiveboxMonitor/releases\"\ndiscussions = \"https://github.com/p-dor/LiveboxMonitor/discussions\"\nfunding = \"https://www.paypal.com/donate/?hosted_button_id=U7CLQM3WGTUEJ&locale.x=fr_FR\"\n\n[project.scripts]\nLiveboxMonitor = \"LiveboxMonitor.__main__:main\"\n"
  },
  {
    "path": "requirements.txt",
    "content": "PyQt6\nrequests\npython-dateutil\ncryptography\npyqtgraph\nwakepy\nxmltodict\n"
  },
  {
    "path": "src/LiveboxMonitor/__init__.py",
    "content": "# #### Livebox Monitor ####\n\n__title__ = \"LiveboxMonitor\"\n__description__ = \"Graphical user interface to manage Livebox 4, 5, 6, 7, W7 & S\"\n__url__ = \"https://github.com/p-dor/LiveboxMonitor\"\n__version__ = \"1.7\"\n__build__ = 0x010700\n__author__ = \"Pierre Dor\"\n__author_email__ = \"dorpierre@orange.fr\"\n__license__ = \"MIT\"\n__copyright__ = \"Copyright 2022-26 Pierre Dor\"\n"
  },
  {
    "path": "src/LiveboxMonitor/__main__.py",
    "content": "#!/usr/bin/env python3\n### Python program to monitor & administrate a Livebox 4, 5, 6, 7, W7 or S ###\n\nimport sys\nimport os\nimport re\nimport traceback\nimport locale\nimport argparse\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\nfrom wakepy import keep, ActivationResult\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmTask import LmTask\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmConfig import LmConf, set_application_style, set_livebox_model, release_check\nfrom LiveboxMonitor.api.LmSession import LmSession\nfrom LiveboxMonitor.api.LmApiRegistry import ApiRegistry\nfrom LiveboxMonitor.tabs import (LmDeviceListTab, LmInfoTab, LmGraphTab, LmDeviceInfoTab, LmEventsTab,\n                                 LmDhcpTab, LmNatPatTab, LmPhoneTab, LmActionsTab, LmRepeaterTab, LmTvDecoderTab)\nfrom LiveboxMonitor.dlg.LmLiveboxCnx import LiveboxCnxDialog\nfrom LiveboxMonitor.dlg.LmLiveboxSignin import LiveboxSigninDialog\nfrom LiveboxMonitor.lang.LmLanguages import LANGUAGES_LOCALE, get_main_label as lx, get_main_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\nfrom LiveboxMonitor.__init__ import __version__\n\n\n# ################################ VARS & DEFS ################################\n\n# Static Config\nNO_THREAD = False   # Use only to speed up testing while developping\nTAB_ORDER = [\n    LmDeviceListTab.TAB_NAME,\n    LmInfoTab.TAB_NAME,\n    LmGraphTab.TAB_NAME,\n    LmDeviceInfoTab.TAB_NAME,\n    LmEventsTab.TAB_NAME,\n    LmDhcpTab.TAB_NAME,\n    LmNatPatTab.TAB_NAME,\n    LmPhoneTab.TAB_NAME,\n    LmActionsTab.TAB_NAME\n]\n\n\n# ################################ APPLICATION ################################\n\n# ############# Main window class #############\nclass LiveboxMonitorUI(QtWidgets.QMainWindow, LmDeviceListTab.LmDeviceList,\n                                              LmInfoTab.LmInfo,\n                                              LmGraphTab.LmGraph,\n                                              LmDeviceInfoTab.LmDeviceInfo,\n                                              LmEventsTab.LmEvents,\n                                              LmDhcpTab.LmDhcp,\n                                              LmNatPatTab.LmNatPat,\n                                              LmPhoneTab.LmPhone,\n                                              LmActionsTab.LmActions,\n                                              LmRepeaterTab.LmRepeater,\n                                              LmTvDecoderTab.LmTvDecoder):\n\n    ### Initialize the application\n    def __init__(self):\n        super().__init__()\n        self._task = LmTask(self)\n        self._reset_flag = False\n        self._app_ready = False\n        self._status_bar = None\n        self._repeaters = []\n        self._tvdecoders = []\n        if not NO_THREAD:\n            self.init_event_loop()\n            self.init_wifi_stats_loop()\n            self.init_stats_loop()\n            self.init_repeater_stats_loop()\n            self.init_tvdecoder_status_loop()\n        self._application_name = f\"Livebox Monitor v{__version__}\"\n        self.setWindowIcon(QtGui.QIcon(LmIcon.AppIconPixmap))\n        self.setGeometry(100, 100, 1300, 102 + LmConfig.window_height(21))\n        self.show()\n        QtCore.QCoreApplication.processEvents()\n        if self.signin():\n            LmConf.set_cache_directory(self._api._info.get_software_version())\n            if not self._api._intf.build_list():\n                LmTools.error(\"Failed to build interface list.\")\n            self.adjust_to_livebox_model()\n            self.init_ui()\n            self.setWindowTitle(self.app_window_title())\n            LmConf.load_mac_addr_table()\n            LmConf.load_spam_calls_table()\n            QtCore.QCoreApplication.processEvents()\n            self.load_device_list()\n            self.init_repeaters()\n            self.init_tvdecoders()\n            LmConfig.set_tooltips(self, \"main\")\n            self._app_ready = True\n            if not NO_THREAD:\n                self.start_event_loop()\n                self.start_wifi_stats_loop()\n\n            # Force tag change tasks once app is ready\n            self.tab_changed_event(self._tab_widget.currentIndex())\n\n            # Propose to assign local names as LB name if no name base setup yet\n            self.propose_to_assign_names_to_unkown_devices()\n\n\n    ### Create main window\n    def init_ui(self):\n        # Status bar\n        self._status_bar = QtWidgets.QStatusBar()\n        self._status_bar_profile = QtWidgets.QLabel(f\"[{LmConf.CurrProfile['Name']}]\")\n        self._status_bar_profile.mousePressEvent = self.status_bar_profile_click\n        self._status_bar.addPermanentWidget(self._status_bar_profile)\n        self.setStatusBar(self._status_bar)\n        QtCore.QCoreApplication.processEvents()\n\n        # Tab Widgets\n        self._tab_widget = QtWidgets.QTabWidget(self, objectName=\"tabWidget\")\n        self._tab_widget.setMovable(True)\n        self._tab_widget.currentChanged.connect(self.tab_changed_event)\n        self._tab_widget.tabBar().tabMoved.connect(self.tab_moved_event)\n\n        tab_order = self.get_tabs_order()\n        for t in tab_order:\n            match t:\n                case LmDeviceListTab.TAB_NAME:\n                    self.create_device_list_tab()\n                case LmInfoTab.TAB_NAME:\n                    self.create_livebox_info_tab()\n                case LmGraphTab.TAB_NAME:\n                    self.create_graph_tab()\n                case LmDeviceInfoTab.TAB_NAME:\n                    self.create_device_info_tab()\n                case LmEventsTab.TAB_NAME:\n                    self.create_events_tab()\n                case LmDhcpTab.TAB_NAME:\n                    self.create_dhcp_tab()\n                case LmNatPatTab.TAB_NAME:\n                    self.create_nat_pat_tab()\n                case LmPhoneTab.TAB_NAME:\n                    self.create_phone_tab()\n                case LmActionsTab.TAB_NAME:\n                    self.create_actions_tab()\n\n        self.setCentralWidget(self._tab_widget)\n\n\n    ### Reset the UI, e.g. after a change of profile\n    def reset_ui(self):\n        self._reset_flag = True\n        self.close()\n\n\n    ### Click on the profile indication in the status bar\n    def status_bar_profile_click(self, event):\n        self.change_profile_button_click()\n\n\n    ### Handle change of tab event\n    def tab_changed_event(self, new_tab_index):\n        if self._app_ready:\n            tab = self._tab_widget.widget(new_tab_index)\n            match tab.objectName():\n                case LmDeviceListTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.resume_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmInfoTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.resume_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmGraphTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                    self.graph_tab_click()\n                case LmDeviceInfoTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmEventsTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmDhcpTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                    self.dhcp_tab_click()\n                case LmNatPatTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                    self.nat_pat_tab_click()\n                case LmPhoneTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                    self.phone_tab_click()\n                case LmActionsTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmRepeaterTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.resume_repeater_stats_loop()\n                        self.suspend_tvdecoder_status_loop()\n                case LmTvDecoderTab.TAB_NAME:\n                    if not NO_THREAD:\n                        self.suspend_wifi_stats_loop()\n                        self.suspend_stats_loop()\n                        self.suspend_repeater_stats_loop()\n                        self.resume_tvdecoder_status_loop()\n                    self.tvdecoder_tab_click(tab.property(\"Key\"))\n\n\n    ### Handle move of tab event\n    def tab_moved_event(self, from_index, to_index):\n        self.save_tabs_order()\n\n\n    ### Get tabs order\n    def get_tabs_order(self):\n        # If nothing in config return the standard order\n        if LmConf.Tabs is None:\n            return TAB_ORDER\n\n        # Rebuild the list by checking in case it would be corrupted / incomplete\n        # Keep the order from config for known tabs, then add any missing standard tabs\n        tabs = [t for t in LmConf.Tabs if t in TAB_ORDER]\n        tabs += [t for t in TAB_ORDER if t not in tabs]\n        return tabs\n\n\n    ### Save tabs order in configuration\n    def save_tabs_order(self):\n        LmConf.Tabs = []    # Reset\n        for i in range(self._tab_widget.count()):\n            tab = self._tab_widget.widget(i)\n            key = tab.property(\"Key\")\n            if key is not None:\n                LmConf.Tabs.append(f\"{tab.objectName()}_{key}\")\n            else:\n                LmConf.Tabs.append(tab.objectName())\n        LmConf.save()\n\n\n    ### Get tab index from name & key, key can be None, returns -1 of not found\n    def get_tab_index(self, name, key):\n        for i in range(self._tab_widget.count()):\n            tab = self._tab_widget.widget(i)\n            if (name == tab.objectName()) and (key == tab.property(\"Key\")):\n                return i\n        return -1\n\n\n    ### Window close event - called by PyQT\n    def closeEvent(self, event):\n        if not NO_THREAD:\n            self._task.start(lx(\"Terminating threads...\"))\n            try:\n                self.stop_event_loop()\n                self.stop_stats_loop()\n                self.stop_wifi_stats_loop()\n                self.stop_repeater_stats_loop()\n                self.stop_tvdecoder_status_loop()\n            finally:\n                self._task.end()\n        event.accept()\n\n\n    ### Last chance to release resources\n    def app_terminate(self):\n        self.signout_repeaters()\n        self.signout()\n        self._app_ready = False\n\n\n    ### Sign in to Livebox\n    def signin(self):\n        while True:\n            self._task.start(lx(\"Signing in...\"))\n            session = LmSession(LmConf.LiveboxURL, f\"LiveboxMonitor_{LmConf.CurrProfile['Name']}\")\n            try:\n                r = session.signin(LmConf.LiveboxUser, LmConf.LiveboxPassword, not LmConf.SavePasswords)\n            except Exception as e:\n                LmTools.error(str(e))\n                r = -1\n            finally:\n                self._task.end()\n            if r > 0:\n                self._api = ApiRegistry(session)\n                return True\n            self._api = None\n            self.close()\n\n            if r < 0:\n                dialog = LiveboxCnxDialog(LmConf.LiveboxURL, self)\n                if dialog.exec():\n                    url = dialog.get_url()\n                    # Remove unwanted characters (can be set via Paste action) + cleanup\n                    url = LmTools.clean_url(re.sub(\"[\\n\\t]\", \"\", url))\n                    LmConf.set_livebox_url(url)\n                    self.show()\n                    continue\n                else:\n                    self.display_error(mx(\"Cannot connect to the Livebox.\", \"cnx\"))\n                    return False\n\n            dialog = LiveboxSigninDialog(LmConf.LiveboxUser, LmConf.LiveboxPassword, LmConf.SavePasswords, self)\n            if dialog.exec():\n                # Remove unwanted characters (can be set via Paste action)\n                user = re.sub(\"[\\n\\t]\", \"\", dialog.get_user())\n                password = re.sub(\"[\\n\\t]\", \"\", dialog.get_password())\n                LmConf.SavePasswords = dialog.get_save_passwords()\n                LmConf.set_livebox_user_password(user, password)\n                self.show()\n            else:\n                self.display_error(mx(\"Livebox authentication failed.\", \"auth\"))\n                return False\n\n\n    ### Check if signed to Livebox\n    def is_signed(self):\n        return self._api is not None\n\n\n    ### Sign out from Livebox\n    def signout(self):\n        if self.is_signed():\n            self._api.close()\n            self._api = None\n\n\n    ### Adjust configuration to Livebox model\n    def adjust_to_livebox_model(self):\n        LmConf.set_livebox_mac(self._api._info.get_mac())\n\n        LmTools.log_debug(1, f\"Identified Livebox model: {self._api._info.get_model_name()} ([{self._api._info.get_model()}] {self._api._info.get_raw_model_name()})\")\n\n        self.determine_fiber_link()\n        self.determine_livebox_pro()\n        set_livebox_model(self._api._info.get_model())\n\n\n    ### Determine link type and if fiber or not\n    def determine_fiber_link(self):\n        # Determine link type\n        try:\n            d = self._api._info.get_wan_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._link_type = \"UNKNOWN\"\n        else:\n            self._link_type = d.get(\"LinkType\", \"UNKNOWN\").upper()\n\n        # Determine fiber link\n        model = self._api._info.get_model()\n        if model >= 5:\n            self._fiber_link = True\n        elif model <= 3:\n            self._fiber_link = False\n        else:\n            # Check link type for Livebox 4\n            self._fiber_link = (self._link_type == \"SFP\")\n\n        LmTools.log_debug(1, f\"Identified link type: {self._link_type}\")\n        LmTools.log_debug(1, f\"Identified fiber link: {self._fiber_link}\")\n\n\n    ### Determine if Pro or Residential subscription\n    def determine_livebox_pro(self):\n        try:\n            d = self._api._info.get_connection_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._livebox_pro = False\n        else:\n            offer_type = d.get(\"OfferType\")\n            if offer_type is None:\n                LmTools.error(\"Missing offer type in NMC:get, cannot determine Livebox Pro model\")\n                self._livebox_pro = False\n            else:\n                self._livebox_pro = \"PRO\" in offer_type.upper()\n\n        LmTools.log_debug(1, f\"Identified Livebox Pro: {self._livebox_pro}\")\n\n\n    ### Exit with escape\n    def keyPressEvent(self, e):\n        if e.key() == QtCore.Qt.Key.Key_Escape:\n            self.close()\n\n\n    ### Return window base title to use\n    def app_window_title(self):\n        if (self._status_bar is None) and (len(LmConf.Profiles) > 1):\n            return f\"{self._application_name} [{LmConf.CurrProfile['Name']}]\"\n        return self._application_name\n\n\n    # Display an error popup\n    def display_error(self, error_msg, silent=False):\n        LmTools.error(error_msg.rstrip())\n\n        if not silent:\n            self._task.suspend()\n            try:\n                LmQtTools.display_error(error_msg, self)\n            finally:\n                self._task.resume()\n\n\n    # Display a status popup\n    def display_status(self, status_msg):\n        self._task.suspend()\n        try:\n            LmQtTools.display_status(status_msg, self)\n        finally:\n            self._task.resume()\n\n\n    # Ask a question and return True if OK clicked\n    def ask_question(self, question_msg):\n        self._task.suspend()\n        try:\n            answer = LmQtTools.ask_question(question_msg, self)\n        finally:\n            self._task.resume()\n        return answer\n\n\n    # Display an info text popup\n    def display_infos(self, title, info_msg, info_doc=None):\n        self._task.suspend()\n        try:\n            LmQtTools.display_infos(title, info_msg, info_doc, self)\n        finally:\n            self._task.resume()\n\n\n    ### Switch to device list tab\n    def switch_to_device_list_tab(self):\n        self._tab_widget.setCurrentWidget(self._device_list_tab)\n\n\n    ### Switch to Livebox infos tab\n    def switch_to_livebox_infos_tab(self):\n        self._tab_widget.setCurrentWidget(self._livebox_info_tab)\n\n\n    ### Switch to graph tab\n    def switch_to_graph_tab(self):\n        self._tab_widget.setCurrentWidget(self._graph_tab)\n\n\n    ### Switch to device infos tab\n    def switch_to_device_infos_tab(self):\n        self._tab_widget.setCurrentWidget(self._device_info_tab)\n\n\n    ### Switch to device events tab\n    def switch_to_device_events_tab(self):\n        self._tab_widget.setCurrentWidget(self._events_tab)\n\n\n    ### Switch to DHCP tab\n    def switch_to_dhcp_tab(self):\n        self._tab_widget.setCurrentWidget(self._dhcp_tab)\n\n\n    ### Switch to NAT/PAT tab\n    def switch_to_nat_pat_tab(self):\n        self._tab_widget.setCurrentWidget(self._nat_pat_tab)\n\n\n    ### Switch to phone tab\n    def switch_to_phone_tab(self):\n        self._tab_widget.setCurrentWidget(self._phone_tab)\n\n\n    ### Switch to actions tab\n    def switch_to_actions_tab(self):\n        self._tab_widget.setCurrentWidget(self._actions_tab)\n\n\n# ### wakepy error handler\ndef wake_py_failure(result):\n    LmTools.error(f\"Failed to keep system awake mode={result.mode_name} active={result.active_method} success={result.success} err={result.get_failure_text()}\")\n\n\n# ### Fatal error handler\ndef except_hook(type, value, trace_back):\n    trace_back = \"\".join(traceback.format_exception(type, value, trace_back))\n\n    msg_box = QtWidgets.QMessageBox()\n    msg_box.setWindowTitle(lx(\"Fatal Error\"))\n    msg_box.setIcon(QtWidgets.QMessageBox.Icon.Critical)\n    msg_box.setText(f\"{trace_back}\\nApplication will now quit.\")\n    msg_box.exec()\n\n    QtWidgets.QApplication.quit()\n\n\n# ############# Main #############\ndef main(native_run=False):\n    # Prevent logging to fail if running without console\n    if sys.stderr is None:\n        sys.stderr = open(os.devnull, \"w\")\n    if sys.stdout is None:\n        sys.stdout = open(os.devnull, \"w\")\n\n    LmConf.set_native_run(native_run)\n\n    app = QtWidgets.QApplication(sys.argv)\n    sys.excepthook = except_hook\n    if LmConf.load():\n        LmIcon.load()\n        LmConf.load_custom_device_icons()\n        release_check()\n\n        # Command line parameters\n        arg_parser = argparse.ArgumentParser()\n        arg_parser.add_argument(\"--redir\", \"-r\", help=\"add a url redirection, REDIR format must be url1=url2\", action=\"append\")\n        args = arg_parser.parse_args()\n        if args.redir:\n            LmSession.load_url_redirections(args.redir)\n\n        while True:\n            set_application_style()\n\n            # Apply decoupled saved preferences\n            LmConf.apply_saved_prefs()\n\n            # Assign Python locale to selected preference (useful e.g. for pyqtgraph time axis localization)\n            try:\n                locale.setlocale(locale.LC_ALL, (LANGUAGES_LOCALE[LmConf.Language], \"UTF-8\"))\n            except Exception as e:\n                LmTools.error(f\"setlocale() error: {e}\")\n\n            # Set Qt language to selected preference\n            translator = QtCore.QTranslator()\n            trans_path = QtCore.QLibraryInfo.path(QtCore.QLibraryInfo.LibraryPath.TranslationsPath)\n            translator.load(\"qtbase_\" + LmConf.Language.lower(), trans_path)\n            app.installTranslator(translator)\n\n            # Start UI\n            ui = LiveboxMonitorUI()\n            app.aboutToQuit.connect(ui.app_terminate)\n            if ui.is_signed():\n                if LmConf.PreventSleep:\n                    with keep.running(on_fail=wake_py_failure):\n                        app.exec()\n                else:\n                    app.exec()\n                if not ui._reset_flag:\n                    break\n            else:\n                break\n\n\nif __name__ == \"__main__\":\n    main(True)\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmApi.py",
    "content": "### Livebox Monitor APIs base class ###\n\nimport os\nimport json\nimport hashlib\nimport base64\n\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\nTEST_MODE = None    # Set to the name of the test folder containing matching call signatures\n\n\n# ################################ Exceptions ################################\nclass LmApiException(Exception):\n    \"\"\"Livebox Monitor APIs exception.\"\"\"\n\n\n# ################################ Livebox Monitor APIs ################################\nclass LmApi:\n    def __init__(self, api_registry):\n        self._api = api_registry    # ApiRegistry instance\n        self._session = self._api._session\n\n\n    ### Compute error string\n    @staticmethod\n    def err_str(service, method=None, err_str=None):\n        e = service\n        if method:\n            e += f\":{method}\"\n        if err_str:\n            e += f\" {err_str}\"\n        return e\n\n\n    ### Compute error description from Livebox reply\n    @staticmethod\n    def get_error_str(desc, info, err_id=None):\n        parts = []\n        if err_id is not None:\n            parts.append(f\"[{err_id}]\")\n        if desc:\n            parts.append(desc)\n        if info:\n            if desc:\n                parts.append(f\"-> {info}\")\n            else:\n                parts.append(info)\n        if parts:\n            return \" \".join(parts) + \".\"\n        return \"\"\n\n\n    ### Collect potential error description(s) from Livebox reply\n    @staticmethod\n    def get_errors(reply):\n        if reply:\n            errors = reply.get(\"errors\")\n            if isinstance(errors, list):\n                return \"\\n\".join(LmApi.get_error_str(e.get(\"description\"), e.get(\"info\")) for e in errors)\n            else:\n                e = reply.get(\"error\")\n                if e is not None:\n                    return LmApi.get_error_str(reply.get(\"description\"), reply.get(\"info\"), e)\n        return \"\"\n\n\n    ### Call a Livebox API - raise exception or return the full reply, cannot be None and contains 'status'\n    def call_raw(self, service, method=None, args=None, timeout=None, err_str=None):\n        d = self.get_mockup(service, method, args) if TEST_MODE else None\n\n        # Call Livebox API\n        if not d:\n            if not self._session:\n                raise LmApiException(\"No session\")\n            try:\n                if timeout:\n                    d = self._session.request(service, method, args, timeout=timeout)\n                else:\n                    d = self._session.request(service, method, args)\n            except Exception as e:\n                raise LmApiException(f\"{self.err_str(service, method, err_str)}: {e}.\") from e\n\n        # Check reply\n        if d is not None:\n            e = self.get_errors(d)\n            if e:\n                raise LmApiException(f\"{self.err_str(service, method, err_str)}: {e}\")\n            if \"status\" in d:\n                return d\n\n        raise LmApiException(self.err_str(service, method, err_str) + \" service error\")\n\n\n    ### Call a Livebox API - raise exception or return 'status' value, can be None\n    def call_no_check(self, service, method=None, args=None, timeout=None, err_str=None):\n        return self.call_raw(service, method, args, timeout, err_str).get(\"status\")\n\n\n    ### Call a Livebox API - raise exception or return 'status' value if not '', 0, False or None\n    def call(self, service, method=None, args=None, timeout=None, err_str=None):\n        d = self.call_no_check(service, method, args, timeout, err_str)\n        if not d:\n            raise LmApiException(self.err_str(service, method, err_str) + \" service failed\")\n        return d\n\n\n    ### Notification that the session has been closed\n    def session_closed(self):\n        self._session = None\n\n\n    ### Test mode - try to find a call mockup\n    @staticmethod\n    def get_mockup(service, method, args):\n        if args: # If args, try with full signature then simple\n            mockup = LmApi.find_mockup(service, method, args)\n            if mockup:\n                return mockup\n        return LmApi.find_mockup(service, method, None)\n\n\n    ### Test mode - find a call mockup file matching criteria\n    @staticmethod\n    def find_mockup(service, method, args):\n        signature = LmApi.get_call_signature(service, method, args)\n\n        # Look for a file in test folder matching call signature\n        test_file_path = os.path.join(\"test\", TEST_MODE, f\"{signature}.json\")\n        # LmTools.log_debug(1, f'Looking for testing with: {test_file_path}')\n\n        test_file = None\n        mockup = None\n        try:\n            test_file = open(test_file_path)\n            mockup = json.load(test_file)\n            LmTools.log_debug(1, f\"Testing with: {test_file_path}\")\n        except OSError:\n            mockup = None    # No test file found\n        except Exception as e:\n            LmTools.error(f\"Wrong JSON {signature}.json: {e}\")\n            raise LmApiException(f\"{LmApi.err_str(service, method, err_str)}: bad test driver json\")\n        finally:\n            if test_file is not None:\n                test_file.close()\n\n        return mockup\n\n\n    ### Test mode - get API call signature\n    @staticmethod\n    def get_call_signature(service, method, args):\n        sign_list = [service.replace(\".\", \"_\")]\n        if method:\n            sign_list.append(method)\n        if args:\n            arg_sign = \"_\".join(LmApi.get_arg_signature(args))\n            if len(arg_sign) > 50:\n                arg_sign = LmApi.hash_arguments(arg_sign)\n            sign_list.append(arg_sign)\n        return \"_\".join(sign_list)\n\n\n    ### Test mode - get arg signature\n    @staticmethod\n    def get_arg_signature(arg):\n        items = []\n        if isinstance(arg, dict):\n            for k, v in arg.items():\n                items.append(k)\n                items.extend(LmApi.get_arg_signature(v))\n        elif isinstance(arg, (list, tuple)):\n            for v in arg:\n                items.extend(LmApi.get_arg_signature(v))\n        else:\n            items.append(str(arg).replace(\" \", \"_\"))\n        return items\n\n\n    ### Test mode - hash arguments for API call signature\n    @staticmethod\n    def hash_arguments(string, algorithm=\"sha256\"):\n        # Use the specified hash algorithm\n        h = hashlib.new(algorithm)\n        h.update(string.encode(\"utf-8\"))\n        # Use base64 for compactness, but make it filesystem-safe\n        hash_bytes = h.digest()\n        hash_b64 = base64.urlsafe_b64encode(hash_bytes).decode(\"utf-8\")\n        return hash_b64\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmApiRegistry.py",
    "content": "### Livebox Monitor API objects registry ###\n\nfrom LiveboxMonitor.api.LmLiveboxInfoApi import LiveboxInfoApi\nfrom LiveboxMonitor.api.LmIntfApi import IntfApi\nfrom LiveboxMonitor.api.LmWifiApi import WifiApi\nfrom LiveboxMonitor.api.LmDeviceApi import DeviceApi\nfrom LiveboxMonitor.api.LmStatsApi import StatsApi\nfrom LiveboxMonitor.api.LmDhcpApi import DhcpApi\nfrom LiveboxMonitor.api.LmVoipApi import VoipApi\nfrom LiveboxMonitor.api.LmIptvApi import IptvApi\nfrom LiveboxMonitor.api.LmRebootApi import RebootApi\nfrom LiveboxMonitor.api.LmFirewallApi import FirewallApi\nfrom LiveboxMonitor.api.LmRoutingApi import RoutingApi\nfrom LiveboxMonitor.api.LmDynDnsApi import DynDnsApi\nfrom LiveboxMonitor.api.LmBackupRestoreApi import BackupRestoreApi\nfrom LiveboxMonitor.api.LmScreenApi import ScreenApi\n\n\n# ################################ API objects registry ################################\nclass ApiRegistry:\n    def __init__(self, session, is_repeater=False):\n        self._registry = {}\n        self._session = session\n        self._is_repeater = is_repeater\n        self._info = self.register('info', LiveboxInfoApi(self))\n        self._intf = self.register('intf', IntfApi(self))\n        self._wifi = self.register('wifi', WifiApi(self))\n        self._device = self.register('device', DeviceApi(self))\n        self._stats = self.register('stats', StatsApi(self))\n        self._dhcp = self.register('dhcp', DhcpApi(self))\n        self._voip = self.register('voip', VoipApi(self))\n        self._iptv = self.register('iptv', IptvApi(self))\n        self._reboot = self.register('reboot', RebootApi(self))\n        self._firewall = self.register('firewall', FirewallApi(self))\n        self._routing = self.register('routing', RoutingApi(self))\n        self._dyndns = self.register('dyndns', DynDnsApi(self))\n        self._backup = self.register('backup', BackupRestoreApi(self))\n        self._screen = self.register('screen', ScreenApi(self))\n\n\n    ### Add an API to the registry\n    def register(self, name, api):\n        self._registry[name] = api\n        return api\n\n\n    ### Close the session\n    def close(self):\n        if self._session:\n            self._session.close()\n            self._session = None\n        for api in self._registry:\n            self._registry[api].session_closed()\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmBackupRestoreApi.py",
    "content": "### Livebox Monitor Backup & Restore APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi\n\n\n# ################################ Backup & Restore APIs ################################\nclass BackupRestoreApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get status\n    def get_status(self):\n        return self.call(\"NMC.NetworkConfig\", \"get\")\n\n\n    ### Set Auto Backup enable status\n    def set_auto_backup_enable(self, enable):\n        self.call_no_check(\"NMC.NetworkConfig\", \"enableNetworkBR\", {\"state\": enable})\n\n\n    ### Start a backup\n    def do_backup(self):\n        self.call_no_check(\"NMC.NetworkConfig\", \"launchNetworkBackup\", {\"delay\" : True})\n\n\n    ### Start a restore\n    def do_restore(self):\n        self.call_no_check(\"NMC.NetworkConfig\", \"launchNetworkRestore\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmDeviceApi.py",
    "content": "### Livebox Monitor Device APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Device APIs ################################\nclass DeviceApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get device list\n    def get_list(self):\n        d = self.call_no_check(\"Devices\", \"get\", {\"expression\": \"physical and !self and !voice\"}, timeout=10)\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"Devices:get query error\")\n\n\n    ### Get USB setup and plugged device list\n    def get_usb(self):\n        d = self.call_no_check(\"Devices\", \"get\", {\"expression\": \"usb\"}, timeout=10)\n        if isinstance(d, list) and len(d):\n            return d\n        raise LmApiException(\"Devices:get query error\")\n\n\n    ### Get device topology\n    def get_topology(self):\n        d = self.call_no_check(\"TopologyDiagnostics\", \"buildTopology\", {\"SendXmlFile\": \"false\"}, timeout=20)\n        if isinstance(d, list) and len(d):\n            return d\n        raise LmApiException(\"TopologyDiagnostics:buildTopology query error\")\n\n\n    ### Set device name - key is MAC addr\n    def set_name(self, device_key, device_name):\n        self.call(\"Devices.Device.\" + device_key, \"setName\", {\"name\": device_name}, err_str=\"Livebox\")\n\n\n    ### Delete device name - key is MAC addr\n    def del_name(self, device_key):\n        self.call(\"Devices.Device.\" + device_key, \"removeName\", {\"source\": \"webui\"}, err_str=\"Livebox\")\n\n\n    ### Set device DNS name - key is MAC addr\n    def set_dns_name(self, device_key, dns_name):\n        self.call(\"Devices.Device.\" + device_key, \"setName\", {\"name\": dns_name, \"source\": \"dns\"}, err_str=\"DNS\")\n\n\n    ### Delete device DNS name - key is MAC addr\n    def del_dns_name(self, device_key):\n        self.call(\"Devices.Device.\" + device_key, \"removeName\", {\"source\": \"dns\"}, err_str=\"DNS\")\n\n\n    ### Set device type - key is MAC addr\n    def set_type(self, device_key, device_type):\n        self.call(\"Devices.Device.\" + device_key, \"setType\", {\"type\": device_type})\n\n\n    ### Get device info - key is MAC addr\n    def get_info(self, device_key):\n         return self.call(\"Devices.Device.\" + device_key, \"get\")\n\n\n    ### Get device IP address - key is MAC addr\n    def get_ip_addr(self, device_key):\n         return self.call(\"Devices.Device.\" + device_key, \"getFirstParameter\", {\"parameter\": \"IPAddress\"})\n\n\n    ### Get device schedule - key is MAC addr - return None if no schedule\n    def get_schedule(self, device_key):\n        d = self.call_raw(\"Scheduler\", \"getSchedule\", {\"type\": \"ToD\", \"ID\": device_key})\n        if not d.get(\"status\"):\n            return None\n        return d.get(\"data\")\n\n\n    ### Override device schedule - key is MAC addr\n    def override_schedule(self, device_key, override_value):\n        self.call(\"Scheduler\", \"overrideSchedule\", {\"type\": \"ToD\", \"ID\": device_key, \"override\": override_value})\n\n\n    ### Add device schedule - key is MAC addr\n    def add_schedule(self, device_key, schedule):\n        schedule[\"ID\"] = device_key\n        self.call(\"Scheduler\", \"addSchedule\", {\"type\": \"ToD\", \"info\": schedule})\n\n\n    ### Block device - key is MAC addr\n    def block(self, device_key):\n        has_schedule = self.get_schedule(device_key) is not None\n        # If has schedule override it, otherwise add it\n        if has_schedule:\n            self.override_schedule(device_key, \"Disable\")\n        else:\n            schedule = {}\n            schedule[\"base\"] = \"Weekly\"\n            schedule[\"def\"] = \"Enable\"\n            schedule[\"schedule\"] = []\n            schedule[\"enable\"] = True\n            schedule[\"override\"] = \"Disable\"\n            self.add_schedule(device_key, schedule)\n\n\n    ### Unblock device - key is MAC addr - return False if device was not blocked\n    def unblock(self, device_key):\n        has_schedule = self.get_schedule(device_key) is not None\n        # If has schedule override it, otherwise no need to unlock\n        if has_schedule:\n            self.override_schedule(device_key, \"Enable\")\n            return True\n        return False\n\n\n    ### Check if device is blocked - key is MAC addr\n    def is_blocked(self, device_key):\n        d = self.get_schedule(device_key)\n        if not d:\n            return False\n\n        d = d.get(\"scheduleInfo\")\n        if not d:\n            return False\n\n        return (d.get(\"override\") == \"Disable\") and (d.get(\"value\") == \"Disable\")\n\n\n    ### Delete device from Livebox - key is MAC addr\n    def delete(self, device_key):\n        self.call(\"Devices\", \"destroyDevice\", {\"key\": device_key})\n\n\n    ### Send WOL signal to device - key is MAC addr\n    def wake_on_lan(self, device_key):\n        self.call_no_check(\"WOL\", \"sendWakeOnLan\", {\"hostID\": device_key, \"broadcast\": True})\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmDhcpApi.py",
    "content": "### Livebox Monitor DHCP APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Livebox DHCP APIs ################################\nclass DhcpApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get DHCP setup\n    def get_setup(self):\n        d = self.call_raw(\"NMC\", \"getLANIP\")\n        return d.get(\"data\")\n\n\n    ### Set DHCP setup\n    def set_setup(self, setup):\n        self.call_raw(\"NetMaster.LAN.default.Bridge.lan\", \"setIPv4\", setup)\n\n\n    ### Get DHCP leases list - default to standard domain\n    def get_leases(self, guest=False):\n        domain = \"guest\" if guest else \"default\"\n        d = self.call_no_check(\"DHCPv4.Server.Pool.\" + domain, \"getStaticLeases\", domain)\n        if isinstance(d, list):\n            return d\n        raise LmApiException(f\"DHCPv4.Server.Pool.{domain}:getStaticLeases query error\")\n\n\n    ### Add a DHCP lease - default to standard domain\n    def add_lease(self, mac_addr, ip_addr, guest=False):\n        domain = \"guest\" if guest else \"default\"\n        self.call_no_check(\"DHCPv4.Server.Pool.\" + domain, \"addStaticLease\", {\"MACAddress\": mac_addr, \"IPAddress\": ip_addr})\n\n\n    ### Delete a DHCP lease - default from standard domain\n    def delete_lease(self, mac_addr, guest=False):\n        domain = \"guest\" if guest else \"default\"\n        self.call_no_check(\"DHCPv4.Server.Pool.\" + domain, \"deleteStaticLease\", {\"MACAddress\": mac_addr})\n\n\n    ### Get DHCP infos - domain can be default or guest or bridge_ctr, get all if None\n    def get_info(self, domain=None):\n        if domain:\n            return self.call(\"DHCPv4.Server\", \"getDHCPServerPool\", {\"id\": domain})\n        return self.call(\"DHCPv4.Server\", \"getDHCPServerPool\")\n\n\n    ### Get DHCPv6 server status\n    def get_v6_server_status(self):\n        return self.call_no_check(\"DHCPv6.Server\", \"getDHCPv6ServerStatus\")\n\n\n    ### Get DHCPv6 prefix\n    def get_v6_prefix(self):\n        d = self.call_no_check(\"DHCPv6.Server\", \"getPDPrefixInformation\")\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"DHCPv6.Server:getPDPrefixInformation query error\")\n\n\n    ### Get IPv6 prefix leases\n    def get_v6_prefix_leases(self):\n        d = self.call_no_check(\"DHCPv6.Server\", \"getPDPrefixLeases\")\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"DHCPv6.Server:getPDPrefixLeases query error\")\n\n\n    ### Get DHCP MIBs information\n    def get_mibs(self, dhcp_v4, dhcp_v6):\n        p = []\n        if dhcp_v4:\n            p.append(\"dhcp\")\n        if dhcp_v6:\n            p.append(\"dhcpv6\")\n        mibs = \" \".join(p) or None\n        if mibs:\n            return self.call(\"NeMo.Intf.data\", \"getMIBs\", {\"mibs\": mibs})\n        raise LmApiException(\"At least one MIB must be selected\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmDynDnsApi.py",
    "content": "### Livebox Monitor DynDNS APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ DynDNS APIs ################################\nclass DynDnsApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get DynDNS enable status\n    def get_enable(self):\n        return self.call_no_check(\"DynDNS\", \"getGlobalEnable\")\n\n\n    ### Set DynDNS enable status\n    def set_enable(self, enable):\n        self.call(\"DynDNS\", \"setGlobalEnable\", {\"enable\": enable})\n\n\n   ### Get DynDNS hosts\n    def get_hosts(self):\n        d = self.call_no_check(\"DynDNS\", \"getHosts\")\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"DynDNS:getHosts query error\")\n\n\n    ### Get DynDNS services\n    def get_services(self):\n        d = self.call_no_check(\"DynDNS\", \"getServices\")\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"DynDNS:getServices query error\")\n\n\n    ### Add a host entry.\n    def add_host(self, service, username, hostname, password):\n        self.call(\"DynDNS\", \"addHost\", {\"service\": service,\n                                        \"username\": username,\n                                        \"hostname\": hostname,\n                                        \"password\": password})\n\n\n    ### Delete a host entry\n    def delete_host(self, hostname):\n        self.call(\"DynDNS\", \"delHost\", {\"hostname\": hostname})\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmFirewallApi.py",
    "content": "### Livebox Monitor Firewall APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Firewall APIs ################################\nclass FirewallApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get IPv4 firewall level\n    def get_ipv4_firewall_level(self):\n        return self.call(\"Firewall\", \"getFirewallLevel\")\n\n\n    ### Get IPv6 firewall level\n    def get_ipv6_firewall_level(self):\n        return self.call(\"Firewall\", \"getFirewallIPv6Level\")\n\n\n    ### Set IPv4 firewall level\n    def set_ipv4_firewall_level(self, level):\n        self.call(\"Firewall\", \"setFirewallLevel\", {\"level\": level})\n\n\n    ### Set IPv6 firewall level\n    def set_ipv6_firewall_level(self, level):\n        self.call(\"Firewall\", \"setFirewallIPv6Level\", {\"level\": level})\n\n\n    ### Get IPv4 & IPv6 respond to ping setup\n    def get_respond_to_ping(self):\n        # ###Info### - works also for other sourceInterfaces such as veip0, eth0, voip, etc, but usefulness?\n        return self.call(\"Firewall\", \"getRespondToPing\", {\"sourceInterface\": \"data\"})\n\n\n    ### Set IPv6 firewall level - enable must be a dict with 'enableIPv4' & 'enableIPv6' boolean values\n    def set_respond_to_ping(self, enable):\n        self.call(\"Firewall\", \"setRespondToPing\", {\"sourceInterface\": \"data\", \"service_enable\": enable})\n\n\n    ### Get list of devices in DMZ, returns a dictionary\n    def get_dmz_devices(self):\n        d = self.call_no_check(\"Firewall\", \"getDMZ\")\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"Firewall:getDMZ query error\")\n\n\n    ### Add a DMZ entry\n    def add_dmz(self, dmz_id, dest_ip, ext_ips=None, enable=True):\n        p = {\"id\": dmz_id,\n             \"sourceInterface\": \"data\",\n             \"destinationIPAddress\": dest_ip,\n             \"enable\": enable}\n        if ext_ips:\n            p[\"sourcePrefix\"] = ext_ips\n        self.call(\"Firewall\", \"setDMZ\", p)\n\n\n    ### Delete a DMZ entry\n    def delete_dmz(self, dmz_id):\n        self.call(\"Firewall\", \"deleteDMZ\", {\"id\": dmz_id})\n\n\n    ### Get list of IPv4 port forwarding rules, returns a dictionary\n    # if no rule_id it returns all\n    # origin can be 'webui' or 'upnp', default is all\n    def get_ipv4_port_forwarding(self, rule_id=None, origin=None):\n        p = {}\n        if rule_id:\n            p[\"id\"] = rule_id\n        if origin:\n            p[\"origin\"] = origin\n        d = self.call_no_check(\"Firewall\", \"getPortForwarding\", p)\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"Firewall:getPortForwarding query error\")\n\n\n    ### Set a IPv4 port forwarding rules, returns the rule as the Livebox set it\n    # rule must follow Livebox model\n    def set_ipv4_port_forwarding(self, rule):\n        d = self.call_raw(\"Firewall\", \"setPortForwarding\", rule)\n        if d.get(\"status\"):\n            d = d.get(\"data\")\n            if d:\n                d = d.get(\"rule\")\n            if d:\n                return d\n        raise LmApiException(\"Firewall:setPortForwarding query error\")\n\n\n    ### Delete a IPv4 port forwarding rules\n    # origin can be 'webui' or 'upnp'\n    def del_ipv4_port_forwarding(self, rule_id, dest_ip, origin):\n        p = {\"id\": f\"{origin}_{rule_id}\",\n             \"destinationIPAddress\": dest_ip,\n             \"origin\": origin}\n        self.call(\"Firewall\", \"deletePortForwarding\", p)\n\n\n    ### Delete all IPv4 port forwarding rules\n    # origin can be 'webui' or 'upnp'\n    def del_all_ipv4_port_forwarding(self, origin):\n        self.call(\"Firewall\", \"deletePortForwarding\", {\"origin\": origin})\n\n\n    ### Get list of IPv4 protocol forwarding rules, returns a dictionary\n    def get_ipv4_protocol_forwarding(self):\n        d = self.call_no_check(\"Firewall\", \"getProtocolForwarding\")\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"Firewall:getProtocolForwarding query error\")\n\n\n    ### Set a IPv4 protocol forwarding rules, returns the rule as the Livebox set it\n    # rule must follow Livebox model\n    def set_ipv4_protocol_forwarding(self, rule):\n        d = self.call_raw(\"Firewall\", \"setProtocolForwarding\", rule)\n        if d.get(\"status\"):\n            d = d.get(\"data\")\n            if d:\n                d = d.get(\"rule\")\n            if d:\n                return d\n        raise LmApiException(\"Firewall:setProtocolForwarding query error\")\n\n\n    ### Delete a IPv4 protocol forwarding rules\n    def del_ipv4_protocol_forwarding(self, rule_id):\n        self.call(\"Firewall\", \"deleteProtocolForwarding\", {\"id\": rule_id})\n\n\n    ### Get list of IPv6 pinhole rules, returns a dictionary\n    # if no rule_id it returns all\n    # Origin can be 'webui' or 'upnp', default is all\n    def get_ipv6_pinhole(self, rule_id=None, origin=None):\n        p = {}\n        if rule_id:\n            p[\"id\"] = rule_id\n        if origin:\n            p[\"origin\"] = origin\n        d = self.call_no_check(\"Firewall\", \"getPinhole\", p)\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"Firewall:getPinhole query error\")\n\n\n    ### Set a IPv6 pinhole rules, returns the rule as the Livebox set it\n    # rule must follow Livebox model\n    def set_ipv6_pinhole(self, rule):\n        d = self.call_raw(\"Firewall\", \"setPinhole\", rule)\n        if d.get(\"status\"):\n            d = d.get(\"data\")\n            if d:\n                d = d.get(\"rule\")\n            if d:\n                return d\n        raise LmApiException(\"Firewall:setPinhole query error\")\n\n\n    ### Delete a IPv6 pinhole rules\n    # origin can be 'webui' or 'upnp'\n    def del_ipv6_pinhole(self, rule_id, origin):\n        p = {\"id\": f\"{origin}_{rule_id}\",\n             \"origin\": origin}\n        self.call(\"Firewall\", \"deletePinhole\", p)\n\n\n    ### Commit a change\n    def commit(self):\n        self.call(\"Firewall\", \"commit\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmIntfApi.py",
    "content": "### Livebox Monitor Interface APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n# Friendly name map\nFRIENDLY_NAME_MAP = {\n    \"WAN_Ethernet\":         \"WAN\",\n    \"WAN_GPON\":             \"Fiber\",\n    \"eth1\":                 \"Ethernet 1\",\n    \"eth2\":                 \"Ethernet 2\",\n    \"eth3\":                 \"Ethernet 3\",\n    \"eth4\":                 \"Ethernet 4\",\n    \"2.4GHz-Private_SSID\":  \"Wifi 2.4GHz\",\n    \"5GHz-Private_SSID\":    \"Wifi 5GHz\",\n    \"6GHz-Private_SSID\":    \"Wifi 6GHz\",\n    \"2.4GHz-Guest_SSID\":    \"Guest 2.4GHz\",\n    \"5GHz-Guest_SSID\":      \"Guest 5GHz\",\n    \"LAN-2.5G\":             \"Ether 2.5G\",\n    \"LAN-10G\":              \"Ether 10G\"\n}\n\n\n# ################################ Interface APIs ################################\nclass IntfApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n        self._list = None\n        self._has_radio_band_2 = False\n        self._has_radio_band_5 = False\n        self._has_radio_band_6 = False\n\n\n    ### Get interface information\n    def get_info(self, intf):\n        return self.call(\"NeMo.Intf.\" + intf, \"get\")\n\n\n    ### Get Ethernet Interfaces setup - returns base, eth\n    def get_eth_mibs(self):\n        d = self.call(\"NeMo.Intf.lan\", \"getMIBs\", {\"mibs\": \"base eth\"}, timeout=25)\n        base = d.get(\"base\")\n        eth = d.get(\"eth\")\n        if (base is None) or (eth is None):\n            raise LmApiException(\"NeMo.Intf.lan:getMIBs service failed.\")\n        return base, eth\n\n\n    ### Get Wifi or Guest Interfaces setup - returns base, radio and vap\n    def get_wifi_mibs(self, guest=False):\n        i = \"guest\" if guest else \"lan\"\n        d = self.call(\"NeMo.Intf.\" + i, \"getMIBs\", {\"mibs\": \"base wlanradio wlanvap\"}, timeout=25)\n        base = d.get(\"base\")\n        radio = d.get(\"wlanradio\")\n        vap = d.get(\"wlanvap\")\n        if (base is None) or (radio is None) or (vap is None):\n            raise LmApiException(\"NeMo.Intf.\" + i + \":getMIBs service failed.\")\n        return base, radio, vap\n\n\n    ### Get ONT Interface setup - if ONT intf not given will take the first one found\n    def get_ont_mibs(self, ont_intf=None):\n        if not ont_intf:\n            try:\n                ont_intf = next(i[\"Key\"] for i in self.get_list() if i[\"Type\"] == \"ont\")\n            except StopIteration:\n                raise LmApiException(\"No ONT interface found.\")\n\n        d = self.call(\"NeMo.Intf.\" + ont_intf, \"getMIBs\", {\"mibs\": \"gpon\"})\n        d = d.get(\"gpon\")\n        if d:\n            d = d.get(ont_intf)\n        if not d:\n            raise LmApiException(\"NeMo.Intf.\" + ont_intf + \":getMIBs service failed.\")\n        return d\n\n\n    ### Get raw MIBs lan\n    def get_raw_mibs_lan(self):\n        return self.call(\"NeMo.Intf.lan\", \"getMIBs\", timeout=25)\n\n\n    ### Get raw MIBs data\n    def get_raw_mibs_data(self):\n        return self.call(\"NeMo.Intf.data\", \"getMIBs\", timeout=25)\n\n\n    ### Get SFP ONT module infos (only for Livebox 4)\n    def get_sfp_info(self):\n        return self.call(\"SFP\", \"get\")\n\n\n    ### Get list of interface keys\n    def get_key_list(self):\n        return self.call(\"NeMo.Intf.lo\", \"getIntfs\", {\"traverse\": \"all\"})\n\n\n    ### Get interface list from HomeLan service\n    def get_raw_list(self):\n        return self.call(\"HomeLan.Interface\", \"get\")\n\n\n    ### Get list of useful interfaces with key, name, type and swap stats fields\n    def get_list(self):\n        if self._list is None:\n            if not self._api._intf.build_list():\n                LmTools.error(\"Failed to build interface list.\")\n        return self._list\n\n\n    ### Set list of useful interfaces when known statically (repeater)\n    def set_list(self, intf_list):\n        self._list = intf_list\n        self._has_radio_band_2 = False\n        self._has_radio_band_5 = False\n        self._has_radio_band_6 = False\n        for i in intf_list:\n            if i[\"Type\"] == \"wif\":\n                name = i[\"Name\"]\n                if \"2.4GHz\" in name:\n                    self._has_radio_band_2 = True\n                elif \"5GHz\" in name:\n                    self._has_radio_band_5 = True\n                elif \"6GHz\" in name:\n                    self._has_radio_band_6 = True\n\n\n    ### Build interface list - return True if successful\n    def build_list(self):\n        self._list = []\n\n        '''\n        Each entry must have those fields:\n        - Key -> intf key\n        - Name -> intf friendly name - used to display info in UI\n        - Type -> wan/ont/lan/eth/wif (Wifi)/wig (Wifi Guest)\n        - SwapStats -> True is stats must be swapped when displayed (R <-> T)\n        '''\n\n        # Call Homeland service to get interface list\n        try:\n            d = self.get_raw_list()\n        except Exception as e:\n            LmTools.error(str(e))\n            return False\n\n        # Collect all interfaces per type\n        wan = []\n        ont = []\n        eth = []\n        wif = []\n        wig = []\n        for k in d:\n            e = d.get(k)\n            type = e.get(\"Alias\")\n            name = e.get(\"FriendlyName\")\n            if type == \"Eth\":\n                i = {}\n                i[\"Key\"] = k\n                i[\"Name\"] = FRIENDLY_NAME_MAP.get(name, name)\n                i[\"Type\"] = \"eth\"\n                i[\"SwapStats\"] = True\n                eth.append(i)\n            elif type == \"WiFi\":\n                i = {}\n                i[\"Key\"] = k\n                i[\"Name\"] = FRIENDLY_NAME_MAP.get(name, name)\n                if \"Guest\" in name:\n                    i[\"Type\"] = \"wig\"\n                    wig.append(i)\n                else:\n                    i[\"Type\"] = \"wif\"\n                    wif.append(i)\n                if \"2.4GHz\" in name:\n                    self._has_radio_band_2 = True\n                elif \"5GHz\" in name:\n                    self._has_radio_band_5 = True\n                elif \"6GHz\" in name:\n                    self._has_radio_band_6 = True\n                i[\"SwapStats\"] = True\n            elif name == \"WAN_Ethernet\":\n                i = {}\n                i[\"Key\"] = k\n                i[\"Name\"] = FRIENDLY_NAME_MAP.get(name, name)\n                i[\"Type\"] = \"wan\"\n                i[\"SwapStats\"] = False\n                wan.append(i)\n            elif (name == \"WAN_GPON\") or (name == \"WAN_XGSPON\"):\n                i = {}\n                i[\"Key\"] = k\n                i[\"Name\"] = FRIENDLY_NAME_MAP.get(name, name)\n                i[\"Type\"] = \"ont\"\n                i[\"SwapStats\"] = False\n                ont.append(i)\n\n        # Build correctly sorted list\n        if wan:\n            # Add only if there is no ONT interface\n            if not ont:\n                for i in wan:\n                    self._list.append(i)\n        if ont:\n            for i in ont:\n                self._list.append(i)\n\n        # All Livebox have bridge intf as LAN interface\n        i = {\"Key\": \"bridge\", \"Name\": \"LAN\", \"Type\": \"lan\", \"SwapStats\": True}\n        self._list.append(i)\n\n        if eth:\n            for i in eth:\n                self._list.append(i)\n        if wif:\n            for i in wif:\n                self._list.append(i)\n        if wig:\n            for i in wig:\n                self._list.append(i)\n\n        return True\n\n\n    ### Is 2.4GHz radio band available\n    def has_radio_band_2(self):\n        return self._has_radio_band_2\n\n\n    ### Is 5GHz radio band available\n    def has_radio_band_5(self):\n        return self._has_radio_band_5\n\n\n    ### Is 6GHz radio band available\n    def has_radio_band_6(self):\n        return self._has_radio_band_6\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmIptvApi.py",
    "content": "### Livebox Monitor IPTV APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Livebox IPTV APIs ################################\nclass IptvApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get IPTV status\n    def get_status(self):\n        d = self.call_raw(\"NMC.OrangeTV\", \"getIPTVStatus\")\n        d = d.get(\"data\")\n        if d:\n            d = d.get(\"IPTVStatus\")\n        if d is not None:\n            return d\n        raise LmApiException(\"NMC.OrangeTV:getIPTVStatus service failed.\")\n\n\n    ### Get IPTV Multi Screens status\n    def get_multi_screens_status(self):\n        d = self.call_raw(\"NMC.OrangeTV\", \"getIPTVMultiScreens\")\n        d = d.get(\"data\")\n        if d:\n            d = d.get(\"Enable\")\n        if d is not None:\n            return d\n        raise LmApiException(\"NMC.OrangeTV:getIPTVMultiScreens service failed.\")\n\n\n    ### Get IPTV config\n    def get_config(self):\n        return self.call(\"NMC.OrangeTV\", \"getIPTVConfig\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmLiveboxInfoApi.py",
    "content": "### Livebox Monitor Livebox Info APIs ###\n\nimport requests\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\nfrom LiveboxMonitor.api.LmSession import LmSession\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\nLIVEBOX_SCAN_TIMEOUT = 0.6\n\n# Livebox versions name map (raw to commercial)\nLIVEBOX_MODEL_NAME_MAP = {\n    \"Livebox 3\": \"Livebox 3\",\n    \"Livebox 4\": \"Livebox 4\",\n    \"Livebox Fibre\": \"Livebox 5\",\n    \"Livebox 6\": \"Livebox 6\",\n    \"Livebox 7\": \"Livebox 7\",\n    \"Livebox W7\": \"Livebox W7\",\n    \"Livebox Nautilus\": \"Livebox S\",\n    \"Livebox S\": \"Livebox S\"\n    }\n\n# Livebox versions map (commercial to version number)\nLIVEBOX_MODEL_MAP = {\n    \"Livebox 3\": 3,\n    \"Livebox 4\": 4,\n    \"Livebox 5\": 5,\n    \"Livebox 6\": 6,\n    \"Livebox 7\": 7,\n    \"Livebox W7\": 7.1,\n    \"Livebox S\": 7.2\n    }\nDEFAULT_RAW_MODEL = \"Livebox 7\"\n\n\n# ################################ Livebox Info APIs ################################\nclass LiveboxInfoApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n        self._mac_addr = None\n        self._model = None              # Model version number\n        self._raw_model_name = None     # Raw model name as returned by Livebox\n        self._model_name = None         # Commercial model name\n        self._software_version = None\n\n\n    ### Get Livebox / Repeater basic info\n    def get_device_info(self):\n        return self.call(\"DeviceInfo\", \"get\")\n\n\n    ### Get Livebox device info\n    def get_device_config(self):\n        livebox_mac = self.get_mac()\n        if livebox_mac:\n            return self.call(\"Devices.Device.\" + livebox_mac, \"get\")\n        raise LmApiException(\"Cannot determine Livebox MAC address\")\n\n\n    ### Set Livebox basic info cache\n    def set_livebox_info_cache(self):\n        try:\n            d = self.get_device_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            LmTools.error(\"Cannot determine Livebox model.\")\n            self._mac_addr = \"\"\n            self._model = 0\n            self._raw_model_name = \"\"\n            self._model_name = \"\"\n            self._software_version = \"\"\n        else:\n            self._mac_addr = d.get(\"BaseMAC\", \"\").upper()\n            model = d.get(\"ProductClass\", \"\")\n            if model:\n                self._model_name = LIVEBOX_MODEL_NAME_MAP.get(model)\n                self._raw_model_name = model\n            if self._model_name is None:\n                LmTools.error(f\"Unknown Livebox model: {model}, defaulting to {DEFAULT_RAW_MODEL}.\")\n                self._model_name = LIVEBOX_MODEL_NAME_MAP.get(DEFAULT_RAW_MODEL)\n            self._model = LIVEBOX_MODEL_MAP.get(self._model_name)\n            if self._model is None:\n                LmTools.error(f\"Incorrect internal Livebox model setup: {self._model_name} is unknown.\")\n\n            self._software_version = d.get(\"SoftwareVersion\", \"\")\n\n\n    ### Get Livebox / Repeater MAC\n    def get_mac(self):\n        if not self._mac_addr:\n            self.set_livebox_info_cache()\n        return self._mac_addr\n\n\n    ### Set Livebox / Repeater MAC\n    def set_mac(self, mac_addr):\n        self._mac_addr = mac_addr\n\n\n    ### Get Livebox / Repeater model\n    def get_model(self):\n        if not self._model:\n            self.set_livebox_info_cache()\n        return self._model\n\n\n    ### Set Livebox / Repeater model\n    def set_model(self, model):\n        self._model = model\n\n\n    ### Get Livebox raw model name\n    def get_raw_model_name(self):\n        if not self._raw_model_name:\n            self.set_livebox_info_cache()\n        return self._raw_model_name\n\n\n    ### Get Livebox / Repeater model name\n    def get_model_name(self):\n        if not self._model_name:\n            self.set_livebox_info_cache()\n        return self._model_name\n\n\n    ### Set Livebox / Repeater model name\n    def set_model_name(self, model_name):\n        self._model_name = model_name\n\n\n    ### Get Livebox / Repeater software version\n    def get_software_version(self):\n        if not self._software_version:\n            self.set_livebox_info_cache()\n        return self._software_version\n\n\n    ### Get Livebox model info\n    def get_model_info(self):\n        return self.call(\"UPnP-IGD\", \"get\")\n\n\n    ### Get memory status\n    def get_memory_status(self):\n        return self.call(\"DeviceInfo.MemoryStatus\", \"get\")\n\n\n    ### Get time\n    def get_time(self):\n        d = self.call_raw(\"Time\", \"getTime\")\n        d = d.get(\"data\")\n        if not d:\n            raise LmApiException(\"Time:getTime data error\")\n        return d\n\n\n    ### Get WAN status\n    def get_wan_status(self):\n        d = self.call_raw(\"NMC\", \"getWANStatus\")\n        d = d.get(\"data\")\n        if not d:\n            raise LmApiException(\"NMC:getWANStatus data error\")\n        return d\n\n\n    ### Get connection status\n    def get_connection_status(self):\n        return self.call(\"NMC\", \"get\")\n\n\n    ### Get VLAN ID\n    def get_vlan_id(self):\n        return int(self.call_no_check(\"NeMo.Intf.data\", \"getFirstParameter\", {\"name\": \"VLANID\"}))\n\n\n    ### Get MTU\n    def get_mtu(self):\n        return int(self.call_no_check(\"NeMo.Intf.data\", \"getFirstParameter\", {\"name\": \"MTU\"}))\n\n\n    ### Get uplink info\n    def get_uplink_info(self):\n        return self.call(\"UplinkMonitor.DefaultGateway\", \"get\")\n\n\n    ### Get IPv6 status\n    def get_ipv6_status(self):\n        d = self.call_raw(\"NMC.IPv6\", \"get\")\n        return d.get(\"data\")\n\n\n    ### Get IPv6 mode\n    def get_ipv6_mode(self):\n        return self.call(\"NMC.Autodetect\", \"get\")\n\n\n    ### Get CGNat status\n    def get_cgnat_status(self):\n        return self.call(\"NMC.ServiceEligibility.DSLITE\", \"get\")\n\n\n    ### Set CGNat enable\n    def set_cgnat_enable(self, enable):\n        self.call(\"NMC.ServiceEligibility.DSLITE\", \"set\", {\"Demand\": enable})\n\n\n    ### Check if the model has USB port\n    def has_usb(self):\n        # All models except Livebox S has at least one USB port\n        return self.get_model() != 7.2\n\n\n    ### It is possible to query DeviceInfo service without being logged, e.g. to get MAC address\n    @staticmethod\n    def get_livebox_mac_nosign(livebox_url):\n        if livebox_url is not None:\n            try:\n                r = requests.Session().post(livebox_url  + \"ws\",\n                           data='{\"service\":\"sysbus.DeviceInfo\", \"method\":\"get\", \"parameters\":{}}',\n                           headers={\"Accept\":\"*/*\", \"Content-Type\":\"application/x-sah-ws-4-call+json\"},\n                           timeout=LIVEBOX_SCAN_TIMEOUT + LmSession.TimeoutMargin)\n            except Exception:\n                r = None\n            if r is not None:\n                s = r.json().get(\"status\")\n                if s is not None:\n                    s = s.get(\"BaseMAC\")\n                    if s is not None:\n                        return s.upper()\n\n        return None\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmRebootApi.py",
    "content": "### Livebox Monitor Reboot APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi\n\n\n# ################################ Reboot APIs ################################\nclass RebootApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get device reboot info\n    def get_info(self):\n        return self.call(\"NMC.Reboot\", \"get\")\n\n\n    ### Get reboot history\n    def get_history(self):\n        return self.call(\"NMC.Reboot.Reboot\", \"get\")\n\n\n    ### Reboot the device\n    def reboot_device(self, reason=\"GUI_Reboot\"):\n        self.call(\"NMC\", \"reboot\", {\"reason\": reason})\n\n\n    ### Factory reset\n    def factory_reset(self, reason=\"GUI_Reset\", timeout=120):\n        self.call(\"NMC\", \"reset\", {\"reason\": reason})\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmRoutingApi.py",
    "content": "### Livebox Monitor Routing APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Routing APIs ################################\n# WARNING: available ONLY on Livebox Pro models\nclass RoutingApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get static routes\n    def get_list(self):\n        d = self.call_no_check(\"NMC.LAN\", \"getStaticRoutes\", timeout=30)\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"NMC.LAN:getStaticRoutes query error\")\n\n\n    ### Add static route\n    def add(self, route):\n        self.call_no_check(\"NMC.LAN\", \"addStaticRoute\", route, timeout=30)\n\n\n    ### Delete static route\n    def delete(self, name):\n        self.call_no_check(\"NMC.LAN\", \"deleteStaticRoute\", {\"Name\": name}, timeout=30)\n\n\n    ### Enable/Disable static routes\n    def set_enable(self, name, enable):\n        self.call(f\"NMC.LAN.IPv4Route.{name}\", \"set\", {\"Enable\": enable}, timeout=30)\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmScreenApi.py",
    "content": "### Livebox Monitor screen & LEDs APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Screen APIs ################################\nclass ScreenApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get Orange LED levels\n    def get_orange_led_level(self):\n        d = self.call(\"LEDs.LED.Orange\", \"get\")\n        brightness = d.get(\"Brightness\")\n        if brightness is None:\n            raise LmApiException(\"LEDs.LED.Orange:get error: no Brightness field\")\n        return brightness\n\n\n    ### Get White LED levels\n    def get_white_led_level(self):\n        d = self.call(\"LEDs.LED.White\", \"get\")\n        brightness = d.get(\"Brightness\")\n        if brightness is None:\n            raise LmApiException(\"LEDs.LED.White:get error: no Brightness field\")\n        return brightness\n\n\n    ### Get Show Wifi Password setup\n    def get_show_wifi_password(self):\n        return self.call_no_check(\"Screen\", \"getShowWifiPassword\")\n\n\n    ### Set Orange LED level\n    def set_orange_led_level(self, level):\n        self.call(\"LEDs.LED.Orange\", \"set\", {\"Brightness\": level})\n\n\n    ### Set White LED level\n    def set_white_led_level(self, level):\n        self.call(\"LEDs.LED.White\", \"set\", {\"Brightness\": level})\n\n\n    ### Set Show Wifi Password setup\n    def set_show_wifi_password(self, show_wifi_password):\n        self.call_no_check(\"Screen\", \"setShowWifiPassword\", {\"Enable\": show_wifi_password})\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmSession.py",
    "content": "### Livebox Monitor session module ###\n# Interfaces copied/adapted from sysbus package - https://github.com/rene-d/sysbus\n\nimport os\nimport sys\nimport json\nimport tempfile\nimport pickle\nimport datetime\nimport requests\nimport requests.utils\n\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\nAPP_NAME = \"so_sdkut\"\nDEFAULT_TIMEOUT = 5\n\n\n# ################################ LmSession class ################################\n\nclass LmSession:\n    ### Setup\n    TimeoutMargin = 0\n    UrlRedirections = {}\n\n    ### Constructor\n    def __init__(self, url, session_name=\"LiveboxMonitor\"):\n        url = url.rstrip(\" /\") + \"/\"\n    \n        # URL redirection handling\n        if url in LmSession.UrlRedirections:\n            self._url = LmSession.UrlRedirections[url]\n            print(f\"Redirecting '{url}' to '{self._url}'.\")\n        else:\n            self._url = url\n\n        self._verify = self._url.startswith(\"http://\")\n        self._user = \"\"\n        self._password = \"\"\n        self._name = session_name\n        self._session = None\n        self._channel_id = 0\n        self._sah_service_headers = None\n        self._sah_event_headers = None\n\n\n    ### Read a url redirection list and store it in LmSession.UrlRedirections\n    ### this fails silently\n    @staticmethod\n    def load_url_redirections(redirections):\n        def fix_trailing_slash(url):\n            return url.rstrip(\" /\") + \"/\"\n\n        if not redirections:\n            return\n\n        try:\n            for i in redirections:\n                url_from, url_to = i.split(\"=\", 1)\n                url_from = fix_trailing_slash(url_from)\n                url_to = fix_trailing_slash(url_to)\n                if url_from in LmSession.UrlRedirections:\n                    raise Exception(\"Source redirection URL already declared.\")\n                LmSession.UrlRedirections[url_from] = url_to\n                LmTools.log_debug(1, \"Added redirection\", url_from, \"to\", url_to)\n        except Exception as e:\n            LmTools.error(f\"Error while processing redirections: {e}\")\n\n\n    ### Setup timeout margin\n    @staticmethod\n    def set_timeout_margin(timeout):\n        LmSession.TimeoutMargin = timeout\n\n\n    ### Sign in - return -1 in case of connectivity issue, 0 if sign failed, 1 if sign successful\n    def signin(self, user, password, new_session=False):\n        # Set cookie & contextID file path\n        state_file_path = os.path.join(tempfile.gettempdir(), f\"{self._name}_state\")\n        LmTools.log_debug(1, \"State file\", state_file_path)\n\n        # Close current session if any\n        self.close()\n\n        # Save current user/password\n        self._user = user\n        self._password = password\n\n        for _ in range(2):\n            if not new_session and os.path.exists(state_file_path):\n                LmTools.log_debug(1, \"Loading saved cookies\")\n\n                with open(state_file_path, \"rb\") as f:\n                    cookies = requests.utils.cookiejar_from_dict(pickle.load(f))\n                    self._session = requests.Session()\n                    self._channel_id = 0\n                    self._session.cookies = cookies\n                    context_id = pickle.load(f)\n            else:\n                LmTools.log_debug(1, f\"New session ({self._name})\")\n                self._session = requests.Session()\n                self._channel_id = 0\n\n                LmTools.log_debug(1, \"Authentication\")\n                auth = f'{{\"service\":\"sah.Device.Information\",\"method\":\"createContext\",\"parameters\":{{\"applicationName\":\"{APP_NAME}\",\"username\":\"{user}\",\"password\":\"{password}\"}}}}'\n                self._sah_service_headers = {\"Accept\":\"*/*\",\n                                             \"Authorization\":\"X-Sah-Login\",\n                                             \"Content-Type\":\"application/x-sah-ws-4-call+json\"}\n\n                LmTools.log_debug(2, \"Auth with\", auth)\n                try:\n                    r = self._session.post(f\"{self._url}ws\",\n                                           data=auth,\n                                           headers=self._sah_service_headers,\n                                           timeout=DEFAULT_TIMEOUT + LmSession.TimeoutMargin,\n                                           verify=self._verify)\n                except Exception as e:\n                    LmTools.error(str(e))\n                    self._session = None\n                    return -1\n                LmTools.log_debug(2, \"Auth return\", r.text)\n\n                resp_json = r.json()\n                try:\n                    context_id = resp_json[\"data\"][\"contextID\"]\n                except KeyError:\n                    LmTools.error(\"Auth error\", str(r.text))\n                    break\n\n                # Saving cookie & contextID\n                LmTools.log_debug(1, \"Setting cookies\")\n                with open(state_file_path, \"wb\") as f:\n                    cookie_data = requests.utils.dict_from_cookiejar(self._session.cookies)\n                    pickle.dump(cookie_data, f, pickle.HIGHEST_PROTOCOL)\n                    pickle.dump(context_id, f, pickle.HIGHEST_PROTOCOL)\n\n            self._sah_service_headers = {\"Accept\":\"*/*\",\n                                         \"Authorization\":f\"X-Sah {context_id}\",\n                                         \"Content-Type\":\"application/x-sah-ws-4-call+json; charset=UTF-8\",\n                                         \"X-Context\": context_id}\n\n            self._sah_event_headers = {\"Accept\":\"*/*\",\n                                       \"Authorization\":f\"X-Sah {context_id}\",\n                                       \"Content-Type\":\"application/x-sah-event-4-call+json; charset=UTF-8\",\n                                       \"X-Context\": context_id}\n\n            # Check authentication (cookie can expire)\n            try:\n                r = self._session.post(f\"{self._url}ws\",\n                                       data='{\"service\":\"Time\", \"method\":\"getTime\", \"parameters\":{}}',\n                                       headers=self._sah_service_headers,\n                                       timeout=DEFAULT_TIMEOUT + LmSession.TimeoutMargin,\n                                       verify=self._verify)\n            except Exception as e:\n                LmTools.error(str(e))\n                LmTools.error(\"Authentification check query failed.\")\n                os.remove(state_file_path)\n                self.close()\n                return -1\n\n            if r.json().get(\"status\") is True:\n                return 1\n            else:\n                os.remove(state_file_path)\n\n        LmTools.error(\"Authentification failed.\")\n        return 0\n\n\n    ### Close session\n    def close(self):\n        if self._session is not None:\n            # Fails with access denied error (but same behavior from the web interface...)\n            self.request(\"sah.Device.Information:releaseContext\", {\"applicationName\": APP_NAME})\n            self._session = None\n            self._channel_id = 0\n            self._sah_service_headers = None\n            self._sah_event_headers = None\n\n\n    ### Send service request\n    def request(self, service, method=None, args=None, get=False, silent=False, timeout=DEFAULT_TIMEOUT):\n        # Check session is established\n        if self._session is None:\n            if self.signin(self._user, self._password) <= 0:\n                return {\"error\": 1, \"description\": \"No session\"}\n\n        if get:\n            # Build request path\n            c = f\"sysbus/{service.replace('.', '/')}\"\n            if method is not None:\n                c += f\":{method}\"\n\n            if args is None:\n                c += \"?_restDepth=-1\"\n            else:\n                c += f\"?_restDepth={args}\"\n\n            LmTools.log_debug(2, f\"Request: {c}\")\n            timestamp = datetime.datetime.now()\n            try:\n                t = self._session.get(self._url + c,\n                                      headers=self._sah_service_headers,\n                                      timeout=timeout + LmSession.TimeoutMargin,\n                                      verify=self._verify)\n                LmTools.log_debug(2, f\"Request duration: {datetime.datetime.now() - timestamp}\")\n                t = t.content\n            except requests.exceptions.Timeout as e:\n                if not silent:\n                    LmTools.error(f\"Request timeout error: {e}\")\n                return {\"error\": 2, \"description\": \"Request timeout\"}\n            except Exception as e:\n                if not silent:\n                    LmTools.error(f\"Request error: {e}\")\n                return {\"error\": 3, \"description\": \"Request exception\", \"info\": str(e)}\n\n            t = t.decode(\"utf-8\", errors=\"replace\")\n            t = t.replace(\"[,]\", \"[]\")  # Some lists, like in GET '*' request, contain a failing comma\n            if t.startswith(',\"errors\":'):\n                t = f\"{{{t[1:]}}}\"\n            elif \"}{\" in t:\n                LmTools.log_debug(2, \"Multiple json lists\")\n                t = f\"[{t.replace('}{', '},{')}]\"\n        else:\n            # Setup request parameters\n            data = {}\n            data[\"service\"] = f\"sysbus.{service}\"\n\n            if method is not None:\n                data[\"method\"] = method\n\n            if args is not None:\n                data[\"parameters\"] = args\n            else:\n                data[\"parameters\"] = {}\n\n            # Send request & headers\n            LmTools.log_debug(2, f\"Request: {data}\")\n            timestamp = datetime.datetime.now()\n            try:\n                t = self._session.post(f\"{self._url}ws\",\n                                       data=json.dumps(data),\n                                       headers=self._sah_service_headers,\n                                       timeout=timeout + LmSession.TimeoutMargin,\n                                       verify=self._verify)\n                LmTools.log_debug(2, f\"Request duration: {datetime.datetime.now() - timestamp}\")\n                t = t.content\n            except requests.exceptions.Timeout as e:\n                if not silent:\n                    LmTools.error(f\"Request timeout error: {e}\")\n                return {\"error\": 2, \"description\": \"Request timeout\"}\n            except Exception as e:\n                if not silent:\n                    LmTools.error(f\"Request error: {e}\")\n                return {\"error\": 3, \"description\": \"Request exception\", \"info\": str(e)}\n\n            t = t.decode(\"utf-8\", errors=\"replace\")\n\n        try:\n            r = json.loads(t)\n        except Exception:\n            if not silent:\n                LmTools.error(sys.exc_info()[0])\n                LmTools.error(\"Bad json:\", t)\n            return {\"error\": 4, \"description\": \"Bad JSON\", \"info\": t}\n\n        overview = str(r)\n        if len(overview) > 128:\n            overview = f\"{overview[:128]}...\"\n        LmTools.log_debug(2, \"Reply:\", overview)\n\n        if not get and \"result\" in r:\n            r = r[\"result\"]\n\n        LmTools.log_debug(2, \"-------------------------\")\n        return r\n\n\n    ### Send event request\n    def event_request(self, events, silent=False, timeout=DEFAULT_TIMEOUT):\n        # Check session is established\n        if self._session is None:\n            if self.signin(self._user, self._password) <= 0:\n                return {\"error\": 1, \"description\": \"No session\"}\n\n        data = {\"events\": events}\n        if self._channel_id:\n            data[\"channelid\"] = self._channel_id\n\n        # Send request & headers\n        LmTools.log_debug(2, f\"Event Request: {data}\")\n        timestamp = datetime.datetime.now()\n        try:\n            t = self._session.post(f\"{self._url}ws\",\n                                   data=json.dumps(data),\n                                   headers=self._sah_event_headers,\n                                   timeout=timeout,\n                                   verify=self._verify)\n            LmTools.log_debug(2, f\"Request duration: {datetime.datetime.now() - timestamp}\")\n            t = t.content\n        except requests.exceptions.Timeout as e:\n            if not silent:\n                LmTools.log_debug(2, f\"Event request timeout error: {e}\")\n            return {\"error\": 2, \"description\": \"Event request timeout\"}\n        except Exception as e:\n            if not silent:\n                LmTools.error(f\"Event request error: {e}\")\n            return {\"error\": 3, \"description\": \"Event request exception\", \"info\": str(e)}\n\n        t = t.decode(\"utf-8\", errors=\"replace\")\n\n        # Remove tailing null if present\n        if t.endswith(\"null\"):\n            t = t[:-4]\n\n        try:\n            r = json.loads(t)\n        except Exception:\n            if not silent:\n                LmTools.error(sys.exc_info()[0])\n                LmTools.error(\"Bad JSON:\", t)\n            return {\"error\": 4, \"description\": \"Bad JSON\", \"info\": t}\n\n        overview = str(r)\n        if len(overview) > 50:\n            overview = f\"{overview[:50]}...\"\n        LmTools.log_debug(2, \"Reply:\", overview)\n\n        if \"result\" in r:\n            r = r[\"result\"]\n\n        LmTools.log_debug(2, \"-------------------------\")\n        self._channel_id = r.get(\"channelid\", 0)\n        return r\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmStatsApi.py",
    "content": "### Livebox Monitor statistics APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi\n\n\n# ################################ Statistics APIs ################################\nclass StatsApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get wifi interface statistics\n    def get_wifi_intf(self, wifi_intf_key):\n        return self.call_no_check(f\"NeMo.Intf.{wifi_intf_key}\", \"getStationStats\")\n\n\n    ### Get interface statistics\n    # WARNING counters are recycling at 4Gb only\n    def get_intf(self, intf_key):\n        return self.call(f\"NeMo.Intf.{intf_key}\", \"getNetDevStats\")\n\n\n    ### Get interface statistics frequency in seconds\n    def get_intf_frequency(self):\n        return int(self.call_no_check(\"HomeLan\", \"getReadingInterval\"))\n\n\n    ### Get device statistics frequency in seconds\n    def get_device_frequency(self):\n        return int(self.call_no_check(\"HomeLan\", \"getDevicesReadingInterval\"))\n\n\n    ### Get interface list with nb of stats samples\n    def get_intf_list(self):\n        return self._api._intf.get_raw_list()\n\n\n    ### Get device list with nb of stats samples\n    def get_device_list(self):\n        return self.call(\"HomeLan.Device\", \"get\")\n\n\n    ### Get interface results\n    def get_intf_results(self, intf_id, start=0, end=0):\n        if start:\n            d = self.call(\"HomeLan\", \"getResults\",\n                          {\"InterfaceName\": intf_id, \"BeginTrafficTimestamp\": start, \"EndTrafficTimestamp\": end},\n                          timeout=15)\n        else:\n            d = self.call(\"HomeLan\", \"getResults\", {\"InterfaceName\": intf_id}, timeout=15)\n        d = d.get(intf_id, {})\n        return d.get(\"Traffic\", [])\n\n\n    ### Get device results\n    def get_device_results(self, device_id, start=0, end=0):\n        if start:\n            d = self.call(\"HomeLan\", \"getDeviceResults\",\n                          {\"DeviceName\": device_id, \"BeginTrafficTimestamp\": start, \"EndTrafficTimestamp\": end},\n                          timeout=15)\n        else:\n            d = self.call(\"HomeLan\", \"getDeviceResults\", {\"DeviceName\": device_id}, timeout=15)\n        d = d.get(device_id, {})\n        return d.get(\"Traffic\", [])\n\n\n    ### Get WAN counters\n    # WARNING: works but generates wrong HomeLan veip0 stats events\n    def get_wan_counters(self):\n        return self.call(\"HomeLan\", \"getWANCounters\")\n\n\n    ### Get interface counters\n    # WARNING: counters look 64bits but are recycling chaotically, after 512Gb, or 3Gb, ...\n    def get_intf_counters(self, intf_id):\n        return self.call(f\"HomeLan.Interface.{intf_id}.Stats\", \"get\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmTvDecoderApi.py",
    "content": "### Livebox Monitor TV Decoder APIs ###\n\n# ### Resources used as reference to build this module ###\n# https://github.com/AkA57/liveboxtvuhd\n# https://github.com/DalFanajin/Orange-Livebox-TV-UHD-4K-python-controller\n# https://github.com/bbastou/livebox-remote/tree/master\n# https://gist.github.com/alexandrevilain/c74fd7dabe148c8a16092eba38267c63\n# https://github.com/Spine34/jeedom-plugin-tvByOrange\n# https://github.com/f-lawe/plugin.video.orange.fr\n\nimport json\nimport requests\nimport xmltodict\nfrom random import randint\nfrom enum import IntEnum\n\nfrom LiveboxMonitor.api.LmApi import LmApiException\n\n\n# ################################ VARS & DEFS ################################\nclass Key(IntEnum):\n    C = 14\n    OK_ALT = 28\n    UP = 72\n    LEFT = 75\n    RIGHT = 77\n    DOWN = 80\n    UP_ALT = 103\n    LEFT_ALT = 105\n    RIGHT_ALT = 106\n    DOWN_ALT = 108\n    MUTE = 113\n    VOL_DOWN = 114\n    VOL_UP = 115\n    POWER = 116\n    MENU = 139\n    BACK = 158\n    FFWD = 159\n    PLAY = 164\n    REC = 167\n    FBWD = 168\n    OK = 352\n    PROG = 365\n    VOD = 393\n    CHAN_UP = 402\n    CHAN_DOWN = 403\n    ZERO = 512\n    ONE = 513\n    TWO = 514\n    THREE = 515\n    FOUR = 516\n    FIVE = 517\n    SIX = 518\n    SEVEN = 519\n    EIGHT = 520\n    NINE = 521\n    MIC = 582\n\nclass KeyMode(IntEnum):\n    PRESS_ONCE = 0\n    PRESS_HOLD = 1\n    RELEASE = 2\n\nDEFAULT_TIMEOUT = 3\n\nOSD_CONTEXT_MAP = {\n    \"AmazonInstantVideo\": \"Amazon Prime\",\n    \"AppShop\": \"Application menu\",\n    \"CANAL\": \"Canal+ offer\",\n    \"CANALUNIVERSE\": \"Canal+\",\n    \"chaines-locales\": \"Local TNT channels menu\",\n    \"DIGITAL_HOME\": \"Media Center home\",\n    \"FILMOTV\": \"Filmo commercial offer\",\n    \"GAMES\": \"Video Games\",\n    \"guidetv\": \"TV Guide\",\n    \"GULLI\": \"GulliMax offer\",\n    \"HOMEPAGE\": \"Orange main menu\",\n    \"hotlinemenu\": \"Administration\",\n    \"ISMOSAIC\": \"Thematic video pass\",\n    \"LEGUIDETV\": \"Replay menu\",\n    \"LIVE\": \"Television\",\n    \"MAIN_PROCESS\": \"Standby\",\n    \"MusicEntry\": \"Music menu\",\n    \"MYACCOUNT\": \"My Account menu\",\n    \"mytf1max\": \"TF1+\",\n    \"NA\": \"-\",\n    \"NAP:INTERNET\": \"Internet application\",\n    \"NAP:mediacenter\": \"Media Center menu\",\n    \"netflix\": \"Netflix\",\n    \"ONEIMUSIC\": \"Orange Radio & Music\",\n    \"paramount\": \"Paramount offer\",\n    \"PROMO_TV\": \"Canal+ application\",\n    \"PROMO_TV_LIVE\": \"Commercial offer\",\n    \"PVR\": \"Recording menu\",\n    \"SEARCH\": \"Search menu\",\n    \"shopxocav\": \"Commercial offer\",\n    \"TFOUMAX\": \"Tfou Max offer\",\n    \"TVEP\": \"Commercial offer\",\n    \"UPSELLTV\": \"Commercial offer\",\n    \"UWA:ClouddOrange\": \"Orange Cloud\",\n    \"VOD\": \"Video on demand\",\n    \"VODFACTORY\": \"Ina Madelen offer\",\n    \"youtube\": \"YouTube\",\n    \"6PLAYRNG\": \"M6+\"\n}\n\nUSER_AGENTS = [\n    # Chrome\n    \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.3\",\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.3\",  # noqa: E501\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.3\",  # noqa: E501\n    \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.3\",\n    # Edge\n    \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0\",  # noqa: E501\n    # Firefox\n    \"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.\",\n    \"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.\",\n    # Opera\n    \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 OPR/108.0.0.\",  # noqa: E501\n    # Safari\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.1\",  # noqa: E501\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.1\",  # noqa: E501\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Safari/605.1.1\",  # noqa: E501\n]\n\nCHANNELS_URL = \"https://rp-ott-mediation-tv.woopic.com/api-gw/pds/v1/live/ew?everywherePopulation=OTT_Metro\"\nCHANNEL_ICON_URL = \"https://proxymedia.woopic.com/api/v1/images/2090{}\"\n\n\n\n# ################################ TV Decoder APIs ################################\n# ###WARNIN### : device must be ACTIVE to call those APIs, otherwise they will just timeout\n\nclass TvDecoderApi:\n    tv_channels = None\n\n\n    ### Init\n    def __init__(self, decoder_ip):\n        self.set_ip(decoder_ip)\n\n\n    ### Update IP address\n    def set_ip(self, decoder_ip):\n        self._ip = decoder_ip\n\n\n    ### Load TV channels information\n    @staticmethod\n    def load_channels():\n        if not TvDecoderApi.tv_channels:\n            try:\n                resp = TvDecoderApi.web_request(CHANNELS_URL)\n                resp.raise_for_status()     # Check HTTP status code\n                data = resp.json()\n\n                # Check if error\n                err_msg = data.get(\"message\")\n                if err_msg:\n                    err_desc = data.get(\"description\", \"\")\n                    err_code = data.get(\"code\", 0)\n                    raise LmApiException(f\"{err_msg} - {err_desc} [{err_code}]\")\n\n                tv_channels = data.get(\"channels\")\n                if tv_channels:\n                    TvDecoderApi.tv_channels = tv_channels\n                else:\n                    raise LmApiException(f\"no channels found\")\n            except Exception as e:\n                raise LmApiException(f\"Channels query error: {e}\")\n\n\n    ### Get TV channels information\n    @staticmethod\n    def get_channels():\n        return TvDecoderApi.tv_channels\n\n\n    ### Set TV channels information\n    @staticmethod\n    def set_channels(channels):\n        TvDecoderApi.tv_channels = channels\n\n\n    ### Press a key\n    def key_press(self, key, mode=KeyMode.PRESS_ONCE):\n        try:\n            resp = requests.get(f\"http://{self._ip}:8080/remoteControl/cmd?operation=01&key={key}&mode={mode}\", timeout=DEFAULT_TIMEOUT)\n            resp.raise_for_status()     # Check HTTP status code\n            data = resp.json()\n            result = data.get(\"result\")\n            if result:\n                msg = result.get(\"message\")\n                if msg == \"ok\":\n                    return\n                raise LmApiException(f\"{msg} [{result.get('responseCode')}]\")\n            raise LmApiException(f\"no result\")\n        except requests.exceptions.Timeout:\n            raise LmApiException(f\"Timeout connecting to TVDecoder {self._ip}\")\n        except Exception as e:\n            raise LmApiException(f\"TvDecoder key_press query error: {e}\")\n\n\n    ### Change channel providing its EPG ID\n    def change_channel(self, epg):\n        epg = f\"{epg:*>10}\"     # set a string of 10 chars padded left with *\n        try:\n            resp = requests.get(f\"http://{self._ip}:8080/remoteControl/cmd?operation=09&epg_id={epg}&uui=1\", timeout=DEFAULT_TIMEOUT)\n            resp.raise_for_status()     # Check HTTP status code\n            data = resp.json()\n            result = data.get(\"result\")\n            if result:\n                msg = result.get(\"message\")\n                if msg == \"ok\":\n                    return\n                raise LmApiException(f\"{msg} [{result.get('responseCode')}]\")\n            raise LmApiException(f\"no result\")\n        except requests.exceptions.Timeout:\n            raise LmApiException(f\"Timeout connecting to TVDecoder {self._ip}\")\n        except Exception as e:\n            raise LmApiException(f\"TvDecoder change_channel query error: {e}\")\n\n\n    ### Get basic description\n    def get_basic_description(self):\n        try:\n            resp = requests.get(f\"http://{self._ip}:8080/BasicDeviceDescription.xml\", timeout=DEFAULT_TIMEOUT)\n            resp.raise_for_status()     # Check HTTP status code\n            return xmltodict.parse(resp.content)[\"root\"][\"device\"]\n        except requests.exceptions.Timeout:\n            raise LmApiException(f\"Timeout connecting to TVDecoder {self._ip}\")\n        except Exception as e:\n            raise LmApiException(f\"TvDecoder get_basic_description query error: {e}\")\n\n\n    ### Get description\n    def get_description(self):\n        try:\n            resp = requests.get(f\"http://{self._ip}:52235/devicedescription.xml\", timeout=DEFAULT_TIMEOUT)\n            resp.raise_for_status()     # Check HTTP status code\n            return xmltodict.parse(resp.content)[\"root\"][\"device\"]\n        except requests.exceptions.Timeout:\n            raise LmApiException(f\"Timeout connecting to TVDecoder {self._ip}\")\n        except Exception as e:\n            raise LmApiException(f\"TvDecoder get_description query error: {e}\")\n\n\n    ### Get status\n    def get_status(self):\n        try:\n            resp = requests.get(f\"http://{self._ip}:8080/remoteControl/cmd?operation=10\", timeout=DEFAULT_TIMEOUT)\n            resp.raise_for_status()     # Check HTTP status code\n            data = resp.json()\n            result = data[\"result\"]\n            if result[\"responseCode\"] != \"0\":\n                raise LmApiException(f\"bad response code: {result['responseCode']}\")\n            if result[\"message\"] != \"ok\":\n                raise LmApiException(f\"bad status code: {result['message']}\")\n            return result[\"data\"]\n        except requests.exceptions.Timeout:\n            raise LmApiException(f\"Timeout connecting to TVDecoder {self._ip}\")\n        except Exception as e:\n            raise LmApiException(f\"TvDecoder get_status query error: {e}\")\n\n\n    ### State field (osdContext) decoder\n    def decode_status(self, status):\n        if status:\n            return OSD_CONTEXT_MAP.get(status, status)\n        return status\n\n\n    ### Type field (playedMediaType) decoder\n    def decode_type(self, type):\n        if not type or (type == \"NA\"):\n            return \"-\"\n        return type\n\n\n    ### Status field (playedMediaState) decoder\n    def decode_state(self, state):\n        if not state or (state == \"NA\"):\n            return \"-\"\n        return state\n\n\n    ### EPG field (playedMediaId) decoder\n    def decode_epg(self, epg):\n        if not epg or (epg == \"NA\"):\n            return \"-\"\n        return epg\n\n\n    ### Retrieve channel EPG from its number - return None if not found\n    def get_epg_from_number(self, number):\n        if TvDecoderApi.tv_channels:\n            try:\n                n = int(number)\n            except:\n                return None\n\n            channel = next((c for c in TvDecoderApi.tv_channels if c.get(\"displayOrder\", 0) == n), None)\n            if channel:\n                return channel.get(\"idEPG\")\n\n        return None\n\n\n    ### Retrieve channel EPG from its name - return None if not found\n    def get_epg_from_name(self, name):\n        if TvDecoderApi.tv_channels:\n            name = name.lower()\n            # First try exact match\n            channel = next((c for c in TvDecoderApi.tv_channels if name == c.get(\"name\", \"\").lower()), None)\n\n            # If not found, find as substring\n            if not channel:\n                channel = next((c for c in TvDecoderApi.tv_channels if name in c.get(\"name\", \"\").lower()), None)\n\n            if channel:\n                return channel.get(\"idEPG\")\n\n        return None\n\n\n    ### Retrieve channel information from EPG field (playedMediaId)\n    def get_channel_infos(self, epg):\n        infos = {\n            \"name\": \"-\",\n            \"number\": \"-\",\n            \"desc\": \"\",\n            \"icon\": None\n        }\n\n        if TvDecoderApi.tv_channels:\n            try:\n                epg_int = int(epg)\n            except:\n                return infos\n\n            channel = next((c for c in TvDecoderApi.tv_channels if c.get(\"idEPG\", 0) == epg_int), None)\n            if channel:\n                infos[\"name\"] = channel.get(\"name\", \"?\")\n                infos[\"number\"] = str(channel.get(\"displayOrder\", \"-\"))\n                infos[\"desc\"] = channel.get(\"slogan\")\n                infos[\"icon\"] = TvDecoderApi.get_channel_icon(channel)\n\n        return infos\n\n\n    ### Get channel icon from channel information\n    # Icon type can be \"mobileAppli\", \"mobileAppliDark\", \"webTVLogo\" or \"webTVSquare\"\n    @staticmethod\n    def get_channel_icon(channel, icon_type=\"webTVSquare\"):\n        if channel:\n            logos = channel.get(\"logos\")\n            if logos:\n                logo_def = next((l for l in logos if l.get(\"definitionType\") == icon_type), None)\n                if logo_def:\n                    logo_list = logo_def.get(\"listLogos\")\n                    if logo_list:\n                        path = logo_list[0].get(\"path\")\n                        if path:\n                            if path.startswith(\"https\"):\n                                return path\n                            else:\n                                return CHANNEL_ICON_URL.format(path)\n        return None\n\n\n    ### Get channel icon from channel information\n    @staticmethod\n    def web_request(url, timeout=5):\n        headers = {\n            \"Accept\": \"application/json\",\n            \"Accept-Encoding\": \"gzip, deflate, br\",\n            \"Accept-Language\": \"*\",\n            \"Sec-Fetch-Mode\": \"cors\",\n            \"User-Agent\": USER_AGENTS[randint(0, len(USER_AGENTS) - 1)]\n        }\n\n        session = requests.Session()\n        resp = session.request(\"GET\", url, headers=headers, timeout=timeout)\n        return resp\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmVoipApi.py",
    "content": "### Livebox Monitor VoIP APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\n\n\n# ################################ Livebox VoIP APIs ################################\nclass VoipApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n\n\n    ### Get VoIP info\n    def get_info(self):\n        return self.call(\"VoiceService.VoiceApplication\", \"listTrunks\")\n\n\n    ### Get list of calls for the given line\n    def get_call_list(self, line=\"1\"):\n        d = self.call_no_check(\"VoiceService.VoiceApplication\", \"getCallList\", [{\"line\": \"1\"}], timeout=8)\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"VoiceService.VoiceApplication:getCallList query error\")\n\n\n    ### Delete a call from its ID. If no ID indicated delete all.\n    def delete_call(self, call_id=None):\n        param = {\"callId\": call_id} if call_id else None\n        self.call_no_check(\"VoiceService.VoiceApplication\", \"clearCallList\", param)\n\n\n    ### Get list of contacts\n    def get_contact_list(self):\n        d = self.call_no_check(\"Phonebook\", \"getAllContacts\", timeout=20)\n        if isinstance(d, list):\n            return d\n        raise LmApiException(\"Phonebook:getAllContacts query error\")\n\n\n    ### Get contact from its ID, return empty dict if not found\n    def get_contact(self, contact_id):\n        d = self.call_no_check(\"Phonebook\", \"getContactByUniqueID\", {\"uniqueID\": contact_id})\n        if isinstance(d, dict):\n            return d\n        raise LmApiException(\"Phonebook:getContactByUniqueID query error\")\n\n\n    ### Add a contact, return its ID or none if max nb of contacts reached\n    def add_contact(self, contact):\n        return self.call_no_check(\"Phonebook\", \"addContactAndGenUUID\", {\"contact\": contact})\n\n\n    ### Change a contact from its ID\n    def change_contact(self, contact_id, contact):\n        self.call(\"Phonebook\", \"modifyContactByUniqueID\", {\"uniqueID\": contact_id, \"contact\": contact})\n\n\n    ### Delete a contact from its ID. If no ID indicated delete all.\n    def delete_contact(self, contact_id=None):\n        if contact_id:\n            self.call(\"Phonebook\", \"removeContactByUniqueID\", {\"uniqueID\": contact_id})\n        else:\n            self.call(\"Phonebook\", \"removeAllContacts\")\n\n\n    ### Trigger ringtone. Default sound if none indicated.\n    def ring(self, ringtone=None):\n        param = {\"ringtone\": ringtone} if ringtone else None\n        self.call_no_check(\"VoiceService.VoiceApplication\", \"ring\", param)\n\n\n    ### Get DECT name - warning: no DECT from LB6\n    def get_dect_name(self):\n        return self.call(\"DECT\", \"getName\")\n\n\n    ### Get DECT PIN - warning: no DECT from LB6\n    def get_dect_pin(self):\n        return self.call(\"DECT\", \"getPIN\")\n\n\n    ### Get DECT RFPI - warning: no DECT from LB6\n    def get_dect_rfpi(self):\n        return self.call(\"DECT\", \"getRFPI\")\n\n\n    ### Get DECT Software Version - warning: no DECT from LB6\n    def get_dect_software_version(self):\n        return self.call(\"DECT\", \"getVersion\")\n\n\n    ### Get DECT CAT-iq Version - warning: no DECT from LB6\n    def get_dect_catiq_version(self):\n        return self.call(\"DECT\", \"getStandardVersion\")\n\n\n    ### Get DECT Pairing Status - warning: no DECT from LB6\n    def get_dect_pairing_status(self):\n        return self.call(\"DECT\", \"getPairingStatus\")\n\n\n    ### Get DECT Radio State - warning: no DECT from LB6\n    def get_dect_radio_state(self):\n        return self.call_no_check(\"DECT\", \"getRadioState\")\n\n\n    ### Get DECT Repeater Status - warning: no DECT from LB6\n    def get_dect_repeater_status(self):\n        return self.call(\"DECT.Repeater\", \"get\")\n"
  },
  {
    "path": "src/LiveboxMonitor/api/LmWifiApi.py",
    "content": "### Livebox Monitor Wifi APIs ###\n\nfrom LiveboxMonitor.api.LmApi import LmApi, LmApiException\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Wifi status keys\nclass WifiKey:\n    ACCESS_POINT = \"Name\"\n    ENABLE = \"WE\"\n    STATUS = \"WS\"\n    SCHEDULER = \"SCH\"\n    WIFI2_ENABLE = \"W2E\"\n    WIFI2_STATUS = \"W2S\"\n    WIFI2_VAP = \"W2V\"\n    WIFI5_ENABLE = \"W5E\"\n    WIFI5_STATUS = \"W5S\"\n    WIFI5_VAP = \"W5V\"\n    WIFI6_ENABLE = \"W6E\"\n    WIFI6_STATUS = \"W6S\"\n    WIFI6_VAP = \"W6V\"\n    GUEST2_VAP = \"G2V\"\n    GUEST5_VAP = \"G5V\"\n\n# Wifi status values\nclass WifiStatus:\n    ENABLE = \"Y\"\n    DISABLE = \"N\"\n    ERROR = \"E\"\n    INACTIVE = \"I\"\n    UNSIGNED = \"S\"\n\n\n\n# ################################ Wifi APIs ################################\nclass WifiApi(LmApi):\n    def __init__(self, api_registry):\n        super().__init__(api_registry)\n        self._has_mlo = None\n\n\n    ### Get Wifi or Guest Interfaces setup - returns base, radio and vap\n    def get_intf(self, guest=False):\n        return self._api._intf.get_wifi_mibs(guest)\n\n\n    ### Get Wifi status\n    def get_status(self):\n        if self._api._is_repeater:\n            d = self.call_raw(\"NMC.Wifi\", \"get\", timeout=15)\n            d = d.get(\"data\")\n            if d:\n                return d\n            raise LmApiException(\"NMC.Wifi:get query error\")\n        return self.call(\"NMC.Wifi\", \"get\", timeout=15)\n\n\n    ### Get enable status\n    def get_enable(self):\n        if self._api._is_repeater:\n            return self.get_status().get(\"Enable\")\n        nmc_status = self.get_status().get(\"Enable\")\n        d = self.get_power_management_profiles(\"WiFi\").get(\"WiFi\")\n        power_status = d.get(\"Enable\") if d else nmc_status\n        return (nmc_status is True) and (power_status is True)\n\n\n    ### Activate/Deactivate Wifi\n    def set_enable(self, enable):\n        if self._api._is_repeater:\n            self.call_no_check(\"NMC.Wifi\", \"set\", {\"Enable\": enable, \"Status\": enable}, err_str=\"Enable\")\n        else:\n            self.set_power_management_profiles({\"profile\": \"WiFi\", \"enable\": enable})\n            self.call(\"NMC.Wifi\", \"set\", {\"Enable\": enable, \"Status\": enable}, err_str=\"Enable\")\n\n\n    ### Get guest status\n    def get_guest_status(self):\n        return self.call(\"NMC.Guest\", \"get\", timeout=15)\n\n\n    ### Get guest enable status\n    def get_guest_enable(self):\n        return self.get_guest_status().get(\"Status\") == \"Enabled\"\n\n\n    ### Activate/Deactivate guest Wifi, timer in hours (0 == infinite)\n    def set_guest_enable(self, enable, timer=0):\n        self.call_no_check(\"NMC.Guest\", \"set\", {\"Enable\": enable})\n\n        # Set timer, just log in case of error\n        try:\n            if enable:\n                self.set_guest_activation_timer(timer)\n            else:\n                self.disable_guest_activation_timer()\n        except Exception as e:\n            LmTools.error(str(e))\n\n\n    ### Get guest activation timer - in seconds\n    def get_guest_activation_timer(self):\n        return int(self.call_no_check(\"NMC.WlanTimer\", \"getActivationTimer\", {\"InterfaceName\": \"guest\"}))\n\n\n    ### Set guest activation timer - in hours\n    def set_guest_activation_timer(self, timer):\n        self.call_no_check(\"NMC.WlanTimer\", \"setActivationTimer\", {\"Timeout\": timer, \"InterfaceName\": \"guest\"})\n\n\n    ### Disable guest activation timer\n    def disable_guest_activation_timer(self):\n        self.call(\"NMC.WlanTimer\", \"disableActivationTimer\", {\"InterfaceName\": \"guest\"})\n\n\n    ### Set Configuration Mode - must be set to True if SSIDs are different between radio bands\n    def set_configuration_mode(self, mode):\n        self.call(\"NMC.Wifi\", \"set\", {\"ConfigurationMode\": mode})\n\n\n    ### Set WLAN Configuration\n    def set_wlan_config(self, mibs):\n        self.call_no_check(\"NeMo.Intf.lan\", \"setWLANConfig\", {\"mibs\": mibs}, timeout=35)\n\n\n    ### Check if Wifi scheduler is present\n    def has_scheduler(self):\n        if self._api._is_repeater:\n            return self._api._info.get_model() >= 6    # Scheduler available only starting WR6\n        return True\n\n\n    ### Get Wifi Scheduler enable status\n    def get_scheduler_enable(self):\n        if self._api._is_repeater:\n            return self.get_scheduler_enable_legacy()\n        try:\n            d = self.get_power_management_profiles(\"WiFi\")\n        except Exception as e:\n            LmTools.error(str(e))\n            # If failed, try legacy method\n            return self.get_scheduler_enable_legacy()\n        else:\n            d = d.get(\"WiFi\")\n            if d is not None:\n                return d.get(\"Activate\")\n            else:\n                LmTools.error(\"PowerManagement:getProfiles - No WiFi profile\")\n                return self.get_scheduler_enable_legacy()\n\n\n    ### Get Wifi Scheduler enable status - legacy method\n    def get_scheduler_enable_legacy(self):\n        d = self.get_complete_schedules()\n        if d:\n            return d.get(\"enable\")\n        return None\n\n\n    ### Set Wifi Scheduler enable status\n    def set_scheduler_enable(self, enable):\n        if self._api._is_repeater:\n            self.set_scheduler_enable_repeater(enable)\n            return\n\n        # Set PowerManagement profile\n        try:\n            if enable:\n                p = [{\"profile\": \"WiFi\",\n                      \"activate\": True,\n                      \"type\": \"Weekly\",\n                      \"schedules\": [{\n                          \"Day\": 1,\n                          \"Hour\": 0,\n                          \"Minute\": 0,\n                          \"Second\": 0,\n                          \"enable\": True\n                        }]\n                    }]\n                self.call(\"PowerManagement\", \"setScheduledProfiles\", {\"profiles\": p})\n            else:\n                self.call(\"PowerManagement\", \"setProfiles\", {\"profiles\": [{\"profile\": \"WiFi\", \"activate\": False , \"enable\": True}]})\n        except Exception as e:\n            LmTools.error(f\"PowerManagement method failed with error={e}, trying legacy method.\")\n            return self.set_scheduler_enable_legacy(enable)\n\n        # Get complete schedules\n        schedule = self.get_complete_schedules()\n        if not schedule:\n            return\n\n        # Add schedule with proper status\n        p = {\"base\": schedule.get(\"base\"),\n             \"def\": schedule.get(\"def\"),\n             \"ID\": schedule.get(\"ID\"),\n             \"schedule\": schedule.get(\"schedule\"),\n             \"enable\": enable,\n             \"override\": \"\"}\n        d = self.call(\"Scheduler\", \"addSchedule\", {\"type\": \"WLAN\", \"info\": p})\n\n\n    ### Legacy method to set Wifi Scheduler on or off\n    ### These calls were used by the deprecated \"MaLiveBox\" iOS app\n    def set_scheduler_enable_legacy(self, enable):\n        # First save network configuration\n        self.call(\"NMC.NetworkConfig\", \"launchNetworkBackup\", {\"delay\": True})\n        failed = False\n        restore = False\n        err_msg = \"\"\n\n        # Get Wifi interfaces\n        d = self.call(\"NeMo.Intf.lan\", \"getMIBs\", {\"mibs\": \"wlanvap\"}, timeout=25)\n        w = d.get(\"wlanvap\")\n        if w is None:\n            raise LmApiException(\"NeMo.Intf.lan:getMIBs service failed.\")\n\n        # Loop on each Wifi interface\n        n = 0\n        for i in w:\n            # Get current schedule info\n            try:\n                d = self.call_raw(\"Scheduler\", \"getSchedule\", {\"type\": \"WLAN\", \"ID\": i}, err_str=i)\n            except Exception as e:\n                err_msg = str(e)\n                LmTools.error(err_msg)\n                failed = True\n                break\n            status = d.get(\"status\")\n            if status:     #Warning: seems status can be easily false, need to investigate\n                d = d.get(\"data\")\n                if d:\n                    d = d.get(\"scheduleInfo\")\n            else:\n                d = None\n            if d:\n                schedule = d\n            else:\n                err_msg = f\"Scheduler:getSchedule service failed for {i} interface.\"\n                LmTools.error(err_msg)\n                failed = True\n                break\n\n            # Add schedule with proper status\n            p = {\"enable\": enable,\n                 \"base\": schedule.get(\"base\"),\n                 \"def\": schedule.get(\"def\"),\n                 \"override\": \"\" if enable else \"Enable\",\n                 \"value\": schedule.get(\"value\"),\n                 \"ID\": i,\n                 \"schedule\": schedule.get(\"schedule\")}\n            try:\n                d = self.call_no_check(\"Scheduler\", \"addSchedule\", {\"type\": \"WLAN\", \"info\": p})\n            except Exception as e:\n                LmTools.error(str(e))\n                d = None\n            if not d:\n                err_msg = f\"Scheduler:addSchedule service failed for {i} interface.\\nLivebox might reboot.\"\n                LmTools.error(err_msg)\n                failed = True\n                if n:   # Trigger a restore (causing a Livebox reboot) if at least one succeeded previously\n                    restore = True\n                break\n            else:\n                n += 1\n\n        # Restore network configuration if failed and try another way\n        if failed:\n            if restore:\n                self.call_no_check(\"NMC.NetworkConfig\", \"launchNetworkRestore\")       # Restore config, triggering a Livebox reboot\n            failed = False\n\n            for i in w:\n                try:\n                    d = self.call_no_check(\"Scheduler\", \"enableSchedule\", {\"type\": \"WLAN\", \"ID\": i, \"enable\": enable}, err_str=i)\n                except Exception as e:\n                    LmTools.error(str(e))\n                    d = None\n                if not d:\n                    err_msg = f\"Scheduler:enableSchedule service failed for {i} interface.\"\n                    LmTools.error(err_msg)\n                    failed = True\n\n        if failed:\n            raise LmApiException(err_msg)\n\n\n    ### Set Wifi Scheduler on or off for a Wifi repeater\n    def set_scheduler_enable_repeater(self, enable):\n        # ID has to remain 'wl0' - it is NOT corresponding to an intf key\n        self.call(\"Scheduler\", \"enableSchedule\", {\"type\": \"WLAN\", \"ID\": \"wl0\", \"enable\": enable})\n\n\n    ### Get complete schedules data\n    def get_complete_schedules(self):\n        d = self.call_raw(\"Scheduler\", \"getCompleteSchedules\", {\"type\": \"WLAN\"})\n        if not d.get(\"status\", False):\n            raise LmApiException(f\"Scheduler:getCompleteSchedules service failed.\")\n        d = d.get(\"data\")\n        if d:\n            d = d.get(\"scheduleInfo\", [])\n            if d and isinstance(d, list):\n                return d[0]\n        return None\n\n\n    ### Get PowerManagement profiles, by default returns all\n    def get_power_management_profiles(self, profile=None):\n        return self.call(\"PowerManagement\", \"getProfiles\", {\"profiles\": [profile]} if profile else None)\n\n\n    ### Set a PowerManagement profile, return the resulting new profile\n    def set_power_management_profiles(self, profile):\n        return self.call(\"PowerManagement\", \"setProfiles\", {\"profiles\": [profile]})\n\n\n    ### Determine if Livebox model supports MLO Wifi 7 technology - returns True if yes\n    def has_mlo(self):\n        if self._has_mlo is None:\n            try:\n                mlo = self.get_mlo_enable()\n                self._has_mlo = mlo is not None\n            except Exception:\n                self._has_mlo = False\n        return self._has_mlo\n\n\n    ### Get MLO Wifi 7 technology configuration\n    def get_mlo_config(self):\n        return self.call(\"SSW.DataElements.Network.APMLDTemplate.privMlo\", \"get\", timeout=15) \n\n\n    ### Get MLO Wifi 7 enable status\n    def get_mlo_enable(self):\n        return self.get_mlo_config().get(\"MLOEnable\")\n\n\n    ### Set MLO Wifi 7 enable status\n    def set_mlo_enable(self, enable):\n        self.call(\"SSW.DataElements.Network.APMLDTemplate.privMlo\", \"set\", {\"MLOEnable\": enable}, timeout=15) \n\n\n    ### Get Wifi configuration\n    def get_config(self):\n        config = {}\n\n        # Get enable status + interfaces setup\n        try:\n            config[\"Enable\"] = self.get_enable()\n            b, w, d = self.get_intf()\n        except Exception as e:\n            LmTools.error(str(e))\n            return None\n\n        # Get MLO status if available\n        if self.has_mlo():\n            try:\n                config[\"MLO\"] = self.get_mlo_enable()\n            except Exception as e:\n                LmTools.error(str(e))\n                config[\"MLO\"] = False\n\n        # Get setup for each interface in wlanvap\n        intf = []\n        for s in d:\n            # Get Wifi interface key in wlanradio list\n            intf_key = None\n            base = b.get(s)\n            if base is not None:\n                low_level_intf = base.get(\"LLIntf\")\n                if low_level_intf is not None:\n                    intf_key = next(iter(low_level_intf))\n\n            q = w.get(intf_key) if intf_key is not None else None\n            r = d.get(s)\n            if (q is None) or (r is None):\n                continue\n\n            c = {}\n            radio_band = q.get(\"OperatingFrequencyBand\")\n            if radio_band is None:\n                radio_band = s\n            c[\"Name\"] = \"Wifi \" + radio_band\n            c[\"Key\"] = s\n            c[\"LLIntf\"] = intf_key\n            c[\"SSID\"] = r.get(\"SSID\")\n            c[\"Enable\"] = base.get(\"Enable\")\n            c[\"Broadcast\"] = r.get(\"SSIDAdvertisementEnabled\")\n\n            t = r.get(\"Security\")\n            if t is not None:\n                c[\"Secu\"] = t.get(\"ModeEnabled\")\n                c[\"SecuAvail\"] = t.get(\"ModesAvailable\")\n                c[\"KeyPass\"] = t.get(\"KeyPassPhrase\")\n            else:\n                c[\"Secu\"] = None\n                c[\"SecuAvail\"] = None\n                c[\"KeyPass\"] = None\n\n            t = r.get(\"WPS\")\n            if t is not None:\n                c[\"WPS\"] = t.get(\"Enable\")\n            else:\n                c[\"WPS\"] = None\n\n            t = r.get(\"MACFiltering\")\n            if t is not None:\n                c[\"MACFiltering\"] = t.get(\"Mode\")\n                entries = t.get(\"Entry\")\n                if entries:\n                    c[\"MACFilteringEntries\"] = [entries[k].get(\"MACAddress\", None) for k in entries]\n                else:\n                    c[\"MACFilteringEntries\"] = None\n            else:\n                c[\"MACFiltering\"] = None\n                c[\"MACFilteringEntries\"] = None\n\n            c[\"Mode\"] = q.get(\"OperatingStandards\")\n            c[\"ChannelAutoSupport\"] = q.get(\"AutoChannelSupported\")\n            c[\"ChannelAuto\"] = q.get(\"AutoChannelEnable\")\n            c[\"Channel\"] = q.get(\"Channel\")\n            c[\"Bandwidth\"] = q.get(\"OperatingChannelBandwidth\")\n\n            intf.append(c)\n        config[\"Intf\"] = intf\n\n        # Get available modes & channels per interface\n        modes = {}\n        for c in intf:\n            intf_key = c[\"LLIntf\"]\n            try:\n                d = self._api._intf.get_info(intf_key)\n            except Exception as e:\n                LmTools.error(str(e))\n            else:\n                m = {}\n                m[\"Modes\"] = d.get(\"SupportedStandards\")\n                m[\"Channels\"] = d.get(\"PossibleChannels\")\n                m[\"ChannelsInUse\"] = d.get(\"ChannelsInUse\")\n                bandwidths = d.get(\"SupportedOperatingChannelBandwidth\")\n                if bandwidths:\n                    m[\"Bandwidths\"] = bandwidths\n                else:\n                    bandwidths = []\n                    auto_enabled = d.get(\"AutoChannelEnable\")\n                    max_bandwidth = d.get(\"MaxChannelBandwidth\")\n                    if auto_enabled:\n                        bandwidths.append(\"Auto\")\n                    if max_bandwidth:\n                        max_bandwidth = LmTools.extract_int_from_string(max_bandwidth)\n                    if max_bandwidth:\n                        bandwidth = 20\n                        while bandwidth <= max_bandwidth:\n                            bandwidths.append(f\"{bandwidth}MHz\")\n                            bandwidth *= 2\n                    m[\"Bandwidths\"] = \",\".join(bandwidths) if bandwidths else None\n\n                modes[intf_key] = m\n        config[\"Modes\"] = modes\n\n        return config\n\n\n    ### Set Wifi configuration - returns True if all successful\n    def set_config(self, old_config, new_config):\n        old_intf = old_config[\"Intf\"]\n        new_intf = new_config[\"Intf\"]\n        status = True\n\n        # Check if SSIDs are the same accross frequencies before and after\n        s = None\n        old_unique_ssid = True\n        for o in old_intf:\n            if s is None:\n                s = o[\"SSID\"]\n            else:\n                if o[\"SSID\"] != s:\n                    old_unique_ssid = False\n                    break\n        s = None\n        new_unique_ssid = True\n        for n in new_intf:\n            if s is None:\n                s = n[\"SSID\"]\n            else:\n                if n[\"SSID\"] != s:\n                    new_unique_ssid = False\n                    break\n\n        # If SSID homogeneity changed, change the Configuration Mode\n        if old_unique_ssid != new_unique_ssid:\n            try:\n                self.set_configuration_mode(new_unique_ssid)\n            except Exception as e:\n                LmTools.error(str(e))\n                status = False\n\n        # Initiate parameters\n        vap = {}\n        radio = {}\n        penable = {}\n\n        # Check which setup changed\n        for o, n in zip(old_intf, new_intf):\n            v = {}\n            if (o[\"SSID\"] != n[\"SSID\"]):\n                v[\"SSID\"] = n[\"SSID\"]\n            if (o[\"Broadcast\"] != n[\"Broadcast\"]):\n                v[\"SSIDAdvertisementEnabled\"] = n[\"Broadcast\"]\n            if (o[\"Secu\"] != n[\"Secu\"]):\n                v[\"Security\"] = {\"ModeEnabled\": n[\"Secu\"], \"KeyPassPhrase\": n[\"KeyPass\"]}\n            elif (o[\"KeyPass\"] != n[\"KeyPass\"]):\n                v[\"Security\"] = {\"KeyPassPhrase\": n[\"KeyPass\"]}\n            if (o[\"WPS\"] != n[\"WPS\"]):\n                v[\"WPS\"] = {\"Enable\": n[\"WPS\"]}\n            filtering = {}\n            if (o[\"MACFiltering\"] != n[\"MACFiltering\"]):\n                filtering[\"Mode\"] = n[\"MACFiltering\"]\n            if (o[\"MACFilteringEntries\"] != n[\"MACFilteringEntries\"]):\n                entries = n[\"MACFilteringEntries\"]\n                filtering[\"Entry\"] = {f\"MAC{i+1}\": {\"MACAddress\": mac} for i, mac in enumerate(entries)} if entries else {}\n            if filtering:\n                v[\"MACFiltering\"] = filtering\n            if ((o[\"ChannelAuto\"] != n[\"ChannelAuto\"]) or \n                (o[\"Channel\"] != n[\"Channel\"]) or\n                (o[\"Mode\"] != n[\"Mode\"]) or\n                (o[\"Bandwidth\"] != n[\"Bandwidth\"])):\n                if n[\"ChannelAuto\"]:\n                    r = {\"AutoChannelEnable\": True, \"OperatingStandards\": n[\"Mode\"], \"OperatingChannelBandwidth\": n[\"Bandwidth\"]}\n                else:\n                    r = {\"AutoChannelEnable\": False, \"Channel\": n[\"Channel\"], \"OperatingStandards\": n[\"Mode\"], \"OperatingChannelBandwidth\": n[\"Bandwidth\"]}\n            else:\n                r = {}\n            if (o[\"Enable\"] != n[\"Enable\"]):\n                enable = n[\"Enable\"]\n                p = {\"Enable\": enable, \"PersistentEnable\": enable, \"Status\": enable}\n            else:\n                p = {}\n\n            if len(v):\n                vap[n[\"Key\"]] = v\n            if len(r):\n                radio[n[\"LLIntf\"]] = r\n            if len(p):\n                penable[n[\"Key\"]] = p\n\n        # Call the API if at least one parameter changed\n        if len(vap) or len(radio) or len(penable):\n            params = {}\n            params[\"penable\"] = penable\n            if len(vap):\n                params[\"wlanvap\"] = vap\n            if len(radio):\n                params[\"wlanradio\"] = radio\n            try:\n                self.set_wlan_config(params)\n            except Exception as e:\n                LmTools.error(str(e))\n                status = False\n\n        # Activate/Deactivate Wifi\n        if (old_config[\"Enable\"] != new_config[\"Enable\"]):\n            try:\n                self.set_enable(new_config[\"Enable\"])\n            except Exception as e:\n                LmTools.error(str(e))\n                status = False             \n\n        # Activate/Deactivate MLO if relevant\n        if self.has_mlo() and (old_config[\"MLO\"] != new_config[\"MLO\"]):\n            try:\n                self.set_mlo_enable(new_config[\"MLO\"])\n            except Exception as e:\n                LmTools.error(str(e))\n                status = False             \n\n        return status\n\n\n    ### Get Guest Wifi configuration\n    def get_guest_config(self):\n        # Get activation total duration\n        config = {}\n\n        try:\n            s = self.get_guest_status()\n            b, w, d = self.get_intf(True)\n        except Exception as e:\n            LmTools.error(str(e))\n            return None\n\n        config[\"Enable\"] = s.get(\"Status\") == \"Enabled\"\n\n        if s.get(\"ActivationTimeout\", 0) != 0:\n            start_time = LmTools.livebox_timestamp(s.get(\"StartTime\"))\n            end_time = LmTools.livebox_timestamp(s.get(\"ValidTime\"))\n            if (start_time is None) or (end_time is None):\n                LmTools.error(\"Activation timeout timestamps error\")\n                diff = 0\n            else:\n                diff = int((end_time - start_time).total_seconds())\n            config[\"Duration\"] = diff\n        else:\n            config[\"Duration\"] = 0\n\n        # Get activation remaining time\n        try:\n            config[\"Timer\"] = self.get_guest_activation_timer()\n        except Exception as e:\n            LmTools.error(str(e))\n            config[\"Timer\"] = 0\n\n        # Get setup for each interface\n        intf = []\n        for s in d:\n            # Get Wifi interface key in wlanradio list\n            intf_key = None\n            base = b.get(s)\n            if base is not None:\n                low_level_intf = base.get(\"LLIntf\")\n                if low_level_intf is not None:\n                    intf_key = next(iter(low_level_intf))\n\n            q = w.get(intf_key) if intf_key is not None else None\n            r = d.get(s)\n            if (q is None) or (r is None):\n                continue\n\n            c = {}\n            radio_band = q.get(\"OperatingFrequencyBand\")\n            if radio_band is None:\n                radio_band = s\n            c[\"Name\"] = \"Guest \" + radio_band\n            c[\"Key\"] = s\n            c[\"LLIntf\"] = intf_key\n            c[\"SSID\"] = r.get(\"SSID\")\n            c[\"Enable\"] = base.get(\"Enable\")\n            c[\"Broadcast\"] = r.get(\"SSIDAdvertisementEnabled\")\n\n            t = r.get(\"Security\")\n            if t is not None:\n                c[\"Secu\"] = t.get(\"ModeEnabled\")\n                c[\"SecuAvail\"] = t.get(\"ModesAvailable\")\n                c[\"KeyPass\"] = t.get(\"KeyPassPhrase\")\n            else:\n                c[\"Secu\"] = None\n                c[\"SecuAvail\"] = None\n                c[\"KeyPass\"] = None\n\n            t = r.get(\"WPS\")\n            if t is not None:\n                c[\"WPS\"] = t.get(\"Enable\")\n            else:\n                c[\"WPS\"] = None\n\n            t = r.get(\"MACFiltering\")\n            if t is not None:\n                c[\"MACFiltering\"] = t.get(\"Mode\")\n            else:\n                c[\"MACFiltering\"] = None\n\n            intf.append(c)\n        config[\"Intf\"] = intf\n\n        return config\n\n\n    ### Set Guest Wifi configuration - returns True if all successful\n    def set_guest_config(self, old_config, new_config):\n        old_intf = old_config[\"Intf\"]\n        new_intf = new_config[\"Intf\"]\n        status = True\n\n        # Initiate parameters\n        vap = {}\n        penable = {}\n\n        # Check which setup changed\n        for o, n in zip(old_intf, new_intf):\n            v = {}\n            if (o[\"SSID\"] != n[\"SSID\"]):\n                v[\"SSID\"] = n[\"SSID\"]\n            if (o[\"Broadcast\"] != n[\"Broadcast\"]):\n                v[\"SSIDAdvertisementEnabled\"] = n[\"Broadcast\"]\n            if (o[\"Secu\"] != n[\"Secu\"]):\n                v[\"Security\"] = {\"ModeEnabled\": n[\"Secu\"], \"KeyPassPhrase\": n[\"KeyPass\"]}\n            elif (o[\"KeyPass\"] != n[\"KeyPass\"]):\n                v[\"Security\"] = {\"KeyPassPhrase\": n[\"KeyPass\"]}\n            if (o[\"WPS\"] != n[\"WPS\"]):\n                v[\"WPS\"] = {\"Enable\": n[\"WPS\"]}\n            if (o[\"MACFiltering\"] != n[\"MACFiltering\"]):\n                v[\"MACFiltering\"] = {\"Mode\": n[\"MACFiltering\"]}\n            if (o[\"Enable\"] != n[\"Enable\"]):\n                enable = n[\"Enable\"]\n                p = {\"Enable\": enable, \"PersistentEnable\": enable, \"Status\": enable }\n            else:\n                p = {}\n\n            if len(v):\n                vap[n[\"Key\"]] = v\n            if len(p):\n                penable[n[\"Key\"]] = p\n\n        # Call the API if at least one parameter changed\n        if len(vap) or len(penable):\n            params = {}\n            params[\"penable\"] = penable\n            if len(vap):\n                params[\"wlanvap\"] = vap\n            try:\n                self.set_wlan_config(params)\n            except Exception as e:\n                LmTools.error(str(e))\n                status = False\n\n        # Activate/Deactivate Guest Wifi or reset timer\n        try:\n            if (old_config[\"Enable\"] != new_config[\"Enable\"]):\n                self.set_guest_enable(new_config[\"Enable\"], new_config[\"Duration\"] // 3600)\n            elif new_config[\"Enable\"]:\n                self.set_guest_activation_timer(new_config[\"Duration\"] // 3600)\n        except Exception as e:\n            LmTools.error(str(e))\n            status = False\n\n        return status\n\n\n    ### Get Global Wifi status\n    def get_global_wifi_status(self, name=None, active=True, signed=True):\n        u = {}\n        u[WifiKey.ACCESS_POINT] = name if name else \"Livebox\"\n\n        if not active:\n            u[WifiKey.ENABLE] = WifiStatus.INACTIVE\n            u[WifiKey.STATUS] = WifiStatus.INACTIVE\n            u[WifiKey.SCHEDULER] = WifiStatus.INACTIVE\n            if self._api._intf.has_radio_band_2():\n                u[WifiKey.WIFI2_ENABLE] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI2_STATUS] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI2_VAP] = WifiStatus.INACTIVE\n            if self._api._intf.has_radio_band_5():\n                u[WifiKey.WIFI5_ENABLE] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI5_STATUS] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI5_VAP] = WifiStatus.INACTIVE\n            if self._api._intf.has_radio_band_6():\n                u[WifiKey.WIFI6_ENABLE] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI6_STATUS] = WifiStatus.INACTIVE\n                u[WifiKey.WIFI6_VAP] = WifiStatus.INACTIVE\n            return u\n\n        if not signed:\n            u[WifiKey.ENABLE] = WifiStatus.UNSIGNED\n            u[WifiKey.STATUS] = WifiStatus.UNSIGNED\n            u[WifiKey.SCHEDULER] = WifiStatus.UNSIGNED\n            if self._api._intf.has_radio_band_2():\n                u[WifiKey.WIFI2_ENABLE] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI2_STATUS] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI2_VAP] = WifiStatus.UNSIGNED\n            if self._api._intf.has_radio_band_5():\n                u[WifiKey.WIFI5_ENABLE] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI5_STATUS] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI5_VAP] = WifiStatus.UNSIGNED\n            if self._api._intf.has_radio_band_6():\n                u[WifiKey.WIFI6_ENABLE] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI6_STATUS] = WifiStatus.UNSIGNED\n                u[WifiKey.WIFI6_VAP] = WifiStatus.UNSIGNED\n            return u\n\n        # General Wifi status\n        wifi_scheduler_status = None\n        try:\n            d = self.get_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            d = None\n        if d is None:\n            u[WifiKey.ENABLE] = WifiStatus.ERROR\n            u[WifiKey.STATUS] = WifiStatus.ERROR\n        else:\n            u[WifiKey.ENABLE] = WifiStatus.ENABLE if d.get(\"Enable\", False) else WifiStatus.DISABLE\n            u[WifiKey.STATUS] = WifiStatus.ENABLE if d.get(\"Status\", False) else WifiStatus.DISABLE\n            wifi_scheduler_status = d.get(\"SchedulingEnabled\")\n\n        # Wifi scheduler status\n        if self.has_scheduler():\n            try:\n                status = self.get_scheduler_enable()\n            except Exception as e:\n                LmTools.error(str(e))\n                status = None\n\n            # Agregate result\n            if status is None:\n                if wifi_scheduler_status is None:\n                    u[WifiKey.SCHEDULER] = WifiStatus.ERROR\n                else:\n                    u[WifiKey.SCHEDULER] = WifiStatus.ENABLE if wifi_scheduler_status else WifiStatus.DISABLE\n            else:\n                if wifi_scheduler_status is None:\n                    u[WifiKey.SCHEDULER] = WifiStatus.ENABLE if status else WifiStatus.DISABLE\n                else:\n                    u[WifiKey.SCHEDULER] = WifiStatus.ENABLE if (status and wifi_scheduler_status) else WifiStatus.DISABLE\n\n        # Wifi interfaces status\n        try:\n            b, w, d = self.get_intf()\n        except Exception as e:\n            LmTools.error(str(e))\n            b = None\n            w = None\n            d = None\n\n        if (d is None) or (b is None) or (w is None):\n            if self._api._intf.has_radio_band_2():\n                u[WifiKey.WIFI2_ENABLE] = WifiStatus.ERROR\n                u[WifiKey.WIFI2_STATUS] = WifiStatus.ERROR\n                u[WifiKey.WIFI2_VAP] = WifiStatus.ERROR\n            if self._api._intf.has_radio_band_5():\n                u[WifiKey.WIFI5_ENABLE] = WifiStatus.ERROR\n                u[WifiKey.WIFI5_STATUS] = WifiStatus.ERROR\n                u[WifiKey.WIFI5_VAP] = WifiStatus.ERROR\n            if self._api._intf.has_radio_band_6():\n                u[WifiKey.WIFI6_ENABLE] = WifiStatus.ERROR\n                u[WifiKey.WIFI6_STATUS] = WifiStatus.ERROR\n                u[WifiKey.WIFI6_VAP] = WifiStatus.ERROR\n        else:\n            for s in self._api._intf.get_list():\n                if s[\"Type\"] != \"wif\":\n                    continue\n\n                match s[\"Name\"]:\n                    case \"Wifi 2.4GHz\":\n                        enable_key = WifiKey.WIFI2_ENABLE\n                        status_key = WifiKey.WIFI2_STATUS\n                        vap_key = WifiKey.WIFI2_VAP\n                    case \"Wifi 5GHz\":\n                        enable_key = WifiKey.WIFI5_ENABLE\n                        status_key = WifiKey.WIFI5_STATUS\n                        vap_key = WifiKey.WIFI5_VAP\n                    case \"Wifi 6GHz\":\n                        enable_key = WifiKey.WIFI6_ENABLE\n                        status_key = WifiKey.WIFI6_STATUS\n                        vap_key = WifiKey.WIFI6_VAP\n                    case _:\n                        continue\n\n                # Get Wifi interface key in wlanradio list\n                intf_key = None\n                base = b.get(s[\"Key\"])\n                if base is not None:\n                    u[enable_key] = WifiStatus.ENABLE if base.get(\"Enable\", False) else WifiStatus.DISABLE\n                    u[status_key] = WifiStatus.ENABLE if base.get(\"Status\", False) else WifiStatus.DISABLE\n\n                    low_level_intf = base.get(\"LLIntf\")\n                    if low_level_intf is not None:\n                        intf_key = next(iter(low_level_intf))\n                else:\n                    u[enable_key] = WifiStatus.ERROR\n                    u[status_key] = WifiStatus.ERROR\n\n                q = w.get(intf_key) if intf_key is not None else None\n                r = d.get(s[\"Key\"])\n                if (q is None) or (r is None):\n                    u[vap_key] = WifiStatus.ERROR\n                else:\n                    u[vap_key] = WifiStatus.ENABLE if (r.get(\"VAPStatus\", \"Down\") == \"Up\") else WifiStatus.DISABLE\n\n\n        # Guest Wifi status\n        if not self._api._is_repeater:\n            try:\n                b, w, d = self.get_intf(True)\n            except Exception as e:\n                LmTools.error(str(e))\n                b = None\n                w = None\n                d = None\n\n            if (d is None) or (b is None) or (w is None):\n                if self._api._intf.has_radio_band_2():\n                    u[WifiKey.GUEST2_VAP] = WifiStatus.ERROR\n                if self._api._intf.has_radio_band_5():\n                    u[WifiKey.GUEST5_VAP] = WifiStatus.ERROR\n            else:\n                for s in self._api._intf.get_list():\n                    if s[\"Type\"] != \"wig\":\n                        continue\n\n                    match s[\"Name\"]:\n                        case \"Guest 2.4GHz\":\n                            vap_key = WifiKey.GUEST2_VAP\n                        case \"Guest 5GHz\":\n                            vap_key = WifiKey.GUEST5_VAP\n                        case _:\n                            continue\n\n                    r = d.get(s[\"Key\"])\n                    if r is None:\n                        u[vap_key] = WifiStatus.ERROR\n                    else:\n                        u[vap_key] = WifiStatus.ENABLE if (r.get(\"VAPStatus\", \"Down\") == \"Up\") else WifiStatus.DISABLE\n\n        return u\n"
  },
  {
    "path": "src/LiveboxMonitor/api/__init__.py",
    "content": ""
  },
  {
    "path": "src/LiveboxMonitor/app/LmConfig.py",
    "content": "### Livebox Monitor Configuration module ###\n\nimport sys\nimport os\nimport platform\nimport requests\nimport json\nimport base64\nimport hashlib\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\nfrom cryptography.fernet import Fernet\n\nfrom LiveboxMonitor.app import LmQtTools\nfrom LiveboxMonitor.api.LmSession import DEFAULT_TIMEOUT\nfrom LiveboxMonitor.api.LmSession import LmSession\nfrom LiveboxMonitor.api.LmLiveboxInfoApi import LiveboxInfoApi\nfrom LiveboxMonitor.dlg.LmReleaseWarning import ReleaseWarningDialog\nfrom LiveboxMonitor.lang import LmLanguages\nfrom LiveboxMonitor.lang.LmLanguages import get_config_prefs_label as lx, get_config_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\nfrom LiveboxMonitor.__init__ import __build__\n\n\n# ################################ VARS & DEFS ################################\n\n# Config file name\nCONFIG_FILE = \"Config.txt\"\nKEY_FILE = \"Key.txt\"\nSPAMCALLS_FILE = \"SpamCalls.txt\"\nLIVEBOX_CACHE_DIR = \"lbcache_\"\nLIVEBOX_ICON_CACHE_DIR = \"icons\"\nCUSTOM_ICON_DIR = \"custom_icons\"\n\n# Config default\nDCFG_LIVEBOX_URL = \"http://livebox.home/\"\nDCFG_LIVEBOX_USER = \"admin\"\nDCFG_LIVEBOX_PASSWORD = \"\"\nDCFG_FILTER_DEVICES = False\nDCFG_ONLY_ACTIVE_DEVICES = False\nDCFG_MACADDR_TABLE_FILE = \"MacAddrTable.txt\"\nDCFG_LANGUAGE = \"FR\"\nDCFG_TOOLTIPS = True\nDCFG_STATS_FREQUENCY = 3000\nDCFG_MACADDR_API_KEY = \"\"\nDCFG_CALLFILTER_API_KEY = \"\"\nDCFG_PHONE_CODE = \"33\"\nDCFG_LIST_HEADER_HEIGHT = 25\nDCFG_LIST_HEADER_FONT_SIZE = 0\nDCFG_LIST_LINE_HEIGHT = 30\nDCFG_LIST_LINE_FONT_SIZE = 0\nDCFG_REALTIME_WIFI_STATS = False\nDCFG_NATIVE_UI_STYLE = False\nDCFG_LOG_LEVEL = 0\nDCFG_NO_RELEASE_WARNING = 0\nDCFG_REPEATERS = None\nDCFG_GRAPH = None\nDCFG_TABS = None\nDCFG_NOTIFICATION_RULES = None\nDCFG_NOTIFICATION_FLUSH_FREQUENCY = 30  # Consolidated notifs flush + time diff between events to merge - in seconds\nDCFG_NOTIFICATION_FILE_PATH = None\nDCFG_EMAIL = None\nDCFG_CSV_DELIMITER = \";\"\nDCFG_TIMEOUT_MARGIN = 0\nDCFG_PREVENT_SLEEP = True\nDCFG_SAVE_PASSWORDS = True\n\n# Static config\nGIT_REPO = \"p-dor/LiveboxMonitor\"\nGITRELEASE_URL = \"https://api.github.com/repos/{}/releases/latest\"\nICON_URL = \"assets/common/images/app_conf/\"\n\n# Graphical config\nWIND_HEIGHT_ADJUST = 0      # Space to add to a window height to respect a table wished height inside\nDIAG_HEIGHT_ADJUST = 0      # Space to add to a dialog height to respect a table wished height inside\nTABLE_ADJUST = 4            # Space to add to a table height to respect a table wished height\nLIST_HEADER_FONT_SIZE = 0   # 0 = default system font, value can be overriden by LmConf.ListHeaderFontSize\nLIST_HEADER_FONT = None\nLIST_LINE_FONT_SIZE = 0     # 0 = default system font, value can be overriden by LmConf.ListLineFontSize\nLIST_LINE_FONT = None\nLIST_STYLESHEET = \"\"\nLIST_HEADER_STYLESHEET = \"\"\n\n# Interface name mapping\nINTF_NAME_MAP = []\n\n# LB4 Interface name mapping\nINTF_NAME_MAP_LB4 = {}\n\n# LB5 Interface name mapping\nINTF_NAME_MAP_LB5 = {\"Eth0\": \"Eth1\", \"Eth1\": \"Eth2\", \"Eth2\": \"Eth3\", \"Eth3\": \"Eth4\"}\n\n# LB6 Interface name mapping\nINTF_NAME_MAP_LB6 = {\"Eth0\": \"Eth 2.5G\"}\n\n# LB7 Interface name mapping\n# With name: Eth0 -> 'Eth 10G', all others is name capitalized\nINTF_NAME_MAP_LB7 = {\"Eth0\": \"Eth 10G\"}\n\n# LBS Interface name mapping\nINTF_NAME_MAP_LBS = {\"Eth0\": \"Eth1\", \"Eth1\": \"Eth2\", \"Eth2\": \"Eth3\", \"Eth3\": \"Eth4\"}\n\n# Device types & icons\nDEVICE_TYPES = [\n    {\"Key\": \"Unknown\",                     \"Name\": \"Unknown\",                    \"Icon\": \"e_default_device.png\"},\n    {\"Key\": \"AC Outlet\",                   \"Name\": \"AC Outlet\",                  \"Icon\": \"e_smart_plug.png\"},\n    {\"Key\": \"Acces Point\",                 \"Name\": \"Acces Point\",                \"Icon\": \"e_pointacceswifi.png\"},\n    {\"Key\": \"Airbox\",                      \"Name\": \"Airbox\",                     \"Icon\": \"e_airbox_gen.png\"},\n    {\"Key\": \"Apple AirPort\",               \"Name\": \"Apple AirPort\",              \"Icon\": \"e_apple_express.png\"},\n    {\"Key\": \"Apple AirPort Time Capsule\",  \"Name\": \"Apple AirPort Time Capsule\", \"Icon\": \"e_apple_extreme_capsule.png\"},\n    {\"Key\": \"Apple Time Capsule\",          \"Name\": \"Apple Time Capsule\",         \"Icon\": \"e_apple_extreme_capsule.png\"},\n    {\"Key\": \"Apple TV\",                    \"Name\": \"Apple TV\",                   \"Icon\": \"e_apple_tv.png\"},\n    {\"Key\": \"Chromecast\",                  \"Name\": \"Chromecast\",                 \"Icon\": \"e_chromecast.png\"},\n    {\"Key\": \"Desktop\",                     \"Name\": \"Computer\",                   \"Icon\": \"e_ordibureau.png\"},\n    {\"Key\": \"Desktop Linux\",               \"Name\": \"Computer (Linux)\",           \"Icon\": \"e_ordibureau_Linux.png\"},\n    {\"Key\": \"Desktop iOS\",                 \"Name\": \"Computer (MacOS)\",           \"Icon\": \"e_ordibureau_ios.png\"},\n    {\"Key\": \"Desktop Windows\",             \"Name\": \"Computer (Windows)\",         \"Icon\": \"e_ordibureau_windows.png\"},\n    {\"Key\": \"Game Console\",                \"Name\": \"Console\",                    \"Icon\": \"e_consolejeux.png\"},\n    {\"Key\": \"Dimmable Color Bulb\",         \"Name\": \"Dimmer Light\",               \"Icon\": \"e_smart_bulb.png\"},\n    {\"Key\": \"Djingo Speaker\",              \"Name\": \"Djingo Speaker\",             \"Icon\": \"e_djingospeaker.png\"},   # Not (yet?) supported by LB5\n    {\"Key\": \"Domestic Robot\",              \"Name\": \"Domestic Robot\",             \"Icon\": \"e_Homelive.png\"},\n    {\"Key\": \"Domino\",                      \"Name\": \"Domino\",                     \"Icon\": \"e_domino.png\"},\n    {\"Key\": \"Door Sensor\",                 \"Name\": \"Door Sensor\",                \"Icon\": \"e_door_sensor.png\"},\n    {\"Key\": \"ExtenderTV\",                  \"Name\": \"Extender TV\",                \"Icon\": \"e_liveplugsolo.png\"},\n    {\"Key\": \"ExtenderWiFiPlus\",            \"Name\": \"Extender Wi-Fi Plus\",        \"Icon\": \"e_pointacceswifi.png\"},\n    {\"Key\": \"Femtocell\",                   \"Name\": \"Femtocell\",                  \"Icon\": \"e_femtocell.png\"},\n    {\"Key\": \"Google OnHub\",                \"Name\": \"Google OnHub\",               \"Icon\": \"e_google_onhub.png\"},\n    {\"Key\": \"HiFi\",                        \"Name\": \"HiFi\",                       \"Icon\": \"e_enceinte_hifi.png\"},\n    {\"Key\": \"HomeLibrary\",                 \"Name\": \"Home Library\",               \"Icon\": \"e_homelibrary.png\"},\n    {\"Key\": \"HomeLive\",                    \"Name\": \"Home Live\",                  \"Icon\": \"e_Homelive.png\"},\n    {\"Key\": \"Homepoint\",                   \"Name\": \"Home Point\",                 \"Icon\": \"e_homepoint.png\"},\n    {\"Key\": \"IP Camera\",                   \"Name\": \"IP Camera\",                  \"Icon\": \"e_camera_ip.png\"},\n    {\"Key\": \"Laptop\",                      \"Name\": \"Laptop\",                     \"Icon\": \"e_ordiportable.png\"},\n    {\"Key\": \"Laptop iOS\",                  \"Name\": \"Laptop (iOS)\",               \"Icon\": \"e_ordiportable_ios.png\"},\n    {\"Key\": \"Laptop Linux\",                \"Name\": \"Laptop (Linux)\",             \"Icon\": \"e_ordiportable_Linux.png\"},\n    {\"Key\": \"Laptop Windows\",              \"Name\": \"Laptop (Windows)\",           \"Icon\": \"e_ordiportable_windows.png\"},\n    {\"Key\": \"leBloc\",                      \"Name\": \"Le Bloc d'Orange\",           \"Icon\": \"e_leblocdorange.png\"},\n    {\"Key\": \"HomePlug\",                    \"Name\": \"Liveplug\",                   \"Icon\": \"e_liveplug_cpl.png\"},\n    {\"Key\": \"LivePlugWifi\",                \"Name\": \"Liveplug solo Wi-Fi\",        \"Icon\": \"e_liveplugsolo.png\"},\n    {\"Key\": \"WiFiExtender\",                \"Name\": \"Liveplug Wi-Fi Extender\",    \"Icon\": \"e_liveplug_extender.png\"},\n    {\"Key\": \"Liveradio\",                   \"Name\": \"LiveRadio\",                  \"Icon\": \"e_liveradio.png\"},\n    {\"Key\": \"Motion Sensor\",               \"Name\": \"Motion Sensor\",              \"Icon\": \"e_motion_sensor.png\"},\n    {\"Key\": \"Nas\",                         \"Name\": \"NAS\",                        \"Icon\": \"e_nas.png\"},\n    {\"Key\": \"Notebook\",                    \"Name\": \"Notebook\",                   \"Icon\": \"e_notebook.png\"},\n    {\"Key\": \"Notebook Linux\",              \"Name\": \"Notebook (Linux)\",           \"Icon\": \"e_notebook_Linux.png\"},\n    {\"Key\": \"Notebook Windows\",            \"Name\": \"Notebook (Windows)\",         \"Icon\": \"e_notebook_windows.png\"},\n    {\"Key\": \"Old Phone\",                   \"Name\": \"Old Handset Phone\",          \"Icon\": \"e_telephoneold.png\"},\n    {\"Key\": \"Phone\",                       \"Name\": \"Phone\",                      \"Icon\": \"e_telephonenew.png\"},\n    {\"Key\": \"Power Meter\",                 \"Name\": \"Power Meter\",                \"Icon\": \"e_smart_plug.png\"},\n    {\"Key\": \"Printer\",                     \"Name\": \"Printer\",                    \"Icon\": \"e_imprimante.png\"},\n    {\"Key\": \"Set-top Box\",                 \"Name\": \"Set-top Box\",                \"Icon\": \"e_decodeurTV.png\"},\n    {\"Key\": \"Set-top Box TV 4\",            \"Name\": \"Set-top Box 4\",              \"Icon\": \"e_decodeur_tv_4.png\"},\n    {\"Key\": \"Set-top Box TV Play\",         \"Name\": \"Set-top Box Play\",           \"Icon\": \"e_decodeur_tv_play.png\"},\n    {\"Key\": \"Set-top Box TV UHD\",          \"Name\": \"Set-top Box UHD\",            \"Icon\": \"e_decodeur_tv_uhd.png\"},\n    {\"Key\": \"Set-top Box TV Universal\",    \"Name\": \"Set-top Box Universal\",      \"Icon\": \"e_decodeur_tv_universel.png\"},\n    {\"Key\": \"Simple Button\",               \"Name\": \"Simple Button\",              \"Icon\": \"e_simple_button.png\"},\n    {\"Key\": \"Color Bulb\",                  \"Name\": \"Smart Bulb\",                 \"Icon\": \"e_smart_bulb.png\"},\n    {\"Key\": \"Smart Plug\",                  \"Name\": \"Smart Plug\",                 \"Icon\": \"e_smart_plug.png\"},\n    {\"Key\": \"Mobile\",                      \"Name\": \"Smartphone\",                 \"Icon\": \"e_mobile.png\"},\n    {\"Key\": \"Mobile Android\",              \"Name\": \"Smartphone (Android)\",       \"Icon\": \"e_mobile_android.png\"},\n    {\"Key\": \"Mobile iOS\",                  \"Name\": \"Smartphone (iOS)\",           \"Icon\": \"e_mobile_ios.png\"},\n    {\"Key\": \"Mobile Windows\",              \"Name\": \"Smartphone (Windows)\",       \"Icon\": \"e_mobile_windows.png\"},\n    {\"Key\": \"Smoke Detector\",              \"Name\": \"Smoke Detector\",             \"Icon\": \"e_sensorhome.png\"},\n    {\"Key\": \"Disk\",                        \"Name\": \"Storage Device\",             \"Icon\": \"e_periphstockage.png\"},\n    {\"Key\": \"Switch4\",                     \"Name\": \"Switch (4 ports)\",           \"Icon\": \"e_switch4.png\"},\n    {\"Key\": \"Switch8\",                     \"Name\": \"Switch (8 ports)\",           \"Icon\": \"e_switch8.png\"},\n    {\"Key\": \"Tablet\",                      \"Name\": \"Tablet\",                     \"Icon\": \"e_tablette.png\"},\n    {\"Key\": \"Tablet Android\",              \"Name\": \"Tablet (Android)\",           \"Icon\": \"e_tablette_android.png\"},\n    {\"Key\": \"Tablet iOS\",                  \"Name\": \"Tablet (iOS)\",               \"Icon\": \"e_tablette_ios.png\"},\n    {\"Key\": \"Tablet Windows\",              \"Name\": \"Tablet (Windows)\",           \"Icon\": \"e_tablette_windows.png\"},\n    {\"Key\": \"TV\",                          \"Name\": \"TV\",                         \"Icon\": \"e_TV.png\"},\n    {\"Key\": \"TVKey\",                       \"Name\": \"TV Stick\",                   \"Icon\": \"e_cletv.png\"},\n    {\"Key\": \"TVKey v2\",                    \"Name\": \"TV Stick v2\",                \"Icon\": \"e_cletv_v2.png\"},\n    {\"Key\": \"USBKey\",                      \"Name\": \"USB Key\",                    \"Icon\": \"e_cleusb.png\"},\n    {\"Key\": \"WiFi_Access_Point\",           \"Name\": \"Wi-Fi Access Point\",         \"Icon\": \"e_pointacceswifi.png\"},\n    {\"Key\": \"Window Sensor\",               \"Name\": \"Window Sensor\",              \"Icon\": \"e_door_sensor.png\"},\n    {\"Key\": \"Computer\",                    \"Name\": \"Windows Computer\",           \"Icon\": \"e_ordibureau_windows.png\"},\n    {\"Key\": \"SAH AP\",                      \"Name\": \"Wi-Fi Repeater\",             \"Icon\": \"e_pointacceswifi.png\"},\n    {\"Key\": \"repeteurwifi6\",               \"Name\": \"Wi-Fi Repeater 6\",           \"Icon\": \"e_pointacceswifi.png\"}\n]\n\n\n\n# ################################ Tools ################################\n\n### Setting up application style depending on platform\ndef set_application_style():\n    global WIND_HEIGHT_ADJUST\n    global DIAG_HEIGHT_ADJUST\n    global TABLE_ADJUST\n    global LIST_HEADER_FONT_SIZE\n    global LIST_HEADER_FONT\n    global LIST_LINE_FONT_SIZE\n    global LIST_LINE_FONT\n    global LIST_STYLESHEET\n    global LIST_HEADER_STYLESHEET\n\n    keys = QtWidgets.QStyleFactory.keys()\n    system =  platform.system()\n    style = \"Fusion\"\n    if LmConf.NativeUIStyle:\n        if system == \"Windows\":\n            style = \"Windows\"\n        elif system == \"Darwin\":\n            style = \"macOS\"\n\n    if style == \"Fusion\":\n        if system == \"Windows\":\n            WIND_HEIGHT_ADJUST = 2\n            DIAG_HEIGHT_ADJUST = -4\n            TABLE_ADJUST = 2\n            LIST_HEADER_FONT_SIZE = 0   # Let system default\n            LIST_LINE_FONT_SIZE = 0     # Let system default\n            LIST_STYLESHEET = \"QTableView { color:black; background-color:#FAFAFA }\"\n            LIST_HEADER_STYLESHEET = '''\n                QHeaderView::section {\n                    border-width: 0px 0px 1px 0px;\n                    border-color: grey\n                }\n                '''\n        elif system == \"Darwin\":\n            WIND_HEIGHT_ADJUST = 2\n            DIAG_HEIGHT_ADJUST = -4\n            TABLE_ADJUST = 2\n            LIST_HEADER_FONT_SIZE = 11\n            LIST_LINE_FONT_SIZE = 10\n            LIST_STYLESHEET = \"QTableView { color:black; background-color:#F0F0F0; gridline-color:#FFFFFF }\"\n            LIST_HEADER_STYLESHEET = '''\n                QHeaderView::section {\n                    border-width: 0px 0px 1px 0px;\n                    border-color: grey\n                }\n                '''\n        else:\n            WIND_HEIGHT_ADJUST = 2\n            DIAG_HEIGHT_ADJUST = -4\n            TABLE_ADJUST = 4\n            LIST_HEADER_FONT_SIZE = 12\n            LIST_LINE_FONT_SIZE = 10\n            LIST_STYLESHEET = \"QTableView { color:black; background-color:#FAFAFA }\"\n            LIST_HEADER_STYLESHEET = '''\n                QHeaderView::section {\n                    border-width: 0px 0px 1px 0px;\n                    border-color: grey\n                }\n                '''\n    elif style == \"Windows\":\n        WIND_HEIGHT_ADJUST = -1\n        DIAG_HEIGHT_ADJUST = 0\n        TABLE_ADJUST = 4\n        LIST_HEADER_FONT_SIZE = 0   # Let system default\n        LIST_LINE_FONT_SIZE = 0     # Let system default\n        LIST_STYLESHEET = \"QTableView { color:black; background-color:#FAFAFA }\"\n        LIST_HEADER_STYLESHEET = '''\n            QHeaderView::section {\n                border-width: 0px 0px 1px 0px;\n                border-style: solid;\n                border-color: grey\n            }\n            '''\n    elif style == \"macOS\":\n        WIND_HEIGHT_ADJUST = -4\n        DIAG_HEIGHT_ADJUST = 30\n        TABLE_ADJUST = 4\n        LIST_HEADER_FONT_SIZE = 11\n        LIST_LINE_FONT_SIZE = 10\n        LIST_STYLESHEET = \"QTableView { color:black; background-color:#F0F0F0; gridline-color:#FFFFFF }\"\n        LIST_HEADER_STYLESHEET = '''\n            QHeaderView::section {\n                color:black;\n                background-color:#C0C0C0;\n                border: 0px\n            }\n            '''\n\n    # Setup table's fonts\n    LIST_HEADER_FONT = QtGui.QFont()\n    LIST_HEADER_FONT.setBold(True)\n    if LmConf.ListHeaderFontSize:\n        LIST_HEADER_FONT.setPointSize(LmConf.ListHeaderFontSize)\n    elif LIST_HEADER_FONT_SIZE:\n        LIST_HEADER_FONT.setPointSize(LIST_HEADER_FONT_SIZE)\n    LIST_LINE_FONT = QtGui.QFont()\n    if LmConf.ListLineFontSize:\n        LIST_LINE_FONT.setPointSize(LmConf.ListLineFontSize)\n    elif LIST_LINE_FONT_SIZE:\n        LIST_LINE_FONT.setPointSize(LIST_LINE_FONT_SIZE)\n\n    if style in keys:\n        QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create(style))\n\n\n### Compute table height based on nb of rows\ndef table_height(row_nb):\n    return LmConf.ListHeaderHeight + (LmConf.ListLineHeight * row_nb) + TABLE_ADJUST\n\n\n### Compute base height of a window based on nb of rows of a single table\ndef window_height(row_nb):\n    return table_height(row_nb) + WIND_HEIGHT_ADJUST\n\n\n### Compute base height of a dialog based on nb of rows of a single table\ndef dialog_height(row_nb):\n    return table_height(row_nb) + DIAG_HEIGHT_ADJUST\n\n\n### Assign Tooltips to all QWidgets in a window/dialog/tab\ndef set_tooltips(qt_object, key):\n    if LmConf.Tooltips:\n        item_list = qt_object.findChildren(QtWidgets.QWidget, options = QtCore.Qt.FindChildOption.FindDirectChildrenOnly)\n        for item in item_list:\n            k = item.objectName()\n            if len(k):\n                if isinstance(item, QtWidgets.QTableWidget):\n                    h = item.horizontalHeader()\n                    m = h.model()\n                    for c in range(h.count()):\n                        k = m.headerData(c, QtCore.Qt.Orientation.Horizontal, QtCore.Qt.ItemDataRole.UserRole)\n                        if k is not None:\n                            item.horizontalHeaderItem(c).setToolTip(LmLanguages.get_tooltip(key, k))\n                elif isinstance(item, QtWidgets.QTabWidget):\n                    for i in range(item.count()):\n                        k = item.widget(i).objectName()\n                        if len(k):\n                            item.setTabToolTip(i, LmLanguages.get_tooltip(key, k))\n                elif isinstance(item, QtWidgets.QGroupBox):\n                    # Set tooltip to the group if any\n                    item.setToolTip(LmLanguages.get_tooltip(key, k))\n                    # Recursive call to handle group content\n                    set_tooltips(item, key)\n                else:\n                    item.setToolTip(LmLanguages.get_tooltip(key, k))\n\n\n### Setup configuration according to Livebox model\ndef set_livebox_model(model):\n    global INTF_NAME_MAP\n\n    match model:\n        case 3 | 4:\n            INTF_NAME_MAP = INTF_NAME_MAP_LB4\n        case 5:\n            INTF_NAME_MAP = INTF_NAME_MAP_LB5\n        case 6:\n            INTF_NAME_MAP = INTF_NAME_MAP_LB6\n        case 7 | 7.1:\n            INTF_NAME_MAP = INTF_NAME_MAP_LB7\n        case 7.2:\n            INTF_NAME_MAP = INTF_NAME_MAP_LBS\n        case _:\n            INTF_NAME_MAP = INTF_NAME_MAP_LB7\n\n\n### Check if latest release\ndef release_check():\n    # Call GitHub API to fetch latest release infos\n    try:\n        resp = requests.get(GITRELEASE_URL.format(GIT_REPO), timeout=1)\n        resp.raise_for_status()     # Check HTTP status code\n        d = resp.json()\n        v = d[\"tag_name\"]\n    except Exception as e:\n        LmTools.error(f\"Cannot get latest release infos. Error: {e}\")\n        return\n\n    # Convert version string into hex int aligned with __build__ representation\n    s = v.split(\".\")\n    l = len(s)\n    major = s[0]\n    if l >= 2:\n        minor = s[1]\n    else:\n        minor = \"00\"\n    if l >= 3:\n        patch = s[2]\n    else:\n        patch = \"00\"\n    try:\n        r = int(major.zfill(2) + minor.zfill(2) + patch.zfill(2), 16)\n    except Exception as e:\n        LmTools.error(f\"Cannot decode latest release infos. Error: {e}\")\n        return\n\n    # Warn if this release is not the latest\n    if (r > __build__) and (LmConf.NoReleaseWarning != r):\n        release_warning_dialog = ReleaseWarningDialog(v)\n        if release_warning_dialog.exec():\n            return\n        # User decided to not be warned again, remember in config\n        LmConf.NoReleaseWarning = r\n        LmConf.save()\n\n\n### Get a cross platform 32 bytes unique hardware key as base64 string\ndef get_hardware_key():\n    # Use platform calls to get a unique string\n    hardware_id = platform.system() + platform.machine() + platform.node() + platform.processor()\n\n    # Hashing to 32 bytes array\n    hardware_hash = hashlib.sha256(hardware_id.encode(\"utf-8\")).digest()\n\n    # Return as 44-chars base64 string\n    return base64.urlsafe_b64encode(hardware_hash).decode(\"utf-8\")\n\n\n\n# ################################ Config Class ################################\nclass LmConf:\n    Secret = None\n    CacheDir = None\n    Profiles = None\n    CurrProfile = None\n    LiveboxURL = DCFG_LIVEBOX_URL\n    LiveboxUser = DCFG_LIVEBOX_USER\n    LiveboxPassword = DCFG_LIVEBOX_PASSWORD\n    LiveboxMAC = \"\"\n    FilterDevices = DCFG_FILTER_DEVICES\n    OnlyActiveDevices = DCFG_ONLY_ACTIVE_DEVICES\n    MacAddrTableFile = DCFG_MACADDR_TABLE_FILE\n    MacAddrTable = {}\n    SpamCallsTable = []\n    Language = DCFG_LANGUAGE\n    Tooltips = DCFG_TOOLTIPS\n    StatsFrequency = DCFG_STATS_FREQUENCY\n    MacAddrApiKey = DCFG_MACADDR_API_KEY\n    CallFilterApiKey = DCFG_CALLFILTER_API_KEY\n    PhoneCode = DCFG_PHONE_CODE\n    ListHeaderHeight = DCFG_LIST_HEADER_HEIGHT\n    ListHeaderFontSize = DCFG_LIST_HEADER_FONT_SIZE\n    ListLineHeight = DCFG_LIST_LINE_HEIGHT\n    ListLineFontSize = DCFG_LIST_LINE_FONT_SIZE\n    RealtimeWifiStats = DCFG_REALTIME_WIFI_STATS\n    RealtimeWifiStats_save = RealtimeWifiStats  # Need to decouple saving as master value must not be changed live\n    NativeUIStyle = DCFG_NATIVE_UI_STYLE\n    LogLevel = DCFG_LOG_LEVEL\n    NoReleaseWarning = DCFG_NO_RELEASE_WARNING\n    Repeaters = DCFG_REPEATERS\n    Graph = DCFG_GRAPH\n    Tabs = DCFG_TABS\n    AllDeviceIconsLoaded = False\n    NotificationRules = DCFG_NOTIFICATION_RULES\n    NotificationFlushFrequency = DCFG_NOTIFICATION_FLUSH_FREQUENCY\n    NotificationFilePath = DCFG_NOTIFICATION_FILE_PATH\n    Email = DCFG_EMAIL\n    NativeRun = True    # Run mode - Python script (True) / PyPI package (False)\n    CsvDelimiter = DCFG_CSV_DELIMITER\n    TimeoutMargin = DCFG_TIMEOUT_MARGIN\n    PreventSleep = DCFG_PREVENT_SLEEP\n    SavePasswords = DCFG_SAVE_PASSWORDS\n\n\n    ### Load configuration, returns False the program aborts starting\n    @staticmethod\n    def load():\n        # First load secret key\n        if not LmConf.load_key():\n            return False\n\n        config_file = None\n        dirty_config = False\n        config_file_path = os.path.join(LmConf.get_config_directory(), CONFIG_FILE)\n        LmTools.log_debug(1, \"Reading configuration in\", config_file_path)\n        try:\n            config_file = open(config_file_path)\n            config = json.load(config_file)\n        except OSError:\n            LmTools.error(\"No configuration file, creating one.\")\n            dirty_config = True\n        except Exception as e:\n            LmTools.error(str(e))\n            if LmQtTools.ask_question(mx(\"Wrong {} file, fully reset it?\", \"wrongFile\").format(CONFIG_FILE)):\n                dirty_config = True\n            else:\n                if config_file is not None:\n                    config_file.close()\n                return False\n        else:\n            # Try to load language as soon as possible\n            p = config.get(\"Language\")\n            if p is not None:\n                LmConf.Language = str(p)\n                if LmConf.Language not in LmLanguages.LANGUAGES_KEY:\n                    LmConf.Language = DCFG_LANGUAGE\n            LmLanguages.set_language(LmConf.Language)\n\n            # Check if config version is more recent than the application\n            config_version = config.get(\"Version\", 0)\n            if config_version > __build__:\n                if not LmQtTools.ask_question(mx(\"This version of the application is older than the configuration file.\\n\"\n                                                 \"If you continue you might lose some setup.\\n\"\n                                                 \"Are you sure you want to continue?\", \"configVersion\")):\n                    return False\n\n            # Potentially convert the format to newer version\n            dirty_config = LmConf.convert(config)\n\n            # Load all configs\n            p = config.get(\"Profiles\")\n            if p is not None:\n                LmConf.Profiles = p\n                ok, dirty = LmConf.select_profile()\n                if ok:\n                    if dirty:\n                        dirty_config = True\n                else:\n                    return False\n            if LmConf.CurrProfile is None:\n                raise Exception(\"No profile detected\")\n            p = config.get(\"Tooltips\")\n            if p is not None:\n                LmConf.Tooltips = bool(p)\n            p = config.get(\"Stats Frequency\")\n            if p is not None:\n                LmConf.StatsFrequency = int(p)\n            p = config.get(\"MacAddr API Key\")\n            if p is not None:\n                LmConf.MacAddrApiKey = p\n            p = config.get(\"CallFilter API Key\")\n            if p is not None:\n                LmConf.CallFilterApiKey = p\n            p = config.get(\"Phone Code\")\n            if p is not None:\n                LmConf.PhoneCode = str(p)\n            p = config.get(\"List Header Height\")\n            if p is not None:\n                LmConf.ListHeaderHeight = int(p)\n            p = config.get(\"List Header Font Size\")\n            if p is not None:\n                LmConf.ListHeaderFontSize = int(p)\n            p = config.get(\"List Line Height\")\n            if p is not None:\n                LmConf.ListLineHeight = int(p)\n            p = config.get(\"List Line Font Size\")\n            if p is not None:\n                LmConf.ListLineFontSize = int(p)\n            p = config.get(\"Realtime Wifi Stats\")\n            if p is not None:\n                LmConf.RealtimeWifiStats = bool(p)\n                LmConf.RealtimeWifiStats_save = LmConf.RealtimeWifiStats\n            p = config.get(\"Native UI Style\")\n            if p is not None:\n                LmConf.NativeUIStyle = bool(p)\n            p = config.get(\"Log Level\")\n            if p is not None:\n                LmConf.LogLevel = int(p)\n                if LmConf.LogLevel < 0:\n                    LmConf.LogLevel = 0\n                elif LmConf.LogLevel > 2:\n                    LmConf.LogLevel = 2\n                LmTools.set_verbosity(LmConf.LogLevel)\n            p = config.get(\"No Release Warning\")\n            if p is not None:\n                LmConf.NoReleaseWarning = int(p)\n            p = config.get(\"Repeaters\")\n            if p is not None:\n                LmConf.Repeaters = p\n            p = config.get(\"Graph\")\n            if p is not None:\n                LmConf.Graph = p\n            p = config.get(\"Tabs\")\n            if p is not None:\n                LmConf.Tabs = p\n            p = config.get(\"NotificationRules\")\n            if p is not None:\n                LmConf.NotificationRules = p\n            p = config.get(\"NotificationFlushFrequency\")\n            if p is not None:\n                LmConf.NotificationFlushFrequency = int(p)\n            p = config.get(\"NotificationFilePath\")\n            if p is not None:\n                LmConf.NotificationFilePath = p\n            p = config.get(\"email\")\n            if p is not None:\n                LmConf.Email = p\n            p = config.get(\"CSV Delimiter\")\n            if p is not None:\n                LmConf.CsvDelimiter = str(p)\n                if len(LmConf.CsvDelimiter):\n                    LmConf.CsvDelimiter = LmConf.CsvDelimiter[0]\n                else:\n                    LmConf.CsvDelimiter = DCFG_CSV_DELIMITER\n            p = config.get(\"Timeout Margin\")\n            if p is not None:\n                LmConf.TimeoutMargin = int(p)\n                if LmConf.TimeoutMargin < 0:\n                    LmConf.TimeoutMargin = 0\n            p = config.get(\"Prevent Sleep\")\n            if p is not None:\n                LmConf.PreventSleep = bool(p)\n            p = config.get(\"Save Passwords\")\n            if p is not None:\n                LmConf.SavePasswords = bool(p)\n\n        if config_file is not None:\n            config_file.close()\n\n        if dirty_config:\n            LmConf.save()\n\n        LmConf.apply()\n\n        return True\n\n\n    ### Load key file, creating one if not present, returns False if fails\n    @staticmethod\n    def load_key():\n        config_path = LmConf.get_config_directory()\n        key_file = None\n        key = None\n        key_file_path = os.path.join(config_path, KEY_FILE)\n\n        # Get unique hardware key\n        hw_key = get_hardware_key()\n\n        # Read file if it exists\n        LmTools.log_debug(1, \"Reading key file in\", key_file_path)\n        try:\n            key_file = open(key_file_path, \"rb\")\n            key = key_file.read()\n            key_file.close()\n        except OSError:\n            LmTools.error(\"No key file, creating one.\")\n            key = None\n        except Exception as e:\n            LmTools.error(str(e))\n            LmQtTools.display_error(mx(\"Cannot read key file.\", \"keyFileErr\"))\n            if key_file is not None:\n                key_file.close()\n                return False\n        else:\n            # Decrypt key to get secret\n            try:\n                LmConf.Secret = Fernet(hw_key.encode(\"utf-8\")).decrypt(key).decode(\"utf-8\")\n            except Exception:\n                LmTools.error(\"Invalid key file, recreating it.\")\n            else:\n                return True\n\n        # Create config directory if doesn't exist\n        if not os.path.isdir(config_path):\n            LmTools.log_debug(1, \"Creating config directory\", config_path)\n            try:\n                os.makedirs(config_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create configuration folder. Error: {e}\")\n                LmQtTools.display_error(mx(\"Cannot create configuration folder.\", \"configFolderErr\"))\n                return False\n\n        # Create key file\n        LmConf.Secret = Fernet.generate_key().decode()\n        key = Fernet(hw_key.encode(\"utf-8\")).encrypt(LmConf.Secret.encode(\"utf-8\"))\n        LmTools.log_debug(1, \"Creating key file\", key_file_path)\n        try:\n            with open(key_file_path, \"wb\") as key_file:\n                key_file.write(key)\n        except Exception as e:\n            LmTools.error(f\"Cannot save key file. Error: {e}\")\n\n        return True\n\n\n    ### Apply immediate actions derived from configuration\n    @staticmethod\n    def apply():\n        LmLanguages.set_language(LmConf.Language)\n        LmSession.set_timeout_margin(LmConf.TimeoutMargin)\n\n\n    ### Apply decoupled saved values after application auto restarts following pref's change\n    @staticmethod\n    def apply_saved_prefs():\n        LmConf.RealtimeWifiStats = LmConf.RealtimeWifiStats_save\n\n\n    ### Select a profile in the profile list depending on default parameters\n    #   Returns a tuple of 2 booleans: 1/ False if user cancels, 2/ True if config needs to be saved\n    @staticmethod\n    def select_profile():\n        # First search for a default profile\n        LmConf.CurrProfile = next((p for p in LmConf.Profiles if p[\"Default\"]), None)\n\n        # Find dynamically if no default, take the first\n        if LmConf.CurrProfile is None:\n            # First collect reachable profiles and those matching Livebox's MAC address\n            LmQtTools.mouse_cursor_busy()\n            for p in LmConf.Profiles:\n                livebox_mac = LiveboxInfoApi.get_livebox_mac_nosign(p.get(\"Livebox URL\"))\n                if (livebox_mac is not None) and (livebox_mac == p.get(\"Livebox MacAddr\")):\n                    LmConf.CurrProfile = p\n                    break\n            LmQtTools.mouse_cursor_normal()\n\n        # If no match/default found or if Ctrl key pressed, ask for it\n        modifiers = QtGui.QGuiApplication.queryKeyboardModifiers()\n        dirty_config = False\n        if (LmConf.CurrProfile is None) or (modifiers == QtCore.Qt.KeyboardModifier.ControlModifier):\n            r = LmConf.ask_profile()\n            if r == 0:\n                return False, False\n            elif r == 2:\n                if LmConf.create_profile():\n                    dirty_config = True\n                else:\n                    return False, False\n\n        if LmConf.CurrProfile is not None:\n            LmConf.assign_profile()\n\n        return True, dirty_config\n\n\n    ### Ask user to choose a profile, returns 0 if user cancels, 1 if one selected, 2 if need to create a new one\n    @staticmethod\n    def ask_profile():\n        if len(LmConf.Profiles) == 0:\n            return 1\n\n        from LiveboxMonitor.dlg.LmSelectProfile import SelectProfileDialog\n\n        select_profile_dialog = SelectProfileDialog()\n        if select_profile_dialog.exec():\n            if select_profile_dialog.do_create_profile():\n                return 2\n            LmConf.CurrProfile = LmConf.Profiles[select_profile_dialog.profile_index()]\n            return 1\n        return 0\n\n\n    ### Create a new profile, return False is user cancelled\n    #staticmethod\n    def create_profile():\n        # Loop until finding a unique name or user cancels\n        while True:\n            name, ok = QtWidgets.QInputDialog.getText(None, lx(\"Create Profile\"), lx(\"Profile name:\"))\n            if ok:\n                q = next((p for p in LmConf.Profiles if p[\"Name\"] == name), None)\n                if q is None:\n                    break\n                else:\n                    LmQtTools.display_error(mx(\"This name is already used.\", \"profileNameErr\"))\n            else:\n                return False\n\n        # Create a new profile with default values\n        p = {}\n        p[\"Name\"] = name\n        p[\"Livebox URL\"] = DCFG_LIVEBOX_URL\n        p[\"Livebox User\"] = DCFG_LIVEBOX_USER\n        p[\"Filter Devices\"] = DCFG_FILTER_DEVICES\n        p[\"Only Active Devices\"] = DCFG_ONLY_ACTIVE_DEVICES\n        p[\"MacAddr Table File\"] = DCFG_MACADDR_TABLE_FILE\n        p[\"Default\"] = False\n        LmConf.Profiles.append(p)\n        LmConf.CurrProfile = p\n\n        return True\n\n\n    ### Assign parameters depending on current profile\n    @staticmethod\n    def assign_profile():\n        LmConf.LiveboxURL = LmTools.clean_url(LmConf.CurrProfile.get(\"Livebox URL\", DCFG_LIVEBOX_URL))\n        LmConf.LiveboxUser = LmConf.CurrProfile.get(\"Livebox User\", DCFG_LIVEBOX_USER)\n\n        p = LmConf.CurrProfile.get(\"Livebox Password\")\n        if p is not None:\n            try:\n                LmConf.LiveboxPassword = Fernet(LmConf.Secret.encode(\"utf-8\")).decrypt(p.encode(\"utf-8\")).decode(\"utf-8\")\n            except Exception:\n                LmTools.error(\"Cannot decrypt Livebox password.\")\n                LmConf.LiveboxPassword = DCFG_LIVEBOX_PASSWORD\n        else:\n            LmConf.LiveboxPassword = DCFG_LIVEBOX_PASSWORD\n\n        LmConf.LiveboxMAC = LmConf.CurrProfile.get(\"Livebox MacAddr\", \"\")\n        LmConf.FilterDevices = LmConf.CurrProfile.get(\"Filter Devices\", DCFG_FILTER_DEVICES)\n        LmConf.OnlyActiveDevices = LmConf.CurrProfile.get(\"Only Active Devices\", DCFG_ONLY_ACTIVE_DEVICES)\n        LmConf.MacAddrTableFile = LmConf.CurrProfile.get(\"MacAddr Table File\", DCFG_MACADDR_TABLE_FILE)\n        if len(LmConf.MacAddrTableFile) == 0:\n            LmConf.MacAddrTableFile = DCFG_MACADDR_TABLE_FILE\n\n\n    ### Adapt config format to latest version, returns True is changes were done\n    @staticmethod\n    def convert(config):\n        dirty_config = False\n        version = config.get(\"Version\")\n\n        if version is None:\n            version = LmConf.convert_for_096(config)\n            dirty_config = True\n\n        if version <= 0x010400:\n            version = LmConf.convert_for_150(config)\n\n        if version < 0x010700:\n            version = LmConf.convert_for_170(config)\n\n        return dirty_config\n\n\n    ### Adapt config format to 0.9.6 version, return corresponding version number\n    @staticmethod\n    def convert_for_096(config):\n        v = 0x000906\n        config[\"Version\"] = v\n\n        # Convert Livebox parameters into main profile\n        profiles = []\n        main_profile = {}\n\n        main_profile[\"Name\"] = lx(\"Main\")\n        main_profile[\"Livebox URL\"] = config.get(\"Livebox URL\", DCFG_LIVEBOX_URL)\n        main_profile[\"Livebox User\"] = config.get(\"Livebox User\", DCFG_LIVEBOX_USER)\n        main_profile[\"Livebox Password\"] = config.get(\"Livebox Password\", DCFG_LIVEBOX_PASSWORD)\n        main_profile[\"Filter Devices\"] = config.get(\"Filter Devices\", DCFG_FILTER_DEVICES)\n        main_profile[\"Only Active Devices\"] = config.get(\"Only Active Devices\", DCFG_ONLY_ACTIVE_DEVICES)\n        main_profile[\"MacAddr Table File\"] = config.get(\"MacAddr Table File\", DCFG_MACADDR_TABLE_FILE)\n        main_profile[\"Default\"] = True\n        profiles.append(main_profile)\n\n        config[\"Profiles\"] = profiles\n\n        return v\n\n\n    ### Adapt config format to 1.5.0 version, return corresponding version number\n    @staticmethod\n    def convert_for_150(config):\n        v = 0x010500\n        config[\"Version\"] = v\n\n        # Remove all profile passwords following security key management evolution\n        profiles = config.get(\"Profiles\")\n        if profiles is not None:\n            for p in profiles:\n                p[\"Livebox Password\"] = None\n\n        # Remove all repeaters passwords following security key management evolution\n        repeaters = config.get(\"Repeaters\")\n        if repeaters is not None:\n            for r in repeaters:\n                repeaters[r][\"Password\"] = None\n\n        return v\n\n\n    ### Adapt config format to 1.7.0 version, return corresponding version number\n    @staticmethod\n    def convert_for_170(config):\n        v = 0x010700\n        config[\"Version\"] = v\n\n        # Set display only active devices field for all profiles\n        profiles = config.get(\"Profiles\")\n        if profiles is not None:\n            for p in profiles:\n                p[\"Only Active Devices\"] = DCFG_ONLY_ACTIVE_DEVICES\n\n        return v\n\n\n    ### Save configuration file\n    @staticmethod\n    def save():\n        config_path = LmConf.get_config_directory()\n\n        # Create config directory if doesn't exist\n        if not os.path.isdir(config_path):\n            LmTools.log_debug(1, \"Creating config directory\", config_path)\n            try:\n                os.makedirs(config_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create configuration folder. Error: {e}\")\n                return\n\n        config_file_path = os.path.join(config_path, CONFIG_FILE)\n        LmTools.log_debug(1, \"Saving configuration in\", config_file_path)\n        try:\n            with open(config_file_path, \"w\") as config_file:\n                config = {}\n                config[\"Version\"] = __build__\n                if LmConf.CurrProfile is None:\n                    LmConf.CurrProfile = {}\n                    LmConf.CurrProfile[\"Name\"] = lx(\"Main\")\n                    LmConf.CurrProfile[\"Default\"] = True\n                LmConf.CurrProfile[\"Livebox URL\"] = LmConf.LiveboxURL\n                LmConf.CurrProfile[\"Livebox User\"] = LmConf.LiveboxUser\n                if LmConf.SavePasswords:\n                    LmConf.CurrProfile[\"Livebox Password\"] = Fernet(LmConf.Secret.encode(\"utf-8\")).encrypt(LmConf.LiveboxPassword.encode(\"utf-8\")).decode(\"utf-8\")\n                else:\n                    LmConf.CurrProfile[\"Livebox Password\"] = None\n                LmConf.CurrProfile[\"Livebox MacAddr\"] = LmConf.LiveboxMAC\n                LmConf.CurrProfile[\"Filter Devices\"] = LmConf.FilterDevices\n                LmConf.CurrProfile[\"Only Active Devices\"] = LmConf.OnlyActiveDevices\n                LmConf.CurrProfile[\"MacAddr Table File\"] = LmConf.MacAddrTableFile\n                if LmConf.Profiles is None:\n                    LmConf.Profiles = []\n                    LmConf.Profiles.append(LmConf.CurrProfile)\n                config[\"Profiles\"] = LmConf.Profiles\n                config[\"Language\"] = LmConf.Language\n                config[\"Tooltips\"] = LmConf.Tooltips\n                config[\"Stats Frequency\"] = LmConf.StatsFrequency\n                config[\"MacAddr API Key\"] = LmConf.MacAddrApiKey\n                config[\"CallFilter API Key\"] = LmConf.CallFilterApiKey\n                config[\"Phone Code\"] = LmConf.PhoneCode\n                config[\"List Header Height\"] = LmConf.ListHeaderHeight\n                config[\"List Header Font Size\"] = LmConf.ListHeaderFontSize\n                config[\"List Line Height\"] = LmConf.ListLineHeight\n                config[\"List Line Font Size\"] = LmConf.ListLineFontSize\n                config[\"Realtime Wifi Stats\"] = LmConf.RealtimeWifiStats_save\n                config[\"Native UI Style\"] = LmConf.NativeUIStyle\n                config[\"Log Level\"] = LmConf.LogLevel\n                config[\"No Release Warning\"] = LmConf.NoReleaseWarning\n                config[\"Repeaters\"] = LmConf.Repeaters\n                config[\"Graph\"] = LmConf.Graph\n                config[\"Tabs\"] = LmConf.Tabs\n                config[\"NotificationRules\"] = LmConf.NotificationRules\n                config[\"NotificationFlushFrequency\"] = LmConf.NotificationFlushFrequency\n                config[\"NotificationFilePath\"] = LmConf.NotificationFilePath\n                config[\"email\"] = LmConf.Email\n                config[\"CSV Delimiter\"] = LmConf.CsvDelimiter\n                config[\"Timeout Margin\"] = LmConf.TimeoutMargin\n                config[\"Prevent Sleep\"] = LmConf.PreventSleep\n                config[\"Save Passwords\"] = LmConf.SavePasswords\n                json.dump(config, config_file, indent=4)\n        except Exception as e:\n            LmTools.error(f\"Cannot save configuration file. Error: {e}\")\n\n\n    ### Set Livebox password\n    @staticmethod\n    def set_livebox_url(url):\n        LmConf.LiveboxURL = url\n        LmConf.save()\n\n\n    ### Set Livebox password\n    @staticmethod\n    def set_livebox_user_password(user, password):\n        LmConf.LiveboxUser = user\n        LmConf.LiveboxPassword = password\n        LmConf.save()\n\n\n    ### Set Livebox MAC address\n    @staticmethod\n    def set_livebox_mac(mac_addr):\n        if LmConf.LiveboxMAC != mac_addr:\n            LmConf.LiveboxMAC = mac_addr\n            LmConf.save()\n\n\n    ### Set log level\n    @staticmethod\n    def set_log_level(level):\n        if level < 0:\n            level = 0\n        elif level > 2:\n            level = 2\n        LmConf.LogLevel = level\n        LmTools.set_verbosity(level)\n        LmConf.save()\n\n\n    ### Get password of a repeater given its MAC address\n    @staticmethod\n    def get_repeater_user_password(mac_addr):\n        # First look up for a specific password\n        if LmConf.Repeaters is not None:\n            repeater_conf = LmConf.Repeaters.get(mac_addr, None)\n            if repeater_conf is not None:\n                user = repeater_conf.get(\"User\", \"\")\n                p = repeater_conf.get(\"Password\")\n                if p is None:\n                    password = LmConf.LiveboxPassword\n                else:\n                    try:\n                        password = Fernet(LmConf.Secret.encode(\"utf-8\")).decrypt(p.encode(\"utf-8\")).decode(\"utf-8\")\n                    except Exception:\n                        LmTools.error(\"Cannot decrypt repeater password.\")\n                        password = LmConf.LiveboxPassword\n                return user, password\n\n        # Defaut to Livebox user & password\n        return LmConf.LiveboxUser, LmConf.LiveboxPassword\n\n\n    ### Set password of a repeater given its MAC address\n    @staticmethod\n    def set_repeater_password(mac_addr, password):\n        # Init repeater conf root if not present\n        if LmConf.Repeaters is None:\n            LmConf.Repeaters = {}\n\n        # Retrieve conf of given repeater, init it if not present\n        repeater_conf = LmConf.Repeaters.get(mac_addr, None)\n        if repeater_conf is None:\n            repeater_conf = {}\n            LmConf.Repeaters[mac_addr] = repeater_conf\n\n        # Init user name if not present\n        user = repeater_conf.get(\"User\")\n        if user is None:\n            repeater_conf[\"User\"] = LmConf.LiveboxUser\n\n        # Setup password\n        if LmConf.SavePasswords:\n            repeater_conf[\"Password\"] = Fernet(LmConf.Secret.encode(\"utf-8\")).encrypt(password.encode(\"utf-8\")).decode(\"utf-8\")\n        else:\n            repeater_conf[\"Password\"] = None\n\n        # Save to config file\n        LmConf.save()\n\n\n    ### Load MAC address table\n    @staticmethod\n    def load_mac_addr_table():\n        mac_addr_table_file_path = os.path.join(LmConf.get_config_directory(), LmConf.MacAddrTableFile)\n        try:\n            with open(mac_addr_table_file_path) as mac_table_file:\n                LmConf.MacAddrTable = json.load(mac_table_file)\n        except OSError:     # No file\n            LmConf.MacAddrTable = {}\n        except Exception as e:\n            LmQtTools.display_error(mx(\"Wrong {} file format, cannot use.\", \"wrongMacFile\").format(LmConf.MacAddrTableFile))\n            LmConf.MacAddrTable = {}\n\n\n    ### Save MAC address table\n    @staticmethod\n    def save_mac_addr_table():\n        config_path = LmConf.get_config_directory()\n\n        # Create config directory if doesn't exist\n        if not os.path.exists(config_path):\n            try:\n                os.makedirs(config_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create configuration folder. Error: {e}\")\n                return\n\n        mac_addr_table_file_path = os.path.join(config_path, LmConf.MacAddrTableFile)\n        try:\n            with open(mac_addr_table_file_path, \"w\") as mac_table_file:\n                json.dump(LmConf.MacAddrTable, mac_table_file, indent=4)\n        except Exception as e:\n            LmTools.error(f\"Cannot save MacAddress file. Error: {e}\")\n\n\n    ### Load spam calls table\n    @staticmethod\n    def load_spam_calls_table():\n        spam_calls_table_file_path = os.path.join(LmConf.get_config_directory(), SPAMCALLS_FILE)\n        try:\n            with open(spam_calls_table_file_path) as f:\n                t = json.load(f)\n                if isinstance(t, list):\n                    LmConf.SpamCallsTable = t\n                else:\n                    LmQtTools.display_error(mx(\"Wrong {} file format, cannot use.\", \"wrongSpamCallsFile\").format(SPAMCALLS_FILE))\n                    LmConf.SpamCallsTable = []\n        except OSError:     # No file\n            LmConf.SpamCallsTable = []\n        except Exception as e:\n            LmQtTools.display_error(mx(\"Wrong {} file format, cannot use.\", \"wrongSpamCallsFile\").format(SPAMCALLS_FILE))\n            LmConf.SpamCallsTable = []\n\n\n    ### Declare a phone nb as spam\n    @staticmethod\n    def set_spam_call(phone_nb):\n        if phone_nb not in LmConf.SpamCallsTable:\n            LmConf.SpamCallsTable.append(phone_nb)\n            LmConf.save_spam_calls_table()\n\n\n    ### Undeclare a phone nb as spam\n    @staticmethod\n    def unset_spam_call(phone_nb):\n        if phone_nb in LmConf.SpamCallsTable:\n            LmConf.SpamCallsTable.remove(phone_nb)\n            LmConf.save_spam_calls_table()\n\n\n    ### Save spam calls table\n    @staticmethod\n    def save_spam_calls_table():\n        config_path = LmConf.get_config_directory()\n\n        # Create config directory if doesn't exist\n        if not os.path.exists(config_path):\n            try:\n                os.makedirs(config_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create configuration folder. Error: {e}\")\n                return\n\n        spam_calls_table_file_path = os.path.join(config_path, SPAMCALLS_FILE)\n        try:\n            with open(spam_calls_table_file_path, \"w\") as f:\n                json.dump(LmConf.SpamCallsTable, f, indent = 4)\n        except Exception as e:\n            LmTools.error(f\"Cannot save spam calls file. Error: {e}\")\n\n\n    ### Set native run\n    @staticmethod\n    def set_native_run(native_run):\n        LmConf.NativeRun = native_run\n\n\n    ### Determine config files directory\n    @staticmethod\n    def get_config_directory():\n        if hasattr(sys, \"frozen\") or not LmConf.NativeRun:\n            # If program is built with PyInstaller, use standard OS dirs\n            system =  platform.system()\n            if system == \"Windows\":\n                return os.path.join(os.environ[\"APPDATA\"], \"LiveboxMonitor\")\n            elif system == \"Darwin\":\n                return os.path.join(os.path.expanduser(\"~\"), \"Library\", \"Application Support\", \"LiveboxMonitor\")\n            else:\n                return os.path.join(os.path.expanduser(\"~\"), \".config\", \"LiveboxMonitor\")\n        else:\n            # If program is Python script mode, use local dir\n            return \".\"\n\n\n    ### Set cache directory\n    @staticmethod\n    def set_cache_directory(lb_soft_version):\n        LmConf.CacheDir = os.path.join(LmConf.get_config_directory(), LIVEBOX_CACHE_DIR + lb_soft_version)\n\n\n    ### Get cache directory\n    @staticmethod\n    def get_cache_directory():\n        return LmConf.CacheDir\n\n\n    ### Get a device icon from cache file\n    @staticmethod\n    def get_device_icon_cache(device):\n        icon_pixmap = None\n        icon_dir_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_ICON_CACHE_DIR)\n        icon_file_path = os.path.join(icon_dir_path, device[\"Icon\"])\n        if os.path.isfile(icon_file_path):\n            icon_pixmap = QtGui.QPixmap()\n            if not icon_pixmap.load(icon_file_path):\n                icon_pixmap = None\n                LmTools.error(f\"Cannot load device icon cache file {icon_file_path}. Cache file will be recreated.\")\n        return icon_pixmap\n\n\n    ### Set a device icon to cache file\n    @staticmethod\n    def set_device_icon_cache(device, content):\n        icon_dir_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_ICON_CACHE_DIR)\n        icon_file_path = os.path.join(icon_dir_path, device[\"Icon\"])\n\n        # Create icon cache directory if doesn't exist\n        if not os.path.isdir(icon_dir_path):\n            try:\n                os.makedirs(icon_dir_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create icon cache folder {icon_dir_path}. Error: {e}\")\n                return\n\n        # Create and save icon cache file\n        try:\n            with open(icon_file_path, \"wb\") as icon_file:\n                icon_file.write(content)\n        except Exception as e:\n            LmTools.error(f\"Cannot save icon cache file {icon_file_path}. Error: {e}\")\n\n\n    ### Get a device icon\n    @staticmethod\n    def get_device_icon(device):\n        if LmConf.AllDeviceIconsLoaded:\n            return device[\"PixMap\"]\n        else:\n            icon_pixmap = device.get(\"PixMap\", None)\n\n            # First try to get icon from local cache\n            if icon_pixmap is None:\n                icon_pixmap = LmConf.get_device_icon_cache(device)\n\n            # Ultimately load the icon from Livebox URL\n            if icon_pixmap is None:\n                icon_pixmap = QtGui.QPixmap()\n                store_in_cache = False\n                try:\n                    icon_data = requests.get(LmConf.LiveboxURL + ICON_URL + device[\"Icon\"],\n                                             timeout=DEFAULT_TIMEOUT + LmConf.TimeoutMargin,\n                                             verify=LmConf.LiveboxURL.startswith(\"http://\"))\n                    if icon_pixmap.loadFromData(icon_data.content):\n                        store_in_cache = True\n                    else:\n                        LmTools.error(f\"Cannot load device icon {device['Icon']}.\")\n                except requests.exceptions.Timeout as e:\n                    LmTools.error(f\"Device icon {device['Icon']} request timeout error: {e}.\")\n                except Exception as e:\n                    LmTools.error(f\"{e}. Cannot request device icon {device['Icon']}.\")\n\n                # If successfully loaded, try to store in local cache file for faster further loads\n                if store_in_cache:\n                    LmConf.set_device_icon_cache(device, icon_data.content)\n\n            device[\"PixMap\"] = icon_pixmap\n            return icon_pixmap\n\n\n    ### Load all device icons\n    @staticmethod\n    def load_device_icons():\n        if not LmConf.AllDeviceIconsLoaded:\n            for d in DEVICE_TYPES:\n                LmConf.get_device_icon(d)\n\n            LmConf.AllDeviceIconsLoaded = True\n\n\n    ### Load custom device icons\n    @staticmethod\n    def load_custom_device_icons():\n        global DEVICE_TYPES\n\n        # Get custom icon directory path\n        custom_icon_dir_path = os.path.join(LmConf.get_config_directory(), CUSTOM_ICON_DIR)\n        if not os.path.isdir(custom_icon_dir_path):\n            return\n\n        # Iterate over all files in the custom icon directory\n        sort_device_types = False\n        for f in os.listdir(custom_icon_dir_path):\n            icon_file_name = os.fsdecode(f)\n            if icon_file_name.endswith(\".png\"):\n                icon_file_path = os.path.join(custom_icon_dir_path, icon_file_name)\n                icon_pixmap = QtGui.QPixmap()\n                if icon_pixmap.load(icon_file_path):\n                    # Search if device icon name is already referenced\n                    create_device_entry = True\n                    for d in DEVICE_TYPES:\n                        if d[\"Icon\"] == icon_file_name:\n                            create_device_entry = False\n                            d[\"PixMap\"] = icon_pixmap\n\n                    # Search if device name is already referenced as key\n                    device_name = os.path.splitext(icon_file_name)[0]\n                    if create_device_entry:\n                        for d in DEVICE_TYPES:\n                            if d[\"Key\"] == device_name:\n                                create_device_entry = False\n                                d[\"Icon\"] = icon_file_name\n                                d[\"PixMap\"] = icon_pixmap\n                                break\n\n                    # If doesn't exit, create it\n                    if create_device_entry:\n                        device = {}\n                        device[\"Key\"] = device_name\n                        device[\"Name\"] = device_name\n                        device[\"Icon\"] = icon_file_name\n                        device[\"PixMap\"] = icon_pixmap\n                        DEVICE_TYPES.append(device)\n                        sort_device_types = True\n                else:\n                    LmTools.error(f\"Cannot load custom device icon {icon_file_path}.\")\n\n        # Resort device type list if required\n        if sort_device_types:\n            DEVICE_TYPES = sorted(DEVICE_TYPES, key = lambda x: x[\"Name\"])\n\n\n    ### Load, check and return email configuration\n    @staticmethod\n    def load_email_setup():\n        if LmConf.Email is None:\n            return None\n\n        c = LmConf.Email\n        e = {}\n\n        e[\"From\"] = c.get(\"From\", \"\")\n        e[\"To\"] = c.get(\"To\", \"\")\n        e[\"Prefix\"] = c.get(\"Prefix\", \"[LiveboxMonitor] \")\n        e[\"Server\"] = c.get(\"Server\", \"\")\n        e[\"Port\"] = c.get(\"Port\", 587)\n        e[\"TLS\"] = c.get(\"TLS\", True)\n        e[\"SSL\"] = c.get(\"SSL\", False)\n        e[\"Authentication\"] = c.get(\"Authentication\", True)\n        e[\"User\"] = c.get(\"User\", \"\")\n\n        password = \"\"\n        p = c.get(\"Password\")\n        if p is not None:\n            try:\n                password = Fernet(LmConf.Secret.encode(\"utf-8\")).decrypt(p.encode(\"utf-8\")).decode(\"utf-8\")\n            except Exception:\n                LmTools.error(\"Cannot decrypt email password.\")\n        e[\"Password\"] = password\n\n        return e\n\n\n    ### Set email configuration\n    @staticmethod\n    def set_email_setup(email_setup):\n        p = email_setup[\"Password\"]\n        try:\n            email_setup[\"Password\"] = Fernet(LmConf.Secret.encode(\"utf-8\")).encrypt(p.encode(\"utf-8\")).decode(\"utf-8\")\n        except Exception:\n            LmTools.error(\"Cannot encrypt email password.\")\n            email_setup[\"Password\"] = \"\"\n        LmConf.Email = email_setup\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmGenApiDocumentation.py",
    "content": "### Livebox Monitor module to generate API documentation ###\n\nimport os\nimport json\n\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\nSERVICES = [\n    \"AccountManager\",\n    \"Audiphone\",\n    \"AutoDiag\",\n    \"BulkData\",\n    \"CaptivePortal\",\n    \"ConMon\",\n    \"Conntrack\",\n    \"CPUStats\",\n    \"CupsService\",              # LB5 only\n    \"DECT\",                     # LB5 only\n    \"DeviceInfo\",\n    \"DeviceLookup\",\n    \"DeviceManagement\",\n    \"DeviceManager\",\n    \"Devices\",\n    \"BCMPlugin\",\n    \"DHCPv4\",\n    \"DHCPv6\",\n    \"DHCPv6Client\",\n    \"DLNA\",\n    \"Dms\",                      #LB6/LB7\n    \"Dms.Configuration\",        #LB6/LB7\n    \"Dms.Database\",             #LB6/LB7\n    \"Dms.Partition\",            #LB6/LB7\n    \"Dms.Streaming\",            #LB6/LB7\n    \"DNS\",\n    \"DNSSD\",\n    \"Domino\",\n    \"Domino.Cellular\",\n    \"Domino.Airbox\",\n    \"Domino.Intf\",\n    \"DSPGDECT\",                 # LB5 only\n    \"DSPPlugin\",\n    \"DummyPlugin\",\n    \"DynDNS\",\n    \"eventmanager\",\n    \"FaultMonitor\",\n    \"Firewall\",\n    \"Flowstats\",\n    \"GenLog\",\n    \"Gpon\",\n    \"History\",\n    \"HomeLan\",\n    \"HTTPService\",\n    \"IEEE1905\",\n    \"Invocation\",\n    \"IoTService\",\n    \"IPPingDiagnostics\",\n    \"IPsec\",\n    \"KMCD\",\n    \"Launcher\",\n    \"LEDs.LED\",                 # LB6/LB7\n    \"LLMNR\",\n    \"Locations\",                # LB6/LB7\n    \"LXCManager\",\n    \"Maculan\",\n    \"ManagementServer\",\n    \"Manifests\",\n    \"MQTTBroker\",\n    \"MQTTMessages\",\n    \"MSS\",\n    \"NeMo\",\n    \"NetDev\",\n    \"NetMaster\",\n    \"NMC\",\n    \"ObjectMonitor\",\n    \"OopsTracker\",\n    \"OrangeDynDNS\",\n    \"OrangeRemoteAccess\",\n    \"OrangeServices\",\n    \"OUI\",\n    \"Pass\",\n    \"PasswordRecovery\",\n    \"Phonebook\",\n    \"PnP\",\n    \"PowerManagement\",          # LB6 only\n    \"PPP\",\n    \"Probe\",\n    \"Process\",\n    \"ProcessMonitor\",\n    \"Profiles\",\n    \"QueueManagement\",\n    \"RemoteAccess\",\n    \"RouterAdvertisement\",\n    \"sah\",\n    \"SAHPairing\",\n    \"SambaService\",\n    \"ServiceInvocation\",        # LB7 only\n    \"Scheduler\",\n    \"Screen\",                   # LB6 only\n    \"SFP\",                      # LB4 only\n    \"SpeedTest\",\n    \"SrvInterface\",\n    \"SSLEServer\",\n    \"SSW\",\n    \"SSW.Steering\",\n    \"SSW.FeatureConfig\",\n    \"StorageService\",\n    \"Time\",\n    \"ToD\",\n    \"TopologyDiagnostics\",\n    \"UDPEchoConfig\",\n    \"Upgrade\",\n    \"UplinkMonitor\",\n    \"UPnP\",\n    \"UPnP-IGD\",\n    \"URLMon\",                   # LB5 only\n    \"USBHosts\",\n    \"UserInterface\",\n    \"UserManagement\",\n    \"VoiceActivation\",\n    \"VoiceService\",\n    \"VoWifi\",\n    \"VPN\",\n    \"WatchDog\",\n    \"WebuiupgradeService\",\n    \"WiFiBCM\",\n    \"WiFiQUAN\",                 # LB5 only\n    \"WLanScheduler\",\n    \"WOL\",\n    \"WOLProxy\"\n]\n\nINDENT = \"  \"\n\n\n\n# ################################ GenApiDoc Class ################################\nclass LmGenApiDoc:\n    def __init__(self, app, folder, filter_value):\n        self._app = app\n        self._api = app._api\n        self._session = self._api._session\n        self._software_version = self._api._info.get_software_version()\n        self._folder = folder\n        self._filter = filter_value\n        self._file = None\n\n\n    ### Generate files for each known service\n    def gen_service_files(self):\n        # Generate for each known service\n        for s in SERVICES:\n            self.gen_service_file(s)\n\n        # Generate for all interfaces\n        try:\n            d = self._api._intf.get_key_list()\n        except Exception as e:\n            LmTools.error(str(e))\n        else:\n            if isinstance(d, list):\n                for m in d:\n                    self.gen_service_file(\"NeMo.Intf.\" + m)\n            else:\n                LmTools.error(\"Bad return from interface list API.\")\n\n\n    ### Generate all services in a flat file\n    def gen_full_file(self):\n        self.gen_service_file(\".\", \"_ALL SERVICES_\")\n\n\n    ### Generate process list file\n    def gen_process_list_file(self):\n        self.gen_service_file(\"*\", \"_PROCESSES_\")\n\n\n    ### Generate JSON result file for a service - useful only to get raw results\n    def gen_service_json_file(self, service, name=None):\n        if name is None:\n            name = service\n\n        try:\n            d = self._session.request(service, get=True, timeout=15)\n        except Exception as e:\n            LmTools.error(str(e))\n            return\n\n        if d is None:\n            return\n\n        # Service doesn't exist error\n        if isinstance(d, dict) and (d.get(\"error\", 0) == 196618):\n            return\n\n        file_path = os.path.join(self._folder, name + \"_json.txt\")\n        try:\n            self._file = open(file_path, \"w\")\n        except Exception as e:\n            LmTools.error(str(e))\n            return\n\n        self._file.write(f\"=== LIVEBOX SOFTWARE VERSION: {self._software_version}\\n\\n\")\n        json.dump(d, self._file, indent = 4)\n\n        try:\n            self._file.close()\n        except Exception as e:\n            LmTools.error(str(e))\n        self._file = None\n\n\n    ### Generate document file for a service\n    def gen_service_file(self, service, name=None):\n        if name is None:\n            name = service\n\n        self._app._task.update(name)\n\n        try:\n            d = self._session.request(service, get=True, timeout=15)\n        except Exception as e:\n            LmTools.error(str(e))\n            return\n\n        if d is None:\n            return\n\n        # Service doesn't exist error\n        if isinstance(d, dict) and (d.get(\"error\", 0) == 196618):  \n            return\n\n        file_path = os.path.join(self._folder, name + \".txt\")\n        try:\n            self._file = open(file_path, \"w\")\n        except Exception as e:\n            LmTools.error(str(e))\n            return\n\n        self._file.write(f\"=== LIVEBOX SOFTWARE VERSION: {self._software_version}\\n\\n\")\n        if not isinstance(d, list):\n            d = [d]\n        for o in d:\n            if not self.gen_object(o):\n                json.dump(o, self._file, indent=4)\n\n        try:\n            self._file.close()\n        except Exception as e:\n            LmTools.error(str(e))\n        self._file = None\n\n\n    ### Generate documentation for an object - return False if not an object\n    def gen_object(self, object_info, instance=False, level=0):\n        o = object_info.get(\"objectInfo\")\n        if o is None:\n            return False\n\n        indent = INDENT * level\n        key_path = o.get(\"keyPath\")\n        key = o.get(\"key\")\n        index_path = o.get(\"indexPath\")\n        name = o.get(\"name\")\n        if instance:\n            self._file.write(f\"{indent}-----------------------------------------------------------------------\\n\")\n            self._file.write(f\"{indent}INSTANCE: {key_path}.{key} - Name: {index_path}.{name}\\n\")\n        else:\n            self._file.write(f\"{indent}=======================================================================\\n\")\n            self._file.write(f\"{indent}OBJECT: {key_path}.{key} - Name: {index_path}.{name}\\n\")\n\n        self.gen_parameters(object_info, level)\n        self.gen_functions(object_info, level)\n        self._file.write(\"\\n\")\n        if not self._filter:\n            self.gen_instances(object_info, level)\n        self.gen_children(object_info, level)\n\n        return True\n\n\n    ### Generate parameters\n    def gen_parameters(self, object_info, level=0):\n        o = object_info.get(\"parameters\")\n        if o:\n            indent = INDENT * level\n            self._file.write(f\"{indent} == PARAMETERS:\\n\")\n            for p in o:\n                self.gen_parameter(p, level + 1)\n\n\n    ### Generate a parameter\n    def gen_parameter(self, param, level=0):\n        indent = INDENT * level\n\n        # Collect values\n        name = param.get(\"name\")\n        type = param.get(\"type\")\n        attributes = \"\"\n        attributes_dict = param.get(\"attributes\")\n        for a in attributes_dict:\n            if attributes_dict[a]:\n                if len(attributes):\n                    attributes += \", \"\n                attributes += a\n        value = param.get(\"value\")\n        validator = param.get(\"validator\")\n\n        # Rendering\n        self._file.write(f\"{indent}- {name} (type: {type})\\n\")\n        indent = INDENT * (level + 2)\n        if len(attributes):\n            self._file.write(f\"{indent}Attributes: {attributes}\\n\")\n        if (not self._filter) and (value is not None):\n            if isinstance(value, str):\n                if len(value):\n                    self._file.write(f\"{indent}Value: '{value}'\\n\")\n            else:\n                self._file.write(f\"{indent}Value: {value}\\n\")\n        if validator is not None:\n            self._file.write(f\"{indent}Validator: {validator}\\n\")\n\n\n    ### Generate functions\n    def gen_functions(self, object_info, level=0):\n        o = object_info.get(\"functions\")\n        if o:\n            indent = INDENT * level\n            self._file.write(f\"{indent} == FUNCTIONS:\\n\")\n            for f in o:\n                self.gen_function(f, level + 1)\n\n\n    ### Generate a function\n    def gen_function(self, func, level=0):\n        indent = INDENT * level\n\n        # Collect values\n        name = func.get(\"name\")\n        return_type = func.get(\"type\")\n        attributes = \"\"\n        attributes_dict = func.get(\"attributes\")\n        for a in attributes_dict:\n            if attributes_dict[a]:\n                if len(attributes):\n                    attributes += \", \"\n                attributes += a\n        arguments = \"\"\n        arguments_dict = func.get(\"arguments\")\n        for a in arguments_dict:\n            if len(arguments):\n                arguments += \", \"\n\n            arg_name = a.get(\"name\")\n            arg_type = a.get(\"type\")\n            arg_optional = True\n            arg_attributes_dict = a.get(\"attributes\")\n            if (arg_attributes_dict is not None) and (arg_attributes_dict.get(\"mandatory\", False)):\n                arg_optional = False\n            if arg_optional:\n                arguments += f\"({arg_type} {arg_name})\"\n            else:\n                arguments += f\"{arg_type} {arg_name}\"\n\n        # Rendering\n        self._file.write(f\"{indent}- {return_type} {name}({arguments})\\n\")\n        indent = INDENT * (level + 2)\n        if len(attributes):\n            self._file.write(f\"{indent}Attributes: {attributes}\\n\")\n\n\n    ### Generate parameters\n    def gen_instances(self, object_info, level=0):\n        o = object_info.get(\"instances\")\n        if o:\n            indent = INDENT * level\n            self._file.write(f\"{indent} == INSTANCES:\\n\")\n            for i in o:\n                self.gen_object(i, True, level + 1)\n\n\n    ### Generate child objects\n    def gen_children(self, object_info, level=0):\n        o = object_info.get(\"children\")\n        if o:\n            for i in o:\n                self.gen_object(i, False, level)\n\n\n    ### Test GET request on some characters\n#   def doTest(self):\n#       self.gen_service_json_file(\".\", \"DOT\")\n#       self.gen_service_json_file(\"*\", \"STAR\")\n#       self.gen_service_json_file(\"!\", \"EXCLAM\")\n#       self.gen_service_json_file(\"#\", \"HASH\")\n#       self.gen_service_json_file(\"`\", \"QUOTE\")\n#       self.gen_service_json_file(\"+\", \"PLUS\")\n#       self.gen_service_json_file(\"@\", \"AT\")\n#       self.gen_service_json_file(\"?\", \"QUESTION\")\n#       self.gen_service_json_file(\"/\", \"SLASH\")\n#       self.gen_service_json_file(\"-\", \"MINUS\")\n#       self.gen_service_json_file(\"~\", \"TILDA\")\n#       self.gen_service_json_file(\"$\", \"DOLLAR\")\n#       self.gen_service_json_file(\"%\", \"PERCENT\")\n#       self.gen_service_json_file(\"^\", \"HAT\")\n#       self.gen_service_json_file(\"&\", \"AND\")\n#       self.gen_service_json_file(\"(\", \"LEFTPAR\")\n#       self.gen_service_json_file(\")\", \"RIGHTPAR\")\n#       self.gen_service_json_file(\"_\", \"UNDERSCORE\")\n#       self.gen_service_json_file(\"=\", \"EGUAL\")\n#       self.gen_service_json_file(\",\", \"COMMA\")\n#       self.gen_service_json_file(\":\", \"COLONN\")\n#       self.gen_service_json_file(\";\", \"SEMICOLONN\")\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmIcons.py",
    "content": "### Livebox Monitor icons module ###\n\nimport base64\n\nfrom PyQt6 import QtGui\n\n\n# ############# Icons #############\n\nclass LmIcon:\n\n    AppIconPixmap = None\n    AppIconData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAC+lBMVEUAAAAECwoAAAAAAAAAAAAA\n        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiVABGYD/ZTgAUBwAAAADk\n        XADbUADbUADYTQBKakQDAQDmWgDgVADbUAAhRDrXTAC6QgDlXQDZTgDaTgDXTAD7YwAtSDfYTABO\n        cEY1EwAsRjbZTgDmWwDXTABEYkEAAADYTQBHZkPeVADmWwLmXAATQ0A2YEVJaETOSABPcEYtRjbf\n        VQDGRgA5VTykOgD0ZAEhRDndUgCKMQAsRjd7KwDXTABbIABGZkLYTQAwEQD/ZgA1UDvbUAA/ZUXx\n        YQDcUgDpYgArZ09TdEj2YADkWwDYTgBkUShoUScgTUHARABDZUT/WwDZTwA6W0DyZgAsRjeqPACu\n        XxNFY0KwPwAjRDkyTTpRckcVWE7XTABLa0VJaUQqRjeoOwAIPkE/XT/XTACrPQDXTAAmRTlRckdw\n        YTDZTQCUWxvjWgBVHgBHZkPoYABJaEQWT0aNVxwDP0M6Vz3/awDhWABkXzIsRjc4FABKakQnRThP\n        HADXTADnXgDlXADkWgDdVADvaADoYADzbQDiWQDcUgDtZgDaTwDqYgD1bwDrZADsZQDgVgDbUQDZ\n        TgDpYQDxawDwaQDhWADfVgDYTQD5dADdUwD2cADfVAD8dwD3cgD3cwDzbAD6dgD9eQBafUv+egDh\n        VwD/WgBQcUdJaEP/bwDmUQDUSwBlilBdgU0rRDf/fgD/cgD1VwBghE5VdkkeVUhOb0ZFY0H6dQD/\n        awDtVABqkFNXeUpSdUlAXT82UDpnUyedXhn/ewD/eADyYwAqaE9Fc00VUUlLa0QpTj6AWCGHXCCS\n        XRylYhrAZA7/dAD5aQD/XgD4WADdTgAzb1E3aEsnWUc/ZkYMSEY6W0BMWjhOTzCAXCO1YBLRaQnN\n        WgjsbAL/dwD/ZQD9WQADT08aXE4xYEguWUQfTUJAWj1bZDprXi+AZCpyWCfJZgzhcAfdYwT5cwD1\n        bADwWgAEY+h3AAAAi3RSTlMABBAkJxkcBx4OCTIiCxQtKg0WVwnSUDeYk2hdSUMjHQv66OTMtq6J\n        iHlzWVlXUkA/PTs4MTErFxb++Pb19ezs1s3HxcO8raiikoZ9b2oqFA8E+/f08/Lu7uzs6+vo6Ojl\n        4eDZ1dTOzMvKx8fEvr69taOenJqYlZCOjYN8dHFoXFpZVEdGQkE+JyUax3TD8wAABiNJREFUWMOl\n        lXVUWmEYxi+Cm05Zd3d3d3d3d3d3d10ERAScA4ewjTmHoiyMhdN1d3d393bO3u97d+8lVLaz5w8O\n        h8Pv9z3vezkfjKesrsT8XyrF1f1PQ9zwfwRyrq1WsEKFCgVr5mRoZsW1/gd6+bRR9Q8cOWzdY7Xu\n        azhxYVf4aFmxuBZ/i5c7duxo0vmYw3t2Hzq0e69134F77WvXWdqi9eSpjKgaVPLIxzUa23RovTu3\n        z1r37N27BwSx9R6qvvXvN29ksQEfjibVn7S4a7rDdxbBq4jJOefjmTNnD8QcOB+bdPT1hUeXT1yM\n        f35sf1JszL4jMe1FjMdUaX76yacHd/fv33/u3PtHjy8mnDj+4tTV++9iYba91l4FPeCdep8OOf3y\n        5fcnJy5dvHTi6ml7fPzl46e2vbhy/+75I9bdh3ZbZ6eHFykpCzRoQ0KUycl2uz3hWsJ1mfHkpePx\n        FsupqxfO3YuhhnFpbzNHgIwKNgQrlWHbVSrdFkuU4cbxywnaYPPJ51/2v7lzxLp3z+GGNdPg58sD\n        ZIGBhA9WbgoDXrdNt8H+LO7ZrxCDQXfq2tPHD9+euX12X0xstVT5vPKAAK4ACrZEqFQJT69cV+pO\n        6lQRP64l/Px65fOgnrGxSZ1T44Pk/ATAb4cCW7ZFWixR8fFRKvOOyIhtW3R2e3Jy81XjHxxt6s7n\n        MwoCfoIIMxh27NgRZYk0m0GgU4WFJZdlllw4Vs5tf6FuAihgBgHgUTssloPmCCLYHqa83ompW6yR\n        C9+lcdqCqJNEEMkLgjetYERjXC6a0uHpCFwaKDcM68bUXefEV1akLsAdQOgOOEFwSFnGJbmowP0p\n        RJAKEDoBCFSqsE3K4OANhsIuG1QrtroLsMLByEjAoQBMwAtC8joLWhJBNAjcfolgMJsPHoQXLLAd\n        BMBre9Rx5GtsVG9WhIPAvQLpQBJBeCxABYZFjoIyVBBqdBRwW9gCJYDehvx2nECrNZR0WqEGBLAE\n        bgYtmYEOQRQYHeX5AoEyhzXW1ms2clvkK5AhqIGLiuP/CPILggJUADME0ecAFbghYAoIpZHfxPMy\n        4TkUmWvS0CU4VaAGToE4f742MFAWICyhRikTzgAV5HQLnIEqaICG45HHAgF9ivIT5GJBwK2RHwIM\n        qMAA7cQHyPktli/OkgqbFcIQaECFEMChP/CBhJfX4m8SluUqhBtxCJyClID8gQHneRnwQVU4wXQQ\n        mDQaNX0QvMFg0KICgzjlAYcCQUErhQZ/KpA9CgYYgyhAQgNvuONllDdWEXaAFXCP0UFoAAVtgRKA\n        gQac8nLCh/I7qJyLVsAhoAM18AqIlsI8jueHhhfhfwelicCEhq04BZYABQ1hKY048o278fdpGZYa\n        cA10D1wJDMIcDrwxOjR8a0uHC5Gl0TsZUIESjgYcjwdekU8QFCE4v0hqwBLUIUQOAXN0aOhWhUKd\n        gxEywdEgKIhDCNJGejzw3R3vtA4A83ugJRRgiDaCA8LBQHP4ZrW6FOOQwqxgEEqgg1oQhu4Eh+PV\n        6o0FnP+XXA2gQAdNNKAEDt9K8M2AbxxS1ElQlXUwEAW2AAdIaBAGmuIaTQfGOaXY1BTgEII04vq+\n        WEBILdYxek4BEiFqQlNcbyrPuGYmcC4lQAESPkhTnM3FuKVocdZZgQ6w8NEQGnATy1YVQPc9Cgpw\n        gIWPHmlIASa15GfdY0ILohCWpgwCaRg8py0HuBv+j4fk0HjEd5Zl0kvtwYmaXWnCu0w3bTkYD5mR\n        +EqfliLRNmV9+rRIxDBrRr+y3XJX7NIn3mhSkWGySTNlFIlShTNmyuaV2Ts7w1RslnIj8ZYTfivF\n        drPEAi/GX+yTwTt7Zi9fsLjghM7u7eMvzirJKM3dpsROm+1myk6SlESbLaVJq44S3yx5/LJklYj9\n        fYgjWyaR0/FSXzg+g79YkjWLn18GrywV27VpVqLBLnZXg4EjWrXrWEgsrl6oeh4/aoAWUEKaEUAX\n        RXbvDD7oyOKT2VuSp1BuSCE/sY/Er3qeP7Q/DiEVZhAcdA1QhGrE8N0MEB9/SdasEolETFHv7F5Q\n        3nmN7h4QZZJKs/n6+nph4F02qTQTgO7kbxLN+3G5d5NGAAAAAElFTkSuQmCC\"\"\"\n\n    TickPixmap = None\n    TickData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAxlBMVEUAAAAAAAAAqhUAXQJU32UA\n        oBIAlA8AhwwPyx8XyygjwDYAmhEAjQ4AXQIAqhUApRQAfQoASgIAqhUAqBQAbQYADgEAAAAAqRUA\n        AABP2mAIkhIHkhBGz1dO1l8R0SIR2SIRyCI9xU7n5+fj4+MRviIRtSLe3t5d5W5c5G3X19c3v0gS\n        niMRriJP12BBylIxukInsDgbqSwRsiIRqiIRpyIRoiL////4+Pjr6+ui16me4qcww0EttT4rszwg\n        xjEcpC0XrygSoiOQ/0eIAAAAHHRSTlMAGczM+8zMzPn83czMvLq6uoNzc3MzEgwJ+d3dEPRlegAA\n        AKNJREFUGNNlyNcSwVAUQNEgiPSe4IpUpHe9/v9POTcyZoz1tjfxz5D5YY+XDRgKTW7BDpC0AkMg\n        V19zAcaYRB9RhtIxHqnTyfdnB+HBoOga5cXD89y4YGBM0O1QvuINdFtO8MhO4bGBbuv6iQd7ScIQ\n        ugkAC2N69xPoxMemeMxsu3Iru4OHOLMsK7A6lAhDXVDrHrVUCULXJG7U4yRNJ8zBD/MNwiEWhSUh\n        NaMAAAAASUVORK5CYII=\"\"\"\n\n    CrossPixmap = None\n    CrossData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n        bWFnZVJlYWR5ccllPAAAAe5JREFUeNqkk89KG1EUxr+ZubnUjJaipgtNtTZKxE1AVIi4yM5tF30H\n        oe/iA3TnQkTBRbZFKApCAl1142CJqLR0ZUNJJpPJZP70nJvcEK0SpAPfzD3n5vedM2dujCRJ8D+X\n        ODIMGMA4aYfibdLkCKZO+kxlP5FcwRla7MytrHxcLhazMp2WT5HcbeB5gVOp5H44Dqd2RdTb217a\n        2Mi6vi/h+6O6lu9WV7M3jsPd7ppsQJqMTVO6rgtWdn8fev1YrpskkhlmzZBuLJ8qN5tNLJfLqgw/\n        OX4sxyaaE2G/L8/z0Gq1cLy4iA+1mjKcOzhQ+RrFpmniy9oaUqkUMpkMNDcwCIIAYRhiwraxNz2N\n        wskJLMtSgJQSZwSr6Xa7aDca/xowHFB7Xr0OO47vwazx4W9PJpozu2xK6hCY3N1hLIqQPz29Bwsh\n        ULq8RJp+x5JUTHODIRpkkKbv/GYI/ra+jq+FgjJgbV5dKYMX1KHmBh1ImgFv3pZKCr4geJZiVjWf\n        V+2e53K9LqiQ5kSnfzwjmuIY+cxT8J3g+aF35nWVYJ1rx3HQ6R1pWNd0ewu8bkdRfkYI2zYMi/8M\n        4oF0juGq7//8FUWHh0DF4L2XwMIW8H4KKFL8asRR/vObwHOg3ACu2YA6x0S/wHMunmHzrwADAPb0\n        7huzEp/RAAAAAElFTkSuQmCC\"\"\"\n\n    DenyPixmap = None\n    DenyData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAAAAAACqAABdAADlXFzq\n        YWGgAACUAACLAAAAAADLDw/vYmLGKSmTBweaAACEAABdAACqAAClAAB9AABKAACqAACoAABtAAAO\n        AACpAAAAAADLFhaZMzP////48fHcuLjZERH1bGz/dnbhwcHChISrVlaeNjacMjLSExOyQ0PIERH2\n        7e37c3PdX1+wQUHMQECnNTW/Ly+oKyvBISHQHx+9GhrAFRX5cXHtZWXZXFzhWVnNUFDDTU3bTEzC\n        MTHRMDChLS2zKiq7JSWzHR3L21+eAAAAHHRSTlMAGszM/v3MzMwU+fnd3czMvLq6uoNzc3MzDAn5\n        AP8ibQAAALhJREFUGNNlyEcSgjAUAFDUoIK90QzBSO8de7//ncyfYeGMb/m4f+pm0W0tNioLaTyi\n        exDR0VhiseTRIfYdx48pQksWfZ5GvkWIaV951Iegp4RiQ9dD+3KGmNLEwgjGzNIpi8HRIQZO2RA3\n        H0DwDtENfMcGcd8Qw1tm6mxKbD3rIcQjt0OYBn8aiFlVvWyTEAsHQTBjsdp6Xlm4blF7nrhiIU/E\n        XUucyBwnKOt5rzVfKwKnCZ0fgvYFaUkWa6ms/VgAAAAASUVORK5CYII=\"\"\"\n\n    NotifPixmap = None\n    NotifData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAArlBMVEUAAAAAAADLsgGWgAC1nQG8\n        pAHDqgHMswHj0yL68p7g0EqVfwCslQDLsgHMswF3ZQCfiAAXEwAAAADMswEAAADj1S747ZK6pxC6\n        pg3q3Cb76oHZ1Dfe1jLj2S3/9qj35nnz4nAAAADV0TzQz0D16YXw32n68Zz47ZDt6oH07Xp1dXVm\n        Zmbq22HUzEjSyUXp4Wjt3WTe2GPl2VbV1FDa1E3k3EvX1Ebn3T4wMDAYGBhq6pIiAAAAGXRSTlMA\n        GazMurWyYPj1x7utnZyDbzMSCgn39dnZsf32zgAAAJhJREFUGNNlyNcOgkAQQFFEYendgoA6C0jH\n        3v7/x5wxGxPjebgPV/oXMkcWHBbiYIa+EXSD4bD19dfCxiHvt6htqZX8GTvUddSChlqVZdk/X8M4\n        DieVRnHsrzlAji40lOLMOQfg6K7QOCSorhNCY3ZLEUBKZjQeGQLICA1rHqOmoWoWDm+pxYK28iQp\n        8F1zKpiuH0jR5Ef0Bky6E46+fts4AAAAAElFTkSuQmCC\"\"\"\n\n    CallOutPixmap = None\n    CallOutData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAABC1BMVEUAAAAnNldJlIBBhndBhHc9\n        fHY+eXQvS2orOWcoNWglMVo0NF81TXoeIFAnK2oTDzceI04kMWgjNmZAfHc+d3QvYnU3Y25KkoQ1\n        ZnM5a3I5bnM6YHk8a3w9bngyVWc7YXwmNlc0Vng3SGYnNlc1VXUzSmkuRW0pO14rPGAfJFEmM2Yi\n        MVUrOGUcGU0UDzsxNoIrNl0kNl02LnwtLm4RERFd2oll9I1g5Itd3Ylk8o1j7Y1i6Ith4otf4Ipn\n        +I9i64xWzYk/hnlr/5Jo/pBh5oxc4oxZ24pYxIpa2IlNt4RElnxl75BPmI1ayYtf3YlX0YdKt4ZN\n        mYZRv4RTsoRSsoRYxYNGnn1HjH1Eg30IdmMLAAAANHRSTlMAsP7++/Lqpp+Gg1pOPDsyLBsU+vn4\n        9/Lx6+bc2tDPyby4uLWuramgm3p2dGVlZU9COg8MiJ27qwAAANNJREFUGNNVztWSwjAYhuGfssAu\n        i68r7i6Reou72/1fCQ0Qhr5H3zyZTALg//sogq3gEbenQRtFdZ1IP2z5WixrPGCK8MB7Oc9dSFIp\n        6ggRJo5WltGXqiAivjbO4gBGmbWsyO7AVc5UN4m4K1gjxgR8YJVYSkoKrPMk8CJvC21TAVvPZl9b\n        Vdlqhrk9jXuaUAYIuAUvt8d9D289+RexM/j3cxv3RWUmE4QnhxK/axpE6s4pktvO2xufoyGiqqp3\n        f4EXTjtHxpAa76G7z9Q83y5XPAQnVOYeWm83sqgAAAAASUVORK5CYII=\"\"\"\n\n    CallInPixmap = None\n    CallInData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAA/1BMVEUAAAAnNlcrO18qMlMpPFU9\n        gbQ6d604bp8tWpE0bqczYpYqOFwmM1M3OU41TXoiJT4WFCUgJkAzL2Q3da5Ag7YwXpI3b6E2bZ02\n        W4s4ZJU4ZpcuUHk4XI4mNlcyU4M3R2onNlczUn4ySG0uRHMvSW8uSXQiJ0MoN1kjM1EsOl4gHzkY\n        EyU1PGguOk0jM1URERFJvP9LyP9Kw/9Nzf9Lxv9Kv/9O0v9N0P9Mzv9Fvv9DuP9BsP1Q3/9P1/9N\n        yv9Kwf9Hwf9Fu/9Huv9HrO07nOZEnNU3g8Q/hbo0dbRLwPlDr/U/o+xHqeo5nOpHquI4ic1FicdC\n        icI1eLQ3d7M5dqnvlSN2AAAAL3RSTlMAsJ46Fv39+fjy6YaDWk48MiwN+/Lx6unc2tDPyby4uLWu\n        rampo3l2dGVlZU9CHXaW39gAAADVSURBVBjTVc3VjsMwEIXh0zTF7ZaWmRk8djgp8/IW3v9Z6lSd\n        SvkvRppPsgeoHO8+IlE16zX+qwk6lVK1Dnm7FHpkfer53yWgrJeUONNzRzpEzbEJEUsKumLQJmXl\n        6hAsuPmy2/Z+GhDGWpCedKz+AzQJg49c/MiPq5jiyisy85E7fEGi7UnXnb5CVzfZtkaBO37W3x5k\n        SmzGX+ANb+9zVvP3pMI2Cn2nbyvyrMwTv51FnZYiIrux2NzYG4Q9chypjsC9X88HUdj9zNdYdG93\n        xULhvIYlHygcH2ph8KcAAAAASUVORK5CYII=\"\"\"\n\n    CallFailedPixmap = None\n    CallFailedData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAABDlBMVEUAAAAmL2ZBhHY/fXc9eHU2\n        ZHA+eXQnN1gnN1gnNlYwR2svS2orOWcoNWglMVoeIFATDzceI04yLnZJlIBCh3gvYnVKkoQ5a3I5\n        bnM6YHk8a3w9bngyVWc7YXw0Vng3SGY1VXUfJFEmM2YiMVUrOGUcGU0UDzszM182Nl8xNoIrNl0f\n        LmgrNWgdMGkpPGPZERFd2onomJFl9Y1e3Ylk841i64xh5Yxi54th4osRERFj7Y1d5Itg4IpWzYlM\n        t4T/19Zr/5Jo/pBn+I9c3opZ24pYxIpa2IlSsoRJlYFElnw/h3lAhXhl75Bl8I1PmI1k7oxc4Yxa\n        yYtW0IhNmYZRv4RYxYNGnn1HjH1Eg32hKSmGSrbTAAAAL3RSTlMAO/329vTq6bCwq6afhoM8MiwN\n        +/v48uvm3NrQz8m4uK56dnRlZWVdWE9CHRkVFDTFbboAAADdSURBVBjTVY7lkgIxEISD2x12grvr\n        ZpN1w90d3v9FCAupgv4x0/XVTM8AEEj8FwAV8yjBK9ddBz9QiucFJfYiLMOS+oswRCM/cR3mKWBV\n        NAx707Y5dDOnIgMJCpw9TKxHZs0s71GUeKeFOLfsecZbFurqlCfGJbtJnnklYyhSlnTZBahaf/v+\n        pAw+VJ0P0aH2cOEmZd8ztT8tkVjnj5+yr/MWTXw5G9cbJQOUzYactBMFiJaXIt2d6+pGxBiKXSvd\n        rTiMMcSaxgtxQNXwLgx9PNAdobdn6r6ozZ4OgTuahB98PQrBvgAAAABJRU5ErkJggg==\"\"\"\n\n    CallMissedPixmap = None\n    CallMissedData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAABF1BMVEUAAAA4dqwvR3AqMlM4bp/M\n        EBAtWpE2bp8sO18qOFwmM1M3OU4iJT4WFCUgJkAoNlYmPFMzL2Q+hLNAg7Y1cao0bKQwXpIzYZQz\n        ZJc2W4s4ZJU4ZpcuUHk4XI4yU4M3R2ozUn4uSXQiJ0MoN1kjM1EsOl4gHzkYEyU1PGguOk3RERFJ\n        vP/qw8LomJHjLx/NERFLyP9Kw/9KwP9Nzf9Lxv/m5ub/19Y1drTfdmrLGhrZERHIERFO0v9N0P9M\n        zv9DuP9BsP06nOhQ3/9Nyv9Hwf9Ev/9Fu/9Huv9EnNVDicX///9P1/9P1v9MxP9Hvf9LwPlDr/VI\n        re1Gqu0/o+xHqepHquI4ic04g8Q3gsQ/hbw/hbg9frQ8d6yxgOaEAAAAKnRSTlMA/as6+fn46p+G\n        g1o8MiwbFA378vLy8evm3NrQz8m4uK6jeXZ0ZWVlT0L5uI1FAAAA6UlEQVQY01WO1XLDQBRDZTvQ\n        psEyM+6adu3EjtnhlJn//zs6bmc7jp7unNGVBFS3lo7xK1VzNRVA7TvsTWsZ6eiGZ+gdYMc0WX8j\n        8+hdQkhXVyFFdBw9VwDNIG2/TQwNkskpvf5owvWIf+kTz8XaLaPMKrRyLvnJ5nZZyWcpzsB6PPpr\n        LHrFrBF7qXm3P7MLzVISTM4wowVnFEzPs6vVEGz+fRh8ngJKebEi2NzrMJzIhwXr6mW7KthbHPEH\n        m9HQ+joRv04y6N9QSu2e9N+xmsZjyrnJNiHUkJ00iUf3pXpuzMXB+vLKbh0/qYUmS4WmsSwAAAAA\n        SUVORK5CYII=\"\"\"\n\n    WifiSignal0Pixmap = None\n    WifiSignal0Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPAgMAAAAex+7AAAAADFBMVEUAAADf39/ZERHa2tphOsv0\n        AAAAAXRSTlMAQObYZgAAAFBJREFUCNdjgIFQBwwm0wKmpTDm6lNw5qpXMCbDqlVTIcz/B16tgmq7\n        euDWChgTLAqWvnoApBYsdvUQ0AQYcyXQXKA0iLn0EJAJZIBhKDITAMjJOrW9TNAYAAAAAElFTkSu\n        QmCC\"\"\"\n\n    WifiSignal1Pixmap = None\n    WifiSignal1Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPBAMAAACRhxtgAAAAD1BMVEUAAADf39/a2traMiHlMiRE\n        TMbOAAAAAXRSTlMAQObYZgAAADRJREFUGNNjQAdKSgoYYoqCeMQQ+tDFgHz8Ygh9EIxQg18MoQ+O\n        oWoIixkbG2CImbgQJQYAZsMPo/Tq1Q8AAAAASUVORK5CYII=\"\"\"\n\n    WifiSignal2Pixmap = None\n    WifiSignal2Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPBAMAAACRhxtgAAAAD1BMVEUAAADf39/a2trZcB/gcCw6\n        QFeFAAAAAXRSTlMAQObYZgAAADRJREFUGNNjQAdKSgoYYoqCeMQQ+tDFgHz8Ygh9EIxQQ1jM2NgA\n        Q8zEhaAYSB+6GJBPlBgA18sRg3n5NH0AAAAASUVORK5CYII=\"\"\"\n\n    WifiSignal3Pixmap = None\n    WifiSignal3Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPBAMAAACRhxtgAAAAD1BMVEUAAADf39/a2tr23k721T3R\n        dx7KAAAAAXRSTlMAQObYZgAAADRJREFUGNNjQAdKSgoYYoqCeMQQ+tDFgHzCYi4uDhhizsZ4xWD6\n        0MWAfIJiIH3oYhA+YTEAR8oVzR2vvj8AAAAASUVORK5CYII=\"\"\"\n\n    WifiSignal4Pixmap = None\n    WifiSignal4Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPBAMAAACRhxtgAAAAD1BMVEUAAAC35Uip30nf39/a2trZ\n        6zb+AAAAAXRSTlMAQObYZgAAADRJREFUGNNjQAcuLg4YYs7GhMWUlBQwxBQF8Ygh9KGLAfl4xWD6\n        0MWAbIJiCH0IMSBNlBgAiOsUoXoH5kYAAAAASUVORK5CYII=\"\"\"\n\n    WifiSignal5Pixmap = None\n    WifiSignal5Data = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAACUAAAAPAgMAAAAex+7AAAAACVBMVEUAAACC7kl36DUwSfEIAAAA\n        AXRSTlMAQObYZgAAACxJREFUCNdjgIFVDXDmVGQmXBrOnIrKhErDmVPRmWBpOHMqJhMoDWdOxcYE\n        AGqZMRs0hralAAAAAElFTkSuQmCC\"\"\"\n\n    AddCirclePixmap = None\n    AddCircleData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA0lBMVEUAAABN2l4PxB4ApBMAdwkA\n        cwcInhRZ42sR1CEuyEENryADiA0AqhUAlhAAkg8AXQIHrRsGpxkCdAgAmhEAjQ4AqhUAXQIAiQ0A\n        XQIAqBQApRQAqRUAoRMbqiwXrihF0lcXwCcPvB9Ay1ErvTsjsDQRryEsvz0luTYTqCIDig8CiQ0R\n        viI+xk8RpyLh4eH////o6Ojk5ORGz1cR0SIRyCLs7OzU1NRCy1M4wEkstT0TnyTc3NzX19dR2mJO\n        1l8zu0QkrzUSmyMRtiIRtSIRtCL4+PiP7/pgAAAAK3RSTlMA9vZsTRrj/f3jzc3ExMTEv7+/p6em\n        pmxsTU0aGv399vb29fX19ePj47+/GaKqWgAAALtJREFUGNNtytcSgjAURVEDgr0r3d5N6B2l4///\n        kpdhfOM8JLPX3E7rZHozHm9o+d/ifIB6PTSYi01LQxQnhCQxGkp1KwtkWYGuB5a1XygA9M0nJNX1\n        lBD/TgOsTkEYZq4W5Xl0WQFM/PCreZ+3ZhrRdgIwJZnXtKvupgDrc6WqqmbCU13XAPwDY1yaRgkf\n        ywMwz4PjYMPFjnN8MR1Yd0TZdlHYNjXqQtayZKl+n2KX0M0YgZvNOAHuW/YDtm4XtkWWEkMAAAAA\n        SUVORK5CYII=\"\"\"\n\n    DelCirclePixmap = None\n    DelCircleData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA0lBMVEUAAADEDw+nAAClAADpW1uo\n        CAjRSUnORUXzaWm1JibjV1edCAixDw+IAwOWAACSAABdAACsBQV0AgKaAACNAACqAABdAACqAACe\n        AACJAABdAAB/AABvAACFAABgAACsHR2vGBjcT0/BGBi8Dw/TR0fALi6vEhLQNzfPNjbGMjK9Kiqh\n        CQmqFhanBweKAwOJAgK/ERGoERHYT0/KQkLSERHIERHu7u7jW1vd3d3R0dG/NzegFBTo6OjNzc3n\n        X1+7MjKcEhK0ERH4+PiwJyemHBzIEhK9Qr1LAAAAMHRSTlMA9k0a9r/+/v369uPNzcTExMK/p6em\n        pmxsbGxNTRoa/f329vb19fXj4+Pj4+K/v78oAQ+yAAAAn0lEQVQY023L1RaCUBRF0YuASXfbnRhI\n        KGH8/y95hKtPzLe9xtioFqmroqjq5G836DnVblMLuoE3Q6VXkHaZspB094gNt9+XsWyesNbKgCBP\n        4jjOnq8kz5OODIFrZo/wHoW3IEj6HAS+1YmqHfgDHoIyLXysmCkQzM3hb21CcHej96Uy3rsI2Cxx\n        LhGsjUqO1CNg9iQHYZ6lCYJmeajOB7kGGLv2+7XfAAAAAElFTkSuQmCC\"\"\"\n\n    ActiveCirclePixmap = None\n    ActiveCircleData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA51BMVEUAAABN2l4PxB4AlA8ApRQa\n        qysInhRZ42sNryADiA0AqhUAXQIHrRsGpxkCdAgAmhEAjQ4AqhUAXQIAqhUAnhIAiQ0AXQIAqBQA\n        pRQAfwsAbwcAhQwAYANF0lcXwCcPvB9Ay1ErvTsjsDQRryEvyEIux0Esvz0luTYTqCIDig8CiQ0R\n        0iHn5+fj4+MRtCLe3t5GzldBylI9xU5O1l8RyCIRviI3v0gRriIRoiLV1dUxukIRqiIRpyIRnyL/\n        ///4+Pjr6+ui16me4qdS2mNR2WJHz1gttT4rszwmrzccpC0VwCYVniYSyCNbA1xzAAAAK3RSTlMA\n        9vbEGv7j/c3NxMS/v7+np6ambGxsbE1NTU0aGvb29vX19fXj4+Pj47+/AarJhwAAALFJREFUGNNt\n        y9UWgkAUhWEGFTvpsFtgEIPGbn3/5/EwLu/47v69zqFSZdlmqdRks/8WKyOUz6NxRfy1VEDnNbig\n        gkTuq+i6TDh2u5p8cRN7lQh2J3vKwVDvOTcneDxN03gP6jBk7Ps+58WWacReLkOGo3+IoL0wJEOj\n        7/oWdIQxHjZg4GcvF9rdAoaHQZ13PtjAG9BdqBSQi7SOdUAXZYpQagwNydQUCEITWuVyS9CoNF+w\n        UhgX3khsvgAAAABJRU5ErkJggg==\"\"\"\n\n    InactiveCirclePixmap = None\n    InactiveCircleData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA21BMVEUAAADEDw9zAADpW1usICDz\n        aWm1JibjV1edCAixDw+IAwOqAACWAACSAABdAACuCQmoBwd0AgKaAACNAACqAABdAACqAACeAACJ\n        AABdAACoAAClAAB/AABvAACpAAChAACvGBjcT0/BGBi8Dw/TR0fALi6vEhLQNzfPNjbGMjK9Kiqh\n        CQmqFhaKAwOJAgL////d3d2rERHSERG1ERHR0dHW1tbjW1vXT0+gEhKyERHu7u7RSEjLQkLq6urn\n        5+fi4uLnX1+6MDDAExPIERGdERH39/fZUVHYUFC/NzeKi/ywAAAAL3RSTlMA9hr2/v369uPNzcTE\n        xMS/v7+np6ambGxsbE1NTU0aGv329vb19fXj4+Pj4+K/v7D5oYgAAAC4SURBVBjTbY9HEoJAFAUF\n        zDknkjnrMAwqWYLp/ifyURY7evGruutvXi4TZdiv1fpDJfVpaysUCsKuNf27WBGCGwhKFTFxtV16\n        kzsgn3lbRRjtHUKI6+I4hxFCd/XNk5evadrTLHYR6k4YmoZxhZv5OkLDLVIKf1BKZw2E3pqxxH2P\n        sU0PYXyK4JR6th0dxwj8eWFpVhxbtrW88DkgVTmmA8ZVJSiQO2VO17lyR07H8JNBszmY4D+DH5c8\n        GZRRf1EmAAAAAElFTkSuQmCC\"\"\"\n\n    LocChangePixmap = None\n    LocChangeData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAvVBMVEUAAAAuh9IYarWVAADlAQHl\n        AQHfAQGuAAD9hob8hIT8iYnwaGj2c3PlUlK9HBzyT0/eNTU4lN8NXKfMIyPxSkqfAADFAgKyAADi\n        AQHVAQHNAQGVAAC8AQEyjNcKV6PlAQHFAQHlAQE3ZaNIQ3JZVIMjecM+nOcGUZw+nOcZbLeMIzaq\n        AAD6bW3+dXX1YmJd0f/4aWnwWFiV5P9u1///gYH6dHT8cXGoY2ObVVVXS0s4xf//kJBhVlZISEhK\n        Pz/xJFURAAAALHRSTlMAzczKn3KqC/3z8vHt7dDPzczMzMvHsa+jn2dmYVxcGRQT9OrozJmZXFxa\n        Wv2CKdQAAAChSURBVBjTPczXDsIwDEDRQAd0711oyx5J92T9/2cRJNz7YMlHltGvjGN5lssQlLC2\n        +BRtNgHgtJYQ0mocgC+Q4TUQwQfg1/30nvo1DxDIePyMWA4AQr3DGHd6CJC6UlmWkpsiKLZwjq0Y\n        za08JVe8FTpdQO5qrt4QMowNnDj5YUGrFyBOtauboiia4x+Yar+kPZbXGRg6TXMLXyMmovNM9y89\n        NA8T2JpwAgAAAABJRU5ErkJggg==\"\"\"\n\n    ExcelDocPixmap = None\n    ExcelDocData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAAALKipVf38yV1clSUk+\n        ZWVIcXFSfHxTfX0XODgMLCyHqmVJiidVf3/////8/v35/PyHqmVIiib2+/vx9/ft9fXi8/P0+fno\n        +OjV5uZ6o1hyn1Bflj3s++xpmkdWkTTn8fHf7OzZ6OjO4MaTpKSewo36/v7v+fn4/fjq9/f0/PTl\n        9PTv+u/Y5c+auoOCp2BOjSyxwsLH3b+ltraTtnqCrWhzplviWV3bAAAADnRSTlMAh2Z2e3FsZySC\n        ZcDATY/2reYAAACkSURBVBjTPchXFoIwAETRKCiCGlASEBIIIL1b9780U4Q358zHBQCct/8OQGW4\n        VdN5nvcwpBwvqjF4QSkTVE1Bnuc6h9AOw2HknwWBt+dAajIQ8q5JmimI23vM18ZJmkmg/YfSJ+0p\n        TtJux4FFRVEwFjGMk0bAHN1E0YwwrgScrqovQtjXgEiDtu04ro/QCou4CnS4iKtLMKEUu3RKU4K1\n        WbMA+AEaBhF5P7HRSAAAAABJRU5ErkJggg==\"\"\"\n\n    MailSendPixmap = None\n    MailSendData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABAlBMVEUAAABUf382XFxFbGxNdnYY\n        arUNXKcvVFQ+ZWUTZK9Vf39bzvtYx/JUvucic7ZOsthIpcZAlLIYarU3gpooZowtboAYarUGUZwi\n        WWUYREsYarUQMjMfQkIYarUZbLcGUZwPMDAYarUYarUYarUYarX////7/f33/Pzu9vba6enc5eXz\n        +Pji7u7s8fHo8fHl7Oze6+vh6end6elWot3I2dnB0tJd0f/z+vrv+fno9vbp7++ey+jW4eFysuDS\n        3t7N29u4ycm0xcWvwMCqu7ultrahsrKdrq6Z5f+A3f9OzP/M5u+/3e2hz+3S5+yv1eqOweTU4+N/\n        uOFjp9xSndlLldG8zs5E3CI9AAAAJXRSTlMAZ3RuasrMeHFjTfry5+DbzcC1srKlo5mZkI6Ifnhm\n        ZmRKNCAQ/OaO6QAAALtJREFUGNNlz9XSglAABOClrD/tbgU8HhBF7O5u3/9VRIdxhvG72N3bxQcP\n        Y+MBM1KKb8qIAa+MO6KlM1Z48GJlUpFezCHy4KRydVotm54lceCaskxmxIomB1dLVakx7/XmBlXV\n        lgusTGv12mCxGJhFZRZsm9SJpg2Hmkb63TYLJzVOJYuu75xI3Peb7aF7PPcv+nV5CyATj0aCfu//\n        38/3V6Ox+gVQyOey7mQs5BOEtZCyHXU43LAJp4EH6Ikfv0pcilsAAAAASUVORK5CYII=\"\"\"\n\n    GreenLightPixmap = None\n    GreenLightData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAe1BMVEUAAABApkAVexUVfBVHrUdA\n        pkAfhR8YfhhEqkQymDIjiSMRdxFEqkQ2nDYfhR8RdxFEqkQ7oTt33Xd84nxVu1VSuVJEqkQ6oTqG\n        7IaB54FHrUczmTNu1W5nzmdPtU9Ns01KsUoulS5y2HJhx2FexF48ojwojigjiSMRdxHv6MSoAAAA\n        EnRSTlMAZWUq5+fn587Ozs6CgoKCKipZck9nAAAAjUlEQVQY023LVw7EIAxFUdJ7HZtkGGAgff8r\n        jIVQvnK+/K5k9qqvc87zumdeEK/jPI9rHPhtltlZjCtDIr+eTAYKDXwe0FAo1PhQBQWLAjclpdro\n        sBQOPf28SR8UShCTJ6Ck0O4ouCNwbylEqUH9JxpNGjESngIAEUCcIXPCzHIAbjO/6aurrqvqIvbm\n        Bn4GDkNe+slZAAAAAElFTkSuQmCC\"\"\"\n\n    BlueLightPixmap = None\n    BlueLightData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAclBMVEUAAABilcg3ap5om85hlMc/\n        cqU4a55mmcxUh7pFeKszZplmmcxYi75BdKczZpk5bJ81aJtmmcxdkMOHuu1LfrGNwPNjlslDd6qX\n        yv2SxfhmmcxZjL9Vibxgk8ZdkMR7r+JvotVqntGAs+Z5rN9PgrUzZpmGNHqIAAAAE3RSTlMAZSrn\n        5+fnzs7OzoKCgoJlZSoq8f8qLgAAAIpJREFUGNNtyEkShSAMRVHEvm/A6E9UwGb/W/wpinLkmeTl\n        ik9jnSPm9SiCKDbzus4mjsLv1Oop58uUqF+gkolDY+eXbTgURr1MweEGAnud52V53Bz0rpeAJ4fS\n        kQ7IlRzaDWjzCLaWg0x32A/GJ5WC9cuBCIB4LL3whkwTIulsEIHsquepOim+/AF2/A5LptNA+AAA\n        AABJRU5ErkJggg==\"\"\"\n\n    RCAdminPixmap = None\n    RCAdminData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAmVBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        ///////////////////////////////VHQRUAAAAMnRSTlMA+xPo95K8nI/rOQ/uw6toDNS4WUsi\n        tbGD2JglF/DhyXZzYF1UQTQxKgbNzKJ9bkRiG7fkupsAAAEeSURBVBjTRZBXcsMwDETBLqp3WZK7\n        nbjEJcH9DxeYlOz3wdl55AA7hG1Z5zAT1bd1+vdKJYqgmWyjYtQnF2uBePCWG8TNt895gGi4i2eL\n        2LlIR3MwQkVOx4irBW0ajbtT3i9LfPloTHtfQImAu3lEfCuZmYoFVvFLJtAjnuDhAdVsJytp/ser\n        ertPh27d3znMLMNBDAsT5suxyT9W9dUgZXx8Gz9C4nYhEdO6mdQlzHaGzEO7el3ou+0KhgQ9zDS2\n        CUuc/41ZkVLh9R7gKJNKe79BxXkl2J3yqJk+kqdflLailSk+gPi6Ml2VL29tRrpgdBLPKysPLevA\n        YJ9VihU00L3/YW1WrOCUoLUY7y7w9oXoAE7Gys0+gplQy/b8D5ryHAwtl8IQAAAAAElFTkSuQmCC\n        \"\"\"\n\n    RCBackPixmap = None\n    RCBackData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAclBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////////////////////////////////////////////////////9eWEHEAAAAJXRSTlMA346J\n        c0IXCPr3wJwSDfHq2c2tfHZQSjsxLiohG/DEtm1iYVMfJ7cDVgAAAHtJREFUGNPFz8kOgyAQgGEG\n        CqhoW7V133Xe/xUNMXEJc/Hkf/xImBn2XEVF6f/7clFPgC5Hvw9ikA5Zc1Yl3mjzIUjrXUPuWdxe\n        OumyDbLzJ0dxeR3JTRK3iJ7R+4KjXVCrcuaAIN1zojzxBXV8Y/qFEdVCMqqc5lCxm608uAsruiS8\n        /wAAAABJRU5ErkJggg==\"\"\"\n\n    RCChannelDownPixmap = None\n    RCChannelDownData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAP1BMVEUAAAD/////////////////\n        //////////////////////////////////////////////////////////////9Du/pqAAAAFHRS\n        TlMABQ/0gOTiW137ToVg7eYcF5uWiQLw+doAAABgSURBVBjTzcxZDoAwCEVRO092UNn/WsUiIV2B\n        vq+bE8L2r42sOXUenP2sVr9q69EpVUlg0KcaSJciDg4eJwUXJ4tPbaTipfCtuAdICcAHUvaIjrqz\n        iq8q/xvr4jmjfrcbBaEEDq3UrsUAAAAASUVORK5CYII=\"\"\"\n\n    RCChannelUpPixmap = None\n    RCChannelUpData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAPFBMVEUAAAD/////////////////\n        ///////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA\n        BQ/j9Fzlgn/5Xk4YB+2GYJaRRGyZdAAAAF9JREFUGNPNzTkOgDAMRFE7+x4g978rRnYRhfQw5dOX\n        Br4c5lw3ap1L+FY9hj5wo+yrxkhucVHTvSFPOL2RBqUCuUt1br0CYJe++sjKHrvk5WqPsrezAIhn\n        UvFc4Fe7AffDBBBcyWMRAAAAAElFTkSuQmCC\"\"\"\n\n    RCDownPixmap = None\n    RCDownData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAARVBMVEUAAAD/////////////////\n        //////////////////////////////////////////////////////////////////////9SnXPC\n        AAAAFnRSTlMAPgnwejkF5N/Nhw20WzEs04NualROuRc1cgAAAGJJREFUGNPNzksOgCAMRVFsAfnj\n        f/9LtQGTYhdgvMMz6Kv6UVAmUQFi4y6RM8TVS/ZVUXl+65zbcatxVNTwjAYcNJD24oqssVF3jXxh\n        CHbX1ramnD3pz+WwSmZSMqwcgPqkG63ACWu3WWgSAAAAAElFTkSuQmCC\"\"\"\n\n    RCFBackwardPixmap = None\n    RCFBackwardData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAVFBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////////////8wXzyWAAAAG3RSTlMAne/LkEgE+NaKNeHe0cSsqGloV1U9Lx0ZDQuehv8hAAAA\n        YUlEQVQY072QtxLAIAxDCS2E9F70//+ZsAB3HjwFDb7TG2xLoogOvX7TGr3n1CgMVjxLC53gPXdA\n        L65GAlWkZ7BwfqqRYT8GC6mAhO2mEJWwcWAws4SeZB6kcZjwpKpf9QJLTg17j8ckPAAAAABJRU5E\n        rkJggg==\"\"\"\n\n    RCFForwardPixmap = None\n    RCFForwardData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAATlBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////+QlxstAAAAGXRSTlMAnY7L+u/i065rRTcN8lhUSz0vIBza2cGS0P1mqAAAAGFJREFUGNO1\n        0DcOwCAMBVDHDimkQHr+/S+aIAZAQmLiL4jnwYUqZ2PtnpX3hF9040wkEBtzAyg+qYcrJ4x2mH7G\n        wkfCgCj4cuA4YrKMS2f5zrKYcsswYGkd9t8HYgunqpkP+gkMFPTjEigAAAAASUVORK5CYII=\"\"\"\n\n    RCLeftPixmap = None\n    RCLeftData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAOVBMVEUAAAD/////////////////\n        //////////////////////////////////////////////////////8KOjVvAAAAEnRSTlMAPgvw\n        4wd5ONLKtImFcFtTMStM1B8yAAAAUUlEQVQY043RNwLAMAgEQRuD5Bzu/481/RaIcgrSTSP1dSPG\n        vfkLtebSDD0Wke1MBVtLBceVSn5cIvdVIseucWYTjuSC1Tk8vn4VH8sY6tBYP7clB9GAVefwAAAA\n        AElFTkSuQmCC\"\"\"\n\n    RCMicPixmap = None\n    RCMicData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAeFBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        ///////////////////////////////////////////////////////////////GqOSsAAAAJ3RS\n        TlMAC9w+HfH1rlE8N+ypfwTNDebixry1mF9ZRigkEPiLicKVdmVLLc9wXD+iAAAA1UlEQVQY02XR\n        15KDMAyFYSTccAHTO6Su3v8Nd3bxhDj5L7/RjeYkoXxsV9GOeRL3wLJpSnzEytqqB+irlkWsebUv\n        y1ZxHXFGVDBWEGURp9Q9AZ4dpTH/X//QF9c3gFv9xY3bd9e8s3KQUSgDpwJ3gp3MRBf4uk5aHMr1\n        tF4DO67m+uDLrLgLPKL1d/OnpgeLY2AvzeDvtRCXHgYj/et1xMHPWs8wIJ7v5wqNVdOkrEGVJ6dr\n        i1wIjlbHQ0BaEBUpJJ9JIvlByyZlSVRKuS1vzDiF+LHaLx8SE85s9WTKAAAAAElFTkSuQmCC\"\"\"\n\n    RCMutePixmap = None\n    RCMuteData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAclBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////////////////////////////////////////////////////9eWEHEAAAAJXRSTlMAYuPT\n        vUI2E/vQX56UP/YaBqRFOzQu3bOKbikYxot+Z1VSTyIICB40LgAAAKNJREFUGNN10dkOgyAQBVAV\n        V9RKWVy7t/z/L3Y6JQKi9wVycjMJQ3SYOWfmVshiVTYm1OjYv2w7q5IYtTlpuFgn4KgeRy14B4rs\n        eX8B9Xl+qKwC2/C1THNeBVxrnebQDxm8JQGvTjds5twcbvTfJbzXqav7NA3lr88Jus37jI57cNOh\n        K7HrFPfDXF/qUse4T+p51yRPODgZFm9OIfDTpPhE+/kC2uUPDbNR0t4AAAAASUVORK5CYII=\"\"\"\n\n    RCPlayPixmap = None\n    RCPlayData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAARVBMVEUAAAD/////////////////\n        //////////////////////////////////////////////////////////////////////9SnXPC\n        AAAAFnRSTlMACuD8w+uJTgWtoIWBZGBNQy4oFdbPhdtnRAAAAFRJREFUGNNjoDXg4GMTAtGCnCws\n        bBxwYUYRZhYBIM0uJibGxIgQZgJyeRmxCYuxcgvzYxEWY+biwRAGi7NiCMMAYWGEIYSsxHQgYe+I\n        YnoeM6hoDADT7gjus7ZZigAAAABJRU5ErkJggg==\"\"\"\n\n    RCPowerPixmap = None\n    RCPowerData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAbFBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////////////////////////////////////////////8+T+BWAAAAI3RSTlMAsiH1vKolGxOO\n        131TQjcG4IYQ8EpAlQrb0czLoqGZWzPhh0LehvcAAADgSURBVBjTVdBXksQgDARQiQwGnD057Pb9\n        77heyszY/UF4KlQq6JMphIkOOQ3r8gAe/+dTVfO7GCIGmEj43myqIWPlKKGLuwVgW9kysLiVXxJs\n        qDIZhnytZYVzpi9TPkNZmiSads9tAzmRR5doz5R+4ElBiSOblegC7crtCTzLwWlc6Fr5rfW78pW4\n        NNlHKDD16OYjzx16SmXALXXARJYR8p5zKH8RR7DYdWaMcd0HD3Butw6ZAT+U+h0IzSycE3MTgLvY\n        3vkR6JTWqgNG/+k4RJYokRwH+samnm837pOlkj/HdhFXrk0ERQAAAABJRU5ErkJggg==\"\"\"\n\n    RCRecordPixmap = None\n    RCRecordData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWBAMAAAA2mnEIAAAAIVBMVEUAAAD6UVH6UlL6UVH5UlL5\n        UVH5UVH4U1P5UVH5UVH6UlJlS7sjAAAACnRSTlMABumGgzuuFK+wbVMZsQAAAEtJREFUGNNjIAcw\n        CgrAmcFtpjBOidaqRe5QYa9Vq1YtgUiwagHZiwLAbOFVIGAIZkuC2YlgtgSCjVCD0ItiJsIuuBvS\n        TAWQ3UYGAABopCHAnqSbzwAAAABJRU5ErkJggg==\"\"\"\n\n    RCRightPixmap = None\n    RCRightData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAQlBMVEUAAAD/////////////////\n        //////////////////////////////////////////////////////////////////8IX9KGAAAA\n        FXRSTlMAPgsE74gu8uTh4NfKtH95bFpVOQgAJFDOAAAAVklEQVQY04XRNxLAMAgEQAuwnLPv/191\n        5aGA0VFuQbquWfLUjOu8Xhq5AOMhGWPoJfLvkWG7ZAw7NWNMt2aMpaSM7SXMm/hIvqCfw483V/JY\n        jyGGxusDHSsJMjB61bcAAAAASUVORK5CYII=\"\"\"\n\n    RCUpPixmap = None\n    RCUpData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAASFBMVEUAAAD/////////////////\n        ///////////////////////////////////////////////////////////////////////////n\n        eHiwAAAAF3RSTlMAPgvxOQbu4IiBDuTSy7R4b1pSMSwI5aDuuX4AAABkSURBVBjTzc05EoAgEERR\n        HVFE9s25/00FpaRAY8sfvqB7+KYY35QoRR44O4Eo3NwqGIopbqBRtuDZwraqG5uwNK23w5q0OpQ3\n        nReq6+vX7tjEbdYgsUuGxIT2TEk+9GOXh+E/Ha5QCiiLQvBQAAAAAElFTkSuQmCC\"\"\"\n\n    RCVolumeDownPixmap = None\n    RCVolumeDownData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAVFBMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////////////8wXzyWAAAAG3RSTlMA+WKdF5B0aEYS26ROOTbix7aLZF4tHAoH5FNmh77hAAAA\n        aklEQVQY043RSQ6AIAwFUAQZBZxH7n9PQxwIaSP+5VtAf0t+RDuNaM33A1FWBYpqZKiQlyZqxvNE\n        x0uD9G57mIc3ojdivZkllqprLWRKVDUUGT4Cv8QHzOrEkoXywGlxscm5sejRvCafOQHTRQzdUUKW\n        hwAAAABJRU5ErkJggg==\"\"\"\n\n    RCVolumeUpPixmap = None\n    RCVolumeUpData = \"\"\"\n        iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAh1BMVEUAAAD/////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        ////////////////////////////////////////////////////////////////////////////\n        //////9qkf8RAAAALHRSTlMA7RQ+HOHDsykEYFUiEOREQjT08dzVy7ubkE4K6NLOlYlbRy36e3Zx\n        bBmop1zZY5wAAAC8SURBVBjThdHZDoMgEAVQREAUd637bjdb/v/7KhhjVRLnZZLzMDB3wFXRwFSo\n        ThJnbqinO024Buc+uISZmzZcsAnRG2Nrdb/mknWS2X6DvUW9GxfsAJRFBipcA4HCsl6zCqaDDbso\n        L7uQAU3IwsxNdZjGgR9/AN+YPioD9doTEvzPTpmHwXhvgcH33K58GmLJIaonvfir+mAeMvU602H5\n        ZF6+xt4xqsmWUZ2CZZUMdnNCxBnsnh6ONprgqn6Tyxv7iCXHOgAAAABJRU5ErkJggg==\"\"\"\n\n    ### Load all icons from base64 data\n    @staticmethod\n    def load():\n        LmIcon.AppIconPixmap = QtGui.QPixmap()\n        LmIcon.AppIconPixmap.loadFromData(base64.b64decode(LmIcon.AppIconData))\n\n        LmIcon.TickPixmap = QtGui.QPixmap()\n        LmIcon.TickPixmap.loadFromData(base64.b64decode(LmIcon.TickData))\n\n        LmIcon.CrossPixmap = QtGui.QPixmap()\n        LmIcon.CrossPixmap.loadFromData(base64.b64decode(LmIcon.CrossData))\n\n        LmIcon.DenyPixmap = QtGui.QPixmap()\n        LmIcon.DenyPixmap.loadFromData(base64.b64decode(LmIcon.DenyData))\n\n        LmIcon.NotifPixmap = QtGui.QPixmap()\n        LmIcon.NotifPixmap.loadFromData(base64.b64decode(LmIcon.NotifData))\n\n        LmIcon.CallOutPixmap = QtGui.QPixmap()\n        LmIcon.CallOutPixmap.loadFromData(base64.b64decode(LmIcon.CallOutData))\n\n        LmIcon.CallInPixmap = QtGui.QPixmap()\n        LmIcon.CallInPixmap.loadFromData(base64.b64decode(LmIcon.CallInData))\n\n        LmIcon.CallFailedPixmap = QtGui.QPixmap()\n        LmIcon.CallFailedPixmap.loadFromData(base64.b64decode(LmIcon.CallFailedData))\n\n        LmIcon.CallMissedPixmap = QtGui.QPixmap()\n        LmIcon.CallMissedPixmap.loadFromData(base64.b64decode(LmIcon.CallMissedData))\n\n        LmIcon.WifiSignal0Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal0Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal0Data))\n\n        LmIcon.WifiSignal1Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal1Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal1Data))\n\n        LmIcon.WifiSignal2Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal2Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal2Data))\n\n        LmIcon.WifiSignal3Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal3Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal3Data))\n\n        LmIcon.WifiSignal4Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal4Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal4Data))\n\n        LmIcon.WifiSignal5Pixmap = QtGui.QPixmap()\n        LmIcon.WifiSignal5Pixmap.loadFromData(base64.b64decode(LmIcon.WifiSignal5Data))\n\n        LmIcon.AddCirclePixmap = QtGui.QPixmap()\n        LmIcon.AddCirclePixmap.loadFromData(base64.b64decode(LmIcon.AddCircleData))\n\n        LmIcon.DelCirclePixmap = QtGui.QPixmap()\n        LmIcon.DelCirclePixmap.loadFromData(base64.b64decode(LmIcon.DelCircleData))\n\n        LmIcon.ActiveCirclePixmap = QtGui.QPixmap()\n        LmIcon.ActiveCirclePixmap.loadFromData(base64.b64decode(LmIcon.ActiveCircleData))\n\n        LmIcon.InactiveCirclePixmap = QtGui.QPixmap()\n        LmIcon.InactiveCirclePixmap.loadFromData(base64.b64decode(LmIcon.InactiveCircleData))\n\n        LmIcon.LocChangePixmap = QtGui.QPixmap()\n        LmIcon.LocChangePixmap.loadFromData(base64.b64decode(LmIcon.LocChangeData))\n\n        LmIcon.ExcelDocPixmap = QtGui.QPixmap()\n        LmIcon.ExcelDocPixmap.loadFromData(base64.b64decode(LmIcon.ExcelDocData))\n\n        LmIcon.MailSendPixmap = QtGui.QPixmap()\n        LmIcon.MailSendPixmap.loadFromData(base64.b64decode(LmIcon.MailSendData))\n\n        LmIcon.GreenLightPixmap = QtGui.QPixmap()\n        LmIcon.GreenLightPixmap.loadFromData(base64.b64decode(LmIcon.GreenLightData))\n\n        LmIcon.BlueLightPixmap = QtGui.QPixmap()\n        LmIcon.BlueLightPixmap.loadFromData(base64.b64decode(LmIcon.BlueLightData))\n\n        LmIcon.RCAdminPixmap = QtGui.QPixmap()\n        LmIcon.RCAdminPixmap.loadFromData(base64.b64decode(LmIcon.RCAdminData))\n\n        LmIcon.RCBackPixmap = QtGui.QPixmap()\n        LmIcon.RCBackPixmap.loadFromData(base64.b64decode(LmIcon.RCBackData))\n\n        LmIcon.RCChannelDownPixmap = QtGui.QPixmap()\n        LmIcon.RCChannelDownPixmap.loadFromData(base64.b64decode(LmIcon.RCChannelDownData))\n\n        LmIcon.RCChannelUpPixmap = QtGui.QPixmap()\n        LmIcon.RCChannelUpPixmap.loadFromData(base64.b64decode(LmIcon.RCChannelUpData))\n\n        LmIcon.RCDownPixmap = QtGui.QPixmap()\n        LmIcon.RCDownPixmap.loadFromData(base64.b64decode(LmIcon.RCDownData))\n\n        LmIcon.RCFBackwardPixmap = QtGui.QPixmap()\n        LmIcon.RCFBackwardPixmap.loadFromData(base64.b64decode(LmIcon.RCFBackwardData))\n\n        LmIcon.RCFForwardPixmap = QtGui.QPixmap()\n        LmIcon.RCFForwardPixmap.loadFromData(base64.b64decode(LmIcon.RCFForwardData))\n\n        LmIcon.RCLeftPixmap = QtGui.QPixmap()\n        LmIcon.RCLeftPixmap.loadFromData(base64.b64decode(LmIcon.RCLeftData))\n\n        LmIcon.RCMicPixmap = QtGui.QPixmap()\n        LmIcon.RCMicPixmap.loadFromData(base64.b64decode(LmIcon.RCMicData))\n\n        LmIcon.RCMutePixmap = QtGui.QPixmap()\n        LmIcon.RCMutePixmap.loadFromData(base64.b64decode(LmIcon.RCMuteData))\n\n        LmIcon.RCPlayPixmap = QtGui.QPixmap()\n        LmIcon.RCPlayPixmap.loadFromData(base64.b64decode(LmIcon.RCPlayData))\n\n        LmIcon.RCPowerPixmap = QtGui.QPixmap()\n        LmIcon.RCPowerPixmap.loadFromData(base64.b64decode(LmIcon.RCPowerData))\n\n        LmIcon.RCRecordPixmap = QtGui.QPixmap()\n        LmIcon.RCRecordPixmap.loadFromData(base64.b64decode(LmIcon.RCRecordData))\n\n        LmIcon.RCRightPixmap = QtGui.QPixmap()\n        LmIcon.RCRightPixmap.loadFromData(base64.b64decode(LmIcon.RCRightData))\n\n        LmIcon.RCUpPixmap = QtGui.QPixmap()\n        LmIcon.RCUpPixmap.loadFromData(base64.b64decode(LmIcon.RCUpData))\n\n        LmIcon.RCVolumeDownPixmap = QtGui.QPixmap()\n        LmIcon.RCVolumeDownPixmap.loadFromData(base64.b64decode(LmIcon.RCVolumeDownData))\n\n        LmIcon.RCVolumeUpPixmap = QtGui.QPixmap()\n        LmIcon.RCVolumeUpPixmap.loadFromData(base64.b64decode(LmIcon.RCVolumeUpData))\n\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmNotif.py",
    "content": "### Livebox Monitor notification handling constants ###\n\nDEVICE_ALL = \"ALL\"\nDEVICE_UNKNOWN = \"UNK\"\n\nTYPE_ADD = \"ADD\"\nTYPE_DELETE = \"DEL\"\nTYPE_ACTIVE = \"ACT\"\nTYPE_INACTIVE = \"INA\"\nTYPE_LINK_CHANGE = \"LNK\"\nHUMAN_TYPE = {\n    TYPE_ADD:           \"Added\",\n    TYPE_DELETE:        \"Deleted\",\n    TYPE_ACTIVE:        \"Connected\",\n    TYPE_INACTIVE:      \"Disconnected\",\n    TYPE_LINK_CHANGE:   \"Access change\"\n}\n\nRULE_FILE = \"FIL\"\nRULE_EMAIL = \"EMA\"\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmPatPtf.py",
    "content": "### Livebox Monitor PAT/PTF rules handling constants ###\n\nfrom enum import IntEnum\n\nIPV6_SOURCE_PORT_WORKING = False        # SourcePort is available in the API but not working, at least for a LB5\n\nRULE_TYPE_IPv4 = \"IPv4\"\nRULE_TYPE_IPv6 = \"IPv6\"\nRULE_TYPE_UPnP = \"UPnP\"\nRULE_PAT_TYPES = [RULE_TYPE_IPv4, RULE_TYPE_IPv6, RULE_TYPE_UPnP]\nRULE_PTF_TYPES = [RULE_TYPE_IPv4, RULE_TYPE_IPv6]\n\n# Protocols - https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml\n# Numbers\nclass Protocols(IntEnum):\n    TCP = 6\n    UDP = 17\n\n# Names\nPROTOCOL_NAMES = {\n    \"1\":    \"ICMP\",\n    \"2\":    \"IGMP\",\n    \"3\":    \"GGP\",\n    \"4\":    \"IPv4\",\n    \"5\":    \"ST\",\n    \"6\":    \"TCP\",\n    \"7\":    \"CBT\",\n    \"8\":    \"EGP\",\n    \"9\":    \"IGP\",\n    \"10\":   \"BBN\",\n    \"11\":   \"NVP\",\n    \"12\":   \"PUP\",\n    \"17\":   \"UDP\",\n    \"18\":   \"MUX\",\n    \"20\":   \"HMP\",\n    \"27\":   \"RDP\",\n    \"28\":   \"IRTP\",\n    \"33\":   \"DCCP\",\n    \"36\":   \"XTP\",\n    \"37\":   \"DDP\",\n    \"40\":   \"IL\",\n    \"41\":   \"IPv6\",\n    \"42\":   \"SDRP\",\n    \"45\":   \"IDRP\",\n    \"46\":   \"RSVP\",\n    \"47\":   \"GRE\",\n    \"48\":   \"DSR\",\n    \"49\":   \"BNA\",\n    \"50\":   \"ESP\",\n    \"51\":   \"AH\",\n    \"58\":   \"ICMPv6\",\n    \"75\":   \"PVP\",\n    \"84\":   \"IPTM\",\n    \"86\":   \"DGP\",\n    \"87\":   \"TCF\",\n    \"88\":   \"EIGRP\",\n    \"89\":   \"OSPF\",\n    \"92\":   \"MTP\",\n    \"132\":  \"SCTP\"\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmQtTools.py",
    "content": "### Livebox Monitor PyQt tools module ###\n\nimport re\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.lang.LmLanguages import get_tools_label as lx\nfrom LiveboxMonitor.tools.LmTools import error, send_email\n\n\n# ################################ VARS & DEFS ################################\n\n# Useful objects\nBOLD_FONT = QtGui.QFont()\nBOLD_FONT.setBold(True)\n\n# Value qualifiers\nclass ValQual(IntEnum):\n    Default = 0\n    Good = 1\n    Warn = 2\n    Error = 3\n\n# Table item data roles\nclass ItemDataRole(IntEnum):\n    ExportRole = QtCore.Qt.ItemDataRole.UserRole + 1\n    IconRole = QtCore.Qt.ItemDataRole.UserRole + 2\n\n\n# ################################ Tools ################################\n\n### Display an error popup\ndef display_error(error_msg, parent=None):\n    msg_box = QtWidgets.QMessageBox(parent)\n    msg_box.setWindowTitle(lx(\"Error\"))\n    msg_box.setIcon(QtWidgets.QMessageBox.Icon.Critical)\n    msg_box.setText(error_msg)\n    msg_box.exec()\n\n\n### Display a status popup\ndef display_status(status_msg, parent=None):\n    msg_box = QtWidgets.QMessageBox(parent)\n    msg_box.setWindowTitle(lx(\"Status\"))\n    msg_box.setIcon(QtWidgets.QMessageBox.Icon.Information)\n    msg_box.setText(status_msg)\n    msg_box.exec()\n\n\n### Ask a question and return True if OK clicked\ndef ask_question(question_msg, parent=None):\n    msg_box = QtWidgets.QMessageBox(parent)\n    msg_box.setWindowTitle(lx(\"Please confirm\"))\n    msg_box.setIcon(QtWidgets.QMessageBox.Icon.Question)\n    msg_box.setStandardButtons(QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No)\n    msg_box.setText(question_msg)\n    return msg_box.exec() == QtWidgets.QMessageBox.StandardButton.Yes\n\n\n### Display an info text popup\ndef display_infos(title, info_msg, info_doc=None, parent=None):\n    text_dialog = TextDialog(parent)\n    text_dialog.display(title, info_msg, info_doc)\n    text_dialog.exec()\n\n\n### Set mouse cursor to busy - Stack mode\ndef mouse_cursor_busy():\n    QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CursorShape.WaitCursor))\n\n\n### Restore mouse cursor to previous state - Stack mode\ndef mouse_cursor_normal():\n    QtWidgets.QApplication.restoreOverrideCursor()\n\n\n### Force mouse cursor to busy\ndef mouse_cursor_force_busy():\n    QtWidgets.QApplication.changeOverrideCursor(QtGui.QCursor(QtCore.Qt.CursorShape.WaitCursor))\n\n\n### Force mouse cursor to normal arrow\ndef mouse_cursor_force_normal():\n    QtWidgets.QApplication.changeOverrideCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor))\n\n\n### Async email sending task\nclass AsyncEmail(QtCore.QRunnable):\n    def __init__(self, email_setup, subject, message):\n        super().__init__()\n        self._email_setup = email_setup\n        self._subject = subject\n        self._message = message\n\n    def run(self):\n        if not send_email(self._email_setup, self._subject, self._message):\n            error(\"Email send failure. Check your email setup.\")\n\n\n### Send an email asynchronously\ndef async_send_email(email_setup, subject, message):\n    try:\n        if not QtCore.QThreadPool.globalInstance().tryStart(AsyncEmail(email_setup, subject, message)):\n            error(\"Cannot send email. No free thread in the pool.\")\n    except Exception as e:\n        error(f\"Cannot send email. Error: {e}\")\n\n\n\n# ################################ Formatting Tools ################################\n\n# ############# Display text dialog #############\nclass TextDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n\n        self._text_box = QtWidgets.QTextEdit()\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"))\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n\n        vbox.addWidget(self._text_box, 1)\n        vbox.addWidget(self._ok_button, 0)\n    \n\n    def display(self, title, text, doc=None):\n        self.setWindowTitle(title)\n        if doc is None:\n            text_doc = QtGui.QTextDocument(text)\n            font = QtGui.QFont(\"Courier New\", 9)\n            text_doc.setDefaultFont(font)\n            self._text_box.setDocument(text_doc)\n        else:\n            self._text_box.setDocument(doc)\n        self.resize(800, 500)\n        self.setModal(True)\n        self.show()\n\n\n\n# ############# Color picker button #############\n# Custom QtWidget to show a chosen color.\n# Left-clicking the button shows the color-chooser, while\n# right-clicking resets the color to None (no-color).\n\nclass ColorButton(QtWidgets.QPushButton):\n    _color_changed = QtCore.pyqtSignal(object)\n\n    def __init__(self, *args, color=None, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        self._color = None\n        self._default = color\n        self.pressed.connect(self.on_color_picker)\n\n        # Set the initial/default state.\n        self.set_color(self._default)\n\n\n    def set_color(self, color):\n        if color != self._color:\n            self._color = color\n            self._color_changed.emit(color)\n\n        if self._color:\n            self.setStyleSheet(\"QPushButton {background-color:%s}\" % self._color)\n        else:\n            self.setStyleSheet(\"\")\n\n\n    def get_color(self):\n        return self._color\n\n\n    def on_color_picker(self):\n        # Show color-picker dialog to select color.\n        # Qt will use the native dialog by default.\n\n        dialog = QtWidgets.QColorDialog()\n        if self._color:\n            dialog.setCurrentColor(QtGui.QColor(self._color))\n\n        if dialog.exec():\n            self.set_color(dialog.currentColor().name())\n\n\n    def mousePressEvent(self, event):\n        if event.button() == QtCore.Qt.MouseButton.RightButton:\n            self.set_color(self._default)\n\n        return super().mousePressEvent(event)\n\n\n\n# ############# Multi lines edit #############\n# Custom QtWidget to type a text on multilines without carriage return.\n\nclass MultiLinesEdit(QtWidgets.QPlainTextEdit):\n    ### Prevent carriage return, e.g. in plain text fields\n    def keyPressEvent(self, event):\n        if event.key() in (QtCore.Qt.Key.Key_Return, QtCore.Qt.Key.Key_Enter):\n            return\n        super().keyPressEvent(event)\n\n\n    ### Set the maximum height to a given nb of lines\n    def setLineNumber(self, lines):\n        f = QtGui.QFontMetrics(self.font())\n        m = self.contentsMargins()\n        d = (int(self.document().documentMargin()) + 1) * 2\n\n        self.setFixedHeight((lines * f.lineSpacing()) + m.top() + m.bottom() + d)\n\n\n\n# ############# Checkable ComboBox #############\n# Custom QComboBox to select multiple items \n# Sources:\n# https://gis.stackexchange.com/questions/350148/qcombobox-multiple-selection-pyqt5\n# https://github.com/user0706/pyqt6-multiselect-combobox/blob/main/pyqt6_multiselect_combobox/multiselect_combobox.py\n\nclass CheckableComboBox(QtWidgets.QComboBox):\n\n    # Subclass Delegate to increase item height\n    class Delegate(QtWidgets.QStyledItemDelegate):\n        def sizeHint(self, option, index):\n            size = super().sizeHint(option, index)\n            size.setHeight(20)\n            return size\n\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        # No placeholder text by default\n        self._placeholder_text = \"\"\n\n        # Make the combo editable to set a custom text, but readonly\n        self.setEditable(True)\n        self.lineEdit().setReadOnly(True)\n\n        # Make the lineedit the same color as QPushButton\n        palette = self.lineEdit().palette()\n        palette.setBrush(QtGui.QPalette.ColorRole.Base, palette.brush(QtGui.QPalette.ColorRole.Button))\n        self.lineEdit().setPalette(palette)\n\n        # Use custom delegate\n        self.setItemDelegate(CheckableComboBox.Delegate())\n\n        # Update the text when an item is toggled\n        self.model().dataChanged.connect(self.updateText)\n\n        # Hide and show popup when clicking the line edit\n        self.lineEdit().installEventFilter(self)\n        self.closeOnLineEditClick = False\n\n        # Prevent popup from closing when clicking on an item\n        self.view().viewport().installEventFilter(self)\n\n\n    def resizeEvent(self, event):\n        # Recompute text to elide as needed\n        self.updateText()\n        super().resizeEvent(event)\n\n\n    def eventFilter(self, obj, event):\n        if obj == self.lineEdit() and event.type() == QtCore.QEvent.Type.MouseButtonRelease:\n            if self.closeOnLineEditClick:\n                self.hidePopup()\n            else:\n                self.showPopup()\n            return True\n        if obj == self.view().viewport() and event.type() == QtCore.QEvent.Type.MouseButtonRelease:\n            index = self.view().indexAt(event.position().toPoint())\n            item = self.model().itemFromIndex(index)\n            if item.flags() & QtCore.Qt.ItemFlag.ItemIsUserCheckable:\n                if item.checkState() == QtCore.Qt.CheckState.Checked:\n                    item.setCheckState(QtCore.Qt.CheckState.Unchecked)\n                else:\n                    item.setCheckState(QtCore.Qt.CheckState.Checked)\n                return True\n            else:\n                call_back = item.data()\n                if call_back:\n                    call_back()\n                    return True\n        return False\n\n\n    def showPopup(self):\n        super().showPopup()\n        # When the popup is displayed, a click on the lineedit should close it\n        self.closeOnLineEditClick = True\n\n\n    def hidePopup(self):\n        super().hidePopup()\n        # Used to prevent immediate reopening when clicking on the lineEdit\n        self.startTimer(100)\n\n\n    def timerEvent(self, event):\n        # After timeout, kill timer, and reenable click on line edit\n        self.killTimer(event.timerId())\n        self.closeOnLineEditClick = False\n\n\n    def updateText(self):\n        texts = [self.model().item(i).text() for i in range(self.model().rowCount()) if self.model().item(i).checkState() == QtCore.Qt.CheckState.Checked]\n        text = \", \".join(texts) if texts else self._placeholder_text\n\n        # Compute elided text (with \"...\")\n        metrics = QtGui.QFontMetrics(self.lineEdit().font())\n        elidedText = metrics.elidedText(text, QtCore.Qt.TextElideMode.ElideRight, self.lineEdit().width())\n        self.lineEdit().setText(elidedText)\n\n\n    def addItem(self, text, data=None, selected=False):\n        item = QtGui.QStandardItem()\n        item.setText(text)\n        item.setData(data or text)\n        item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled | QtCore.Qt.ItemFlag.ItemIsUserCheckable)\n        if selected:\n            item.setData(QtCore.Qt.CheckState.Checked, QtCore.Qt.ItemDataRole.CheckStateRole)\n        else:\n            item.setData(QtCore.Qt.CheckState.Unchecked, QtCore.Qt.ItemDataRole.CheckStateRole)\n        self.model().appendRow(item)\n\n\n    def addItems(self, text_list, data_list=None):\n        for i, text in enumerate(text_list):\n            try:\n                data = data_list[i]\n            except (TypeError, IndexError):\n                data = None\n            self.addItem(text, data)\n\n\n    def addSelectableItem(self, text, call_back):\n        item = QtGui.QStandardItem()\n        item.setText(text)\n        item.setData(call_back)\n        self.model().appendRow(item)\n\n\n    def currentSelection(self):\n        return [self.model().item(i).text() for i in range(self.model().rowCount()) if self.model().item(i).checkState() == QtCore.Qt.CheckState.Checked]\n\n\n    def currentData(self):\n        return [self.model().item(i).data() for i in range(self.model().rowCount()) if self.model().item(i).checkState() == QtCore.Qt.CheckState.Checked]\n\n\n    def findData(self, data):\n        for i in range(self.model().rowCount()):\n            item = self.model().item(i)\n            if (item.flags() & QtCore.Qt.ItemFlag.ItemIsUserCheckable) and (item.data() == data):\n                return i\n        return -1\n\n\n    def setCurrentIndexes(self, indexes):\n        if indexes is None:\n            indexes = []\n        for i in range(self.model().rowCount()):\n            item = self.model().item(i)\n            if item.flags() & QtCore.Qt.ItemFlag.ItemIsUserCheckable:\n                item.setCheckState(QtCore.Qt.CheckState.Checked if i in indexes else QtCore.Qt.CheckState.Unchecked)\n        self.updateText()\n\n\n    def setSelection(self, text_list):\n        if text_list is None:\n            text_list = []\n        for i in range(self.model().rowCount()):\n            item = self.model().item(i)\n            if item.flags() & QtCore.Qt.ItemFlag.ItemIsUserCheckable:\n                item.setCheckState(QtCore.Qt.CheckState.Checked if self.model().item(i).text() in text_list else QtCore.Qt.CheckState.Unchecked)\n        self.updateText()\n\n\n    def setDataSelection(self, data_list):\n        if data_list is None:\n            data_list = []\n        for i in range(self.model().rowCount()):\n            item = self.model().item(i)\n            if item.flags() & QtCore.Qt.ItemFlag.ItemIsUserCheckable:\n                item.setCheckState(QtCore.Qt.CheckState.Checked if self.model().item(i).data() in data_list else QtCore.Qt.CheckState.Unchecked)\n        self.updateText()\n\n\n    def setPlaceholderText(self, text):\n        self._placeholder_text = text\n        self.updateText()\n\n\n    def showEvent(self, event):\n        super().showEvent(event)\n        self.updateText()\n\n\n# ############# Label with dynamic height #############\n# Works must better than a QLabel with auto wrap\n\nclass AutoHeightLabel(QtWidgets.QTextEdit):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n\n        self.setReadOnly(True)\n        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)\n        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)\n        self.setStyleSheet(\"QTextEdit {border: none; background: transparent; padding: 0;}\")\n        self.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.NoTextInteraction)\n        self.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu)\n\n        self.textChanged.connect(self.adjustHeight)\n\n\n    def setText(self, text):\n        self.document().setPlainText(text)\n\n\n    def adjustHeight(self):\n        doc = self.document()\n        margins = self.contentsMargins()\n        height = int(doc.size().height() + margins.top() + margins.bottom())\n        self.setFixedHeight(max(height, self.fontMetrics().height()))  # Min 1 line\n\n\n    def sizeHint(self):\n        return self.size()"
  },
  {
    "path": "src/LiveboxMonitor/app/LmTableWidget.py",
    "content": "### Livebox Monitor custom QTableWidget ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.dlg.LmExportTable import ExportTableDialog\n\nfrom LiveboxMonitor.lang.LmLanguages import get_main_label as lx\n\n\n# ################################ LmTableWidget class ################################\nclass LmTableWidget(QtWidgets.QTableWidget):\n    # Standard column strech setup\n    def set_header_resize(self, stretch_headers):\n        header = self.horizontalHeader()\n        header.setSectionsMovable(False)\n        header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeMode.Interactive)\n        for i in stretch_headers:\n            header.setSectionResizeMode(i, QtWidgets.QHeaderView.ResizeMode.Stretch)\n\n\n    # Setup all columns. Dict of list, #1=Title/#2=Width (0 is hidden)/#3=Tooltip tag if any\n    def set_columns(self, columns):\n        self.setColumnCount(len(columns))\n        model = self.horizontalHeader().model()\n\n        for col in columns:\n            col_setup = columns[col]\n            self.setHorizontalHeaderItem(col, QtWidgets.QTableWidgetItem(col_setup[0]))\n            if col_setup[1]:\n                self.setColumnWidth(col, col_setup[1])\n            else:\n                self.setColumnHidden(col, True)\n            if col_setup[2]:\n                model.setHeaderData(col, QtCore.Qt.Orientation.Horizontal, col_setup[2], QtCore.Qt.ItemDataRole.UserRole)\n\n\n    # Apply standard setup\n    def set_standard_setup(self, app, allow_sel=True, allow_sort=True):\n        self._app = app\n        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOn)\n        self.verticalHeader().hide()\n        if allow_sel:\n            self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)\n            self.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection)\n        else:\n            self.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.NoSelection)\n        self.setSortingEnabled(allow_sort)\n        self.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)\n        self.set_style()\n        self.set_context_menu()\n\n\n    # Apply standard style depending on platform\n    def set_style(self):\n        self.setGridStyle(QtCore.Qt.PenStyle.SolidLine)\n        self.setStyleSheet(LmConfig.LIST_STYLESHEET)\n        self.setFont(LmConfig.LIST_LINE_FONT)\n\n        header = self.horizontalHeader()\n        header.setStyleSheet(LmConfig.LIST_HEADER_STYLESHEET)\n        header.setFont(LmConfig.LIST_HEADER_FONT)\n        header.setFixedHeight(LmConf.ListHeaderHeight)\n\n        header = self.verticalHeader()\n        header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeMode.Fixed)\n        header.setDefaultSectionSize(LmConf.ListLineHeight)\n\n\n    # Ignore right click to prevent selection\n    def mousePressEvent(self, event):\n        if event.button() == QtCore.Qt.MouseButton.RightButton:\n            return\n        super().mousePressEvent(event)\n\n\n    # Setup context menu\n    def set_context_menu(self):\n        self.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.CustomContextMenu)\n        self.customContextMenuRequested.connect(self.show_table_context_menu)\n\n\n    # Display context menu\n    def show_table_context_menu(self, pos):\n        menu = QtWidgets.QMenu(self)\n        export_action = menu.addAction(lx(\"Export...\"))\n        action = menu.exec(self.mapToGlobal(pos))\n        if action == export_action:\n            self.export_table()\n\n\n    # Export table's content to a file\n    def export_table(self):\n        d = ExportTableDialog(self, self._app, self)\n        if d.exec():\n            d.do_export_table()\n\n\n### Sorting columns by numeric\nclass NumericSortItem(QtWidgets.QTableWidgetItem):\n    def __lt__(self, other):\n        x =  self.data(QtCore.Qt.ItemDataRole.UserRole)\n        y = other.data(QtCore.Qt.ItemDataRole.UserRole)\n        return (x or 0) < (y or 0)\n\n\n### Drawing centered icons\nclass CenteredIconsDelegate(QtWidgets.QStyledItemDelegate):\n    def __init__(self, parent, column_list):\n        super().__init__(parent)\n        self._column_list = column_list\n\n    def paint(self, painter, option, index):\n        if index.column() in self._column_list:\n            icon = index.data(QtCore.Qt.ItemDataRole.DecorationRole)\n            if icon is not None:\n                icon.paint(painter, option.rect)\n                return\n        super().paint(painter, option, index)\n\n\n### Drawing centered icons in QHeaderView\nclass CenteredIconHeaderView(QtWidgets.QHeaderView):\n    def __init__(self, parent, column_list):\n        super().__init__(QtCore.Qt.Orientation.Horizontal, parent)\n        self._column_list = column_list\n\n    def paintSection(self, painter, rect, index):\n        if index in self._column_list:\n            # If icon, first draw the column's normally - ensure title is an empty string during drawing\n            model = self.model()\n            title = model.headerData(index, QtCore.Qt.Orientation.Horizontal, QtCore.Qt.ItemDataRole.DisplayRole)\n            model.setHeaderData(index, QtCore.Qt.Orientation.Horizontal, \"\", QtCore.Qt.ItemDataRole.DisplayRole)\n            painter.save()\n            super().paintSection(painter, rect, index)\n            painter.restore()\n            model.setHeaderData(index, QtCore.Qt.Orientation.Horizontal, title, QtCore.Qt.ItemDataRole.DisplayRole)\n\n            # Then draw the icon stored in DisplayRole on top\n            icon = self.model().headerData(index, QtCore.Qt.Orientation.Horizontal, LmQtTools.ItemDataRole.IconRole)\n            if icon is not None:\n                icon.paint(painter, rect)\n        else:\n            super().paintSection(painter, rect, index)\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmTask.py",
    "content": "### Livebox Monitor task ###\n\nfrom PyQt6 import QtCore\n\nfrom LiveboxMonitor.app import LmQtTools\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ LmTask class ################################\nclass LmTask:\n    def __init__(self, app):\n        self._app = app\n        self._index = 0\n        self._stack = []\n\n\n    ### Start a task - they can be nested. Set only mouse cursor if task is None.\n    def start(self, task=None):\n        self._index += 1\n        self._stack.append(task)\n        LmQtTools.mouse_cursor_busy() # Stack cursor change\n        self.display(task)\n        LmTools.log_debug(1, f\"TASK STARTING stack={self._index} task={task}\")\n\n\n    ### Suspend a potential running task\n    def suspend(self):\n        if self._index:\n            LmQtTools.mouse_cursor_force_normal()\n\n\n    ### Resume a potential running task\n    def resume(self):\n        if self._index:\n            LmQtTools.mouse_cursor_force_busy()\n\n\n    ### Update a task by adding a status\n    def update(self, status):\n        if self._index:\n            task = self._stack[self._index - 1]\n            self.display(f\"{task} {status}.\" if task else f\"{status}.\")\n            LmTools.log_debug(1, f\"TASK UPDATE stack={self._index} - task={task} - status={status}\")\n\n\n    ### End a (nested) task\n    def end(self):\n        if self._index:\n            self._index -= 1\n            self._stack.pop()\n            LmQtTools.mouse_cursor_normal()   # Unstack cursor change\n\n            if self._index:\n                task = self._stack[self._index - 1]\n                self.display(task)\n            else:\n                task = \"<None>\"\n                self.display(None)\n\n            LmTools.log_debug(1, f\"TASK ENDING stack={self._index} - restoring={task}\")\n\n\n    ### Display task / erase status is None\n    def display(self, task):\n        if task:\n            if self._app._status_bar is None:\n                self._app.setWindowTitle(f\"{self._app.app_window_title()} - {task}\")\n            else:\n                self._app._status_bar.showMessage(task)\n                QtCore.QCoreApplication.sendPostedEvents()\n                QtCore.QCoreApplication.processEvents()\n        else:\n            if self._app._status_bar is None:\n                self._app.setWindowTitle(self._app.app_window_title())\n            else:\n                self._app._status_bar.clearMessage()\n                QtCore.QCoreApplication.processEvents()\n"
  },
  {
    "path": "src/LiveboxMonitor/app/LmThread.py",
    "content": "### Livebox Monitor thread ###\n\nfrom PyQt6 import QtCore\n\n\n# ################################ LmThread class ################################\nclass LmThread(QtCore.QObject):\n    def __init__(self, api, frequency=0):\n        super().__init__()\n        self._api = api\n        self._session = api._session if api else None\n        self._frequency = frequency\n        self._timer = None\n        self._loop = None\n        self._is_running = False\n        self._thread = QtCore.QThread()\n        self.moveToThread(self._thread)\n        self._thread.started.connect(self.run)\n        self._resume.connect(self.resume)\n        self._thread.start()\n\n\n    def run(self):\n        self._timer = QtCore.QTimer()\n        self._timer.timeout.connect(self.task)\n        self._loop = QtCore.QEventLoop()\n        self.resume()\n\n\n    def resume(self):\n        if not self._is_running:\n            self._timer.start(self._frequency)\n            self._is_running = True\n            self._loop.exec()\n            self._timer.stop()\n            self._is_running = False\n\n\n    def stop(self):\n        if self._is_running:\n            self._loop.exit()\n\n\n    def quit(self):\n        self._thread.quit()\n        self._thread.wait()\n        self._thread = None\n"
  },
  {
    "path": "src/LiveboxMonitor/app/__init__.py",
    "content": ""
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmAddGraph.py",
    "content": "### Livebox Monitor add Graph dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_add_graph_label as lx\n\n\n# ################################ VARS & DEFS ################################\n\n# Config default\nDCFG_OBJECT_COLOR = [ \"#E26043\",  # (226, 96, 67)\n                      \"#626DF4\",  # (98, 109, 244)\n                      \"#65F4B4\",  # (101, 244, 180)\n                      \"#EDF465\",  # (237, 244, 101)\n                      \"#B474F4\",  # (180, 116, 244)\n                      \"#42F4F4\",  # (66, 244, 244)\n                      \"#FF0000\",  # (255, 0, 0)\n                      \"#00FF00\",  # (0, 255, 0)\n                      \"#0000FF\",  # (0, 0, 255)\n                      \"#FFFF00\",  # (255, 255, 0)\n                      \"#FF00FF\" ]  # (255, 0, 255)\n\n# Graph type\nclass GraphType:\n    INTERFACE = \"inf\"  # Must be 3 chars\n    DEVICE = \"dvc\"   # Must be 3 chars\n\n\n# ################################ Add Graph dialog ################################\nclass AddGraphDialog(QtWidgets.QDialog):\n    def __init__(self, parent):\n        super().__init__(parent)\n        self.resize(250, 150)\n\n        self._app = parent\n\n        type_label = QtWidgets.QLabel(lx(\"Type\"), objectName=\"typeLabel\")\n        self._type_combo = QtWidgets.QComboBox(objectName=\"typeCombo\")\n        self._type_combo.addItem(lx(\"Interface\"))\n        self._type_combo.addItem(lx(\"Device\"))\n        self._type_combo.activated.connect(self.type_selected)\n\n        object_label = QtWidgets.QLabel(lx(\"Object\"), objectName=\"objectLabel\")\n        self._object_combo = QtWidgets.QComboBox(objectName=\"objectCombo\")\n        self._object_combo.activated.connect(self.object_selected)\n        self.load_object_list()\n\n        color_label = QtWidgets.QLabel(lx(\"Color\"), objectName=\"colorLabel\")\n        self._color_edit = LmQtTools.ColorButton(objectName=\"colorEdit\")\n        self._color_edit.set_color(DCFG_OBJECT_COLOR[self._app._graph_list.rowCount() % len(DCFG_OBJECT_COLOR)])\n        self._color_edit._color_changed.connect(self.color_selected)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(type_label, 0, 0)\n        grid.addWidget(self._type_combo, 0, 1)\n        grid.addWidget(object_label, 1, 0)\n        grid.addWidget(self._object_combo, 1, 1)\n        grid.addWidget(color_label, 2, 0)\n        grid.addWidget(self._color_edit, 2, 1)\n        grid.setColumnStretch(1, 1)\n\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        id_label = QtWidgets.QLabel(lx(\"ID:\"), objectName=\"IDLabel\")\n        self._id = QtWidgets.QLabel(objectName=\"IDValue\")\n        measure_nb_label = QtWidgets.QLabel(lx(\"Measures number:\"), objectName=\"measureLabel\")\n        self._measure_nb = QtWidgets.QLabel(objectName=\"measureValue\")\n        history_label = QtWidgets.QLabel(lx(\"History:\"), objectName=\"historyLabel\")\n        self._history = QtWidgets.QLabel(objectName=\"historyValue\")\n\n        info_grid = QtWidgets.QGridLayout()\n        info_grid.setSpacing(8)\n        info_grid.addWidget(id_label, 0, 0)\n        info_grid.addWidget(self._id, 0, 1)\n        info_grid.addWidget(measure_nb_label, 1, 0)\n        info_grid.addWidget(self._measure_nb, 1, 1)\n        info_grid.addWidget(history_label, 2, 0)\n        info_grid.addWidget(self._history, 2, 1)\n        info_grid.setColumnStretch(1, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(18)\n        vbox.addLayout(grid, 0)\n        vbox.addWidget(separator)\n        vbox.addLayout(info_grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"addgraph\")\n\n        self.setWindowTitle(lx(\"Add a graph\"))\n        self.udpdate_infos()\n        self.set_ok_button_state()\n        self.setModal(True)\n        self.show()\n\n\n    def load_object_list(self):\n        self._object_combo.clear()\n\n        if self.get_type() == GraphType.DEVICE:\n            self.load_device_list()\n        else:\n            self.load_interface_list()\n\n\n    def load_interface_list(self):\n        for i in self._app._graph_valid_interfaces:\n            k = i[0]\n            # Look if not already in the graph list\n            if self._app.find_graph_object_line(GraphType.INTERFACE, k) == -1:\n                intf = next((j for j in self._app._api._intf.get_list() if j[\"Key\"] == k), None)\n                if intf is not None:\n                    self._object_combo.addItem(intf[\"Name\"], userData=k)\n\n\n    def load_device_list(self):\n        for d in self._app._graph_valid_devices:\n            k = d[0]\n            # Look if not already in the graph list\n            if self._app.find_graph_object_line(GraphType.DEVICE, k) == -1:\n                try:\n                    name = LmConf.MacAddrTable[k]\n                except KeyError:\n                    name = k\n                self._object_combo.addItem(name, userData=k)\n\n\n    def type_selected(self, index):\n        self.load_object_list()\n        self.udpdate_infos()\n        self.set_ok_button_state()\n\n\n    def object_selected(self, index):\n        self.udpdate_infos()\n\n\n    def color_selected(self, color):\n        self.set_ok_button_state()\n\n\n    def udpdate_infos(self):\n     # Update infos according to selected object\n        type = self.get_type()\n        key = self.get_object_key()\n        if type == GraphType.INTERFACE:\n            table = self._app._graph_valid_interfaces\n            frequency = self._app._stat_frequency_interfaces\n        else:\n            table = self._app._graph_valid_devices\n            frequency = self._app._stat_frequency_devices\n\n  # Search key in the table\n        entry = next((o for o in table if o[0] == key), [\"\", 0, \"\"])\n        measure_nb = entry[1]\n        history = measure_nb / ( 60 / frequency) / 60\n\n        # Update infos\n        self._id.setText(entry[2])\n        self._measure_nb.setText(str(measure_nb))\n        self._history.setText(lx(\"{:.1f} hours\").format(history))\n\n\n    def set_ok_button_state(self):\n        self._ok_button.setDisabled((self._object_combo.count() == 0) or (self.get_color() is None))\n\n\n    def get_type(self):\n        if self._type_combo.currentIndex():\n            return GraphType.DEVICE\n        return GraphType.INTERFACE\n\n\n    def get_object_key(self):\n        return self._object_combo.currentData()\n\n\n    def get_object_id(self):\n        return self._id.text()\n\n\n    def get_object_name(self):\n        return self._object_combo.currentText()\n\n\n    def get_color(self):\n        return self._color_edit.get_color()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmBackupRestore.py",
    "content": "### Livebox Monitor Backup & Restore setup dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.lang.LmLanguages import get_backup_restore_label as lx, get_actions_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ Backup & Restore setup dialog ################################\nclass BackupRestoreDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(400, 300)\n\n        self._app = parent\n        self._api = parent._api\n\n        # Backup info box\n        auto_backup_enabled_label = QtWidgets.QLabel(lx(\"Auto backup enabled:\"), objectName=\"autoBackEnabledLabel\")\n        self._auto_backup_enabled = QtWidgets.QLabel(objectName=\"autoBackEnabled\")\n\n        status_label = QtWidgets.QLabel(lx(\"Status:\"), objectName=\"statusLabel\")\n        self._status = QtWidgets.QLabel(objectName=\"status\")\n\n        last_backup_label = QtWidgets.QLabel(lx(\"Last Backup:\"), objectName=\"lastBackupLabel\")\n        self._last_backup = QtWidgets.QLabel(objectName=\"lastBackup\")\n\n        info_grid = QtWidgets.QGridLayout()\n        info_grid.setSpacing(5)\n        info_grid.addWidget(auto_backup_enabled_label, 0, 0)\n        info_grid.addWidget(self._auto_backup_enabled, 0, 1)\n        info_grid.addWidget(status_label, 1, 0)\n        info_grid.addWidget(self._status, 1, 1)\n        info_grid.addWidget(last_backup_label, 2, 0)\n        info_grid.addWidget(self._last_backup, 2, 1)\n\n        refresh_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_button.clicked.connect(self.refresh_status)\n\n        enable_auto_backup_button = QtWidgets.QPushButton(lx(\"Enable Auto Backup\"), objectName=\"enaAutoBack\")\n        enable_auto_backup_button.clicked.connect(self.enable_auto_backup)\n\n        disable_auto_backup_button = QtWidgets.QPushButton(lx(\"Disable Auto Backup\"), objectName=\"disAutoBack\")\n        disable_auto_backup_button.clicked.connect(self.disable_auto_backup)\n\n        force_backup_button = QtWidgets.QPushButton(lx(\"Force Backup\"), objectName=\"forceBackup\")\n        force_backup_button.clicked.connect(self.force_backup)\n\n        force_restore_button = QtWidgets.QPushButton(lx(\"Force Restore\"), objectName=\"forceRestore\")\n        force_restore_button.clicked.connect(self.force_restore)\n\n        button_grid = QtWidgets.QGridLayout()\n        button_grid.setSpacing(10)\n        button_grid.addWidget(refresh_button, 0, 0)\n        button_grid.addWidget(enable_auto_backup_button, 1, 0)\n        button_grid.addWidget(disable_auto_backup_button, 2, 0)\n        button_grid.addWidget(force_backup_button, 3, 0)\n        button_grid.addWidget(force_restore_button, 4, 0)\n\n        hbox = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(ok_button, 1, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(40)\n        vbox.addLayout(info_grid, 0)\n        vbox.addLayout(button_grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"backrest\")\n\n        self.refresh_status()\n\n        self.setWindowTitle(lx(\"Backup and Restore Setup\"))\n        self.setModal(True)\n        self.show()\n\n\n    def refresh_status(self):\n        try:\n            d = self._api._backup.get_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot load backup and restore status.\", \"backRestSvcErr\"))\n            return\n\n        enabled = d.get(\"Enable\", False)\n        if enabled:\n            self._auto_backup_enabled.setPixmap(LmIcon.TickPixmap)\n        else:\n            self._auto_backup_enabled.setPixmap(LmIcon.CrossPixmap)\n\n        status = d.get(\"Status\", \"-\")\n        self._status.setText(status)\n\n        last_backup = d.get(\"ConfigDate\")\n        if last_backup:\n            self._last_backup.setText(LmTools.fmt_livebox_timestamp(last_backup, False))\n        else:\n            self._last_backup.setText(\"-\")\n\n\n    def enable_auto_backup(self):\n        try:\n            self._api._backup.set_auto_backup_enable(True)\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot enable auto backup.\", \"backEnableSvcErr\"))\n        else:\n            self.refresh_status()\n\n\n    def disable_auto_backup(self):\n        try:\n            self._api._backup.set_auto_backup_enable(False)\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot disable auto backup.\", \"backDisableSvcErr\"))\n        else:\n            self.refresh_status()\n\n\n    def force_backup(self):\n        try:\n            self._api._backup.do_backup()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Backup request failed.\", \"backupSvcErr\"))\n        else:\n            self._app.display_status(mx(\"Backup requested.\", \"backupSvcOk\"))\n            self.refresh_status()\n\n\n    def force_restore(self):\n        try:\n            self._api._backup.do_restore()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Restore request failed.\", \"restoreSvcErr\"))\n        else:\n            self._app.display_status(mx(\"Restore requested. Livebox will restart.\", \"restoreSvcOk\"))\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmCallApi.py",
    "content": "### Livebox Monitor Call API dialog ###\n\nimport json\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import call_api_label as lx\n\n\n# ################################ VARS & DEFS ################################\n\n# Preset calls\nPRESET_CALLS = {\n    \"Device Information\":\n        {\"Serv\": \"DeviceInfo\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Livebox Configuration\":\n        {\"Serv\": \"Devices.Device.[MAC]\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Device Model\":\n        {\"Serv\": \"UPnP-IGD\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Interface List\":\n        {\"Serv\": \"HomeLan.Interface\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Interface Keys\":\n        {\"Serv\": \"NeMo.Intf.lo\",\n         \"Meth\": \"getIntfs\",\n         \"Parm\": '{\"traverse\": \"all\"}',\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Device List\":\n        {\"Serv\": \"Devices\",\n         \"Meth\": \"get\",\n         \"Parm\": '{\"expression\": \"physical and !self and !voice\"}',\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Device Topology\":\n        {\"Serv\": \"TopologyDiagnostics\",\n         \"Meth\": \"buildTopology\",\n         \"Parm\": '{\"SendXmlFile\": \"false\"}',\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Wifi Status\":\n        {\"Serv\": \"NMC.Wifi\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Guest Wifi Status\":\n        {\"Serv\": \"NMC.Guest\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Wifi Scheduler\":\n        {\"Serv\": \"Scheduler\",\n         \"Meth\": \"getCompleteSchedules\",\n         \"Parm\": '{\"type\": \"WLAN\"}',\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Power Management Profiles\":\n        {\"Serv\": \"PowerManagement\",\n         \"Meth\": \"getProfiles\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Memory Status\":\n        {\"Serv\": \"DeviceInfo.MemoryStatus\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Time\":\n        {\"Serv\": \"Time\",\n         \"Meth\": \"getTime\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"WAN Status\":\n        {\"Serv\": \"NMC\",\n         \"Meth\": \"getWANStatus\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Connection Status\":\n        {\"Serv\": \"NMC\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Uplink Information\":\n        {\"Serv\": \"UplinkMonitor.DefaultGateway\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"MTU\":\n        {\"Serv\": \"NeMo.Intf.data\",\n         \"Meth\": \"getFirstParameter\",\n         \"Parm\": '{\"name\": \"MTU\"}',\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"IPv6 Status\":\n        {\"Serv\": \"NMC.IPv6\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"IPv6 Mode\":\n        {\"Serv\": \"NMC.Autodetect\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"CGNat Status\":\n        {\"Serv\": \"NMC.ServiceEligibility.DSLITE\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"DHCP Setup\":\n        {\"Serv\": \"NMC\",\n         \"Meth\": \"getLANIP\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"DHCP MIBs\":\n        {\"Serv\": \"NeMo.Intf.data\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": '{\"mibs\": \"dhcp dhcpv6\"}',\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Ethernet MIBs\":\n        {\"Serv\": \"NeMo.Intf.lan\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": '{\"mibs\": \"base eth\"}',\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Wifi MIBs\":\n        {\"Serv\": \"NeMo.Intf.lan\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": '{\"mibs\": \"base wlanradio wlanvap\"}',\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Guest Wifi MIBs\":\n        {\"Serv\": \"NeMo.Intf.guest\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": '{\"mibs\": \"base wlanradio wlanvap\"}',\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Data MIBs\":\n        {\"Serv\": \"NeMo.Intf.data\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"LAN MIBs\":\n        {\"Serv\": \"NeMo.Intf.lan\",\n         \"Meth\": \"getMIBs\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Reboot Information\":\n        {\"Serv\": \"NMC.Reboot\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Reboot History\":\n        {\"Serv\": \"NMC.Reboot.Reboot\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": True},\n\n    \"Backup Status\":\n        {\"Serv\": \"NMC.NetworkConfig\",\n         \"Meth\": \"get\",\n         \"Parm\": \"{}\",\n         \"Lbox\": True , \"Wrep\": False},\n\n    \"Start Backup\":\n        {\"Serv\": \"NMC.NetworkConfig\",\n         \"Meth\": \"launchNetworkBackup\",\n         \"Parm\": '{\"delay\" : True}',\n         \"Lbox\": True , \"Wrep\": False}\n}\n\n\n# ################################ IPv6 dialog ################################\nclass CallApiDialog(QtWidgets.QDialog):\n    def __init__(self, api_registry, parent=None):\n        super().__init__(parent)\n        self.resize(650, 900)\n        self._app = parent\n        self._api = api_registry\n\n        # Preset combo\n        preset_label = QtWidgets.QLabel(lx(\"Preset\"), objectName=\"presetLabel\")\n        self._preset_combo = QtWidgets.QComboBox(objectName=\"presetCombo\")\n        self.load_presets()\n        self._preset_combo.activated.connect(self.preset_selected)\n\n        # Service/Method box\n        service_label = QtWidgets.QLabel(lx(\"Service\"), objectName=\"serviceLabel\")\n        self._service = QtWidgets.QLineEdit(objectName=\"service\")\n        method_label = QtWidgets.QLabel(lx(\"Method\"), objectName=\"methodLabel\")\n        self._method = QtWidgets.QLineEdit(objectName=\"method\")\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(preset_label, 0, 0)\n        grid.addWidget(self._preset_combo, 0, 1, 1, 3)\n        grid.addWidget(service_label, 1, 0)\n        grid.addWidget(self._service, 1, 1)\n        grid.addWidget(method_label, 1, 2)\n        grid.addWidget(self._method, 1, 3)\n\n        # Parameters\n        parameters_label = QtWidgets.QLabel(lx(\"Parameters (JSON):\"), objectName=\"parametersLabel\")\n        self._parameters = QtWidgets.QTextEdit(objectName=\"parametersEdit\")\n        text_doc = QtGui.QTextDocument(\"{}\")\n        font = QtGui.QFont(\"Courier New\", 9)\n        text_doc.setDefaultFont(font)\n        self._parameters.setDocument(text_doc)\n\n        # Call button\n        call_button = QtWidgets.QPushButton(lx(\"Call\"), objectName=\"call\")\n        call_button.clicked.connect(self.call)\n        call_button.setDefault(True)\n\n        # Reply\n        self._reply = QtWidgets.QTextEdit(objectName=\"replyEdit\")\n\n        # Button bar\n        hbox = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        hbox.addWidget(ok_button, 1, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addWidget(parameters_label, 0)\n        vbox.addWidget(self._parameters, 1)\n        vbox.addWidget(call_button, 1)\n        vbox.addWidget(self._reply, 1)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"callapi\")\n\n        self.setWindowTitle(lx(\"Call APIs\"))\n        self.setModal(True)\n        self.show()\n\n\n    def load_presets(self):\n        key = \"Wrep\" if self._api._is_repeater else \"Lbox\"\n        preset_items = [p for p in PRESET_CALLS if PRESET_CALLS[p][key]]\n        self._preset_combo.addItems(preset_items)\n        self._preset_combo.setCurrentIndex(-1)\n\n\n    def preset_selected(self, index):\n        preset = self._preset_combo.currentText()\n        entry = PRESET_CALLS.get(preset)\n        if entry:\n            mac = self._api._info.get_mac()\n            self._service.setText(entry[\"Serv\"].replace('[MAC]', mac))\n            self._method.setText(entry[\"Meth\"])\n            self.set_parameters(entry[\"Parm\"].replace('[MAC]', mac))\n\n\n    def call(self):\n        # Get service name\n        service = self._service.text().strip()\n        if not service:\n            self.set_reply(\"You must specify a service name.\")\n            return\n\n        # Get method name\n        method = self._method.text().strip()\n\n        # Get parameters\n        args_text = self._parameters.toPlainText().strip()\n        args = None\n        if args_text:\n            try:\n                args = json.loads(args_text)\n            except Exception as e:\n                self.set_reply(\"Parameters are not valid JSON.\")\n                return\n\n        # Trigger the call\n        self.set_reply(\"\")\n        self._app._task.start()\n        try:\n            d = self._api._session.request(service, method or None, args or None, timeout=30)\n        except Exception as e:\n            self.set_reply(str(e))\n            return\n        finally:\n             self._app._task.end()\n\n        # Display the reply\n        try:\n            reply = json.dumps(d, indent=2)\n        except Exception as e:\n            reply = f\"Bad JSON: {d}.\"\n        self.set_reply(reply)\n\n\n    def set_parameters(self, text):\n        self.set_document_field(self._parameters, text)\n\n\n    def set_reply(self, text):\n        self.set_document_field(self._reply, text)\n\n\n    def set_document_field(self, field, text):\n        text_doc = QtGui.QTextDocument(text)\n        font = QtGui.QFont(\"Courier New\", 9)\n        text_doc.setDefaultFont(font)\n        field.setDocument(text_doc)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDeviceName.py",
    "content": "### Livebox Monitor device name dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_device_name_label as lx\n\n\n# ################################ Set device name dialog ################################\nclass SetDeviceNameDialog(QtWidgets.QDialog):\n    def __init__(self, device_key, name, livebox_name, dns_name, parent=None):\n        super().__init__(parent)\n        self.resize(350, 200)\n\n        label = QtWidgets.QLabel(lx(\"Names for [{}] device:\").format(device_key), objectName=\"mainLabel\")\n\n        self._name_checkbox = QtWidgets.QCheckBox(lx(\"Local Name\"), objectName=\"nameCheckBox\")\n        self._name_checkbox.clicked.connect(self.name_click)\n        self._name_edit = QtWidgets.QLineEdit(objectName=\"nameEdit\")\n        if name is None:\n            self._name_checkbox.setChecked(False)\n            self._name_edit.setDisabled(True)\n            self._current_name = \"\"\n        else:\n            self._name_checkbox.setChecked(True)\n            self._current_name = name\n            self._name_edit.setText(self._current_name)\n\n        self._livebox_name_checkbox = QtWidgets.QCheckBox(lx(\"Livebox Name\"), objectName=\"liveboxNameCheckBox\")\n        self._livebox_name_checkbox.clicked.connect(self.livebox_name_click)\n        self._livebox_name_edit = QtWidgets.QLineEdit(objectName=\"liveboxNameEdit\")\n        if livebox_name is None:\n            self._livebox_name_checkbox.setChecked(False)\n            self._livebox_name_edit.setDisabled(True)\n            self._current_livebox_name = \"\"\n        else:\n            self._livebox_name_checkbox.setChecked(True)\n            self._current_livebox_name = livebox_name\n            self._livebox_name_edit.setText(self._current_livebox_name)\n\n        self._dns_name_checkbox = QtWidgets.QCheckBox(lx(\"DNS Name\"), objectName=\"dnsNameCheckBox\")\n        self._dns_name_checkbox.clicked.connect(self.dns_name_click)\n        self._dns_name_edit = QtWidgets.QLineEdit(objectName=\"dnsNameEdit\")\n        if dns_name is None:\n            self._dns_name_checkbox.setChecked(False)\n            self._dns_name_edit.setDisabled(True)\n            self._current_dns_name = \"\"\n        else:\n            self._dns_name_checkbox.setChecked(True)\n            self._current_dns_name = dns_name\n            self._dns_name_edit.setText(self._current_dns_name)\n\n        name_grid = QtWidgets.QGridLayout()\n        name_grid.setSpacing(10)\n        name_grid.addWidget(self._name_checkbox, 0, 0)\n        name_grid.addWidget(self._name_edit, 0, 1)\n        name_grid.addWidget(self._livebox_name_checkbox, 1, 0)\n        name_grid.addWidget(self._livebox_name_edit, 1, 1)\n        name_grid.addWidget(self._dns_name_checkbox, 2, 0)\n        name_grid.addWidget(self._dns_name_edit, 2, 1)\n\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(label, 0)\n        vbox.addLayout(name_grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"dname\")\n\n        self.setWindowTitle(lx(\"Assign device names\"))\n        self.setModal(True)\n        self.show()\n\n\n    def name_click(self):\n        if self._name_checkbox.isChecked():\n            self._name_edit.setDisabled(False)\n            self._name_edit.setText(self._current_name)\n        else:\n            self._name_edit.setDisabled(True)\n            self._name_edit.setText(\"\")\n\n\n    def livebox_name_click(self):\n        if self._livebox_name_checkbox.isChecked():\n            self._livebox_name_edit.setDisabled(False)\n            self._livebox_name_edit.setText(self._current_livebox_name)\n        else:\n            self._livebox_name_edit.setDisabled(True)\n            self._livebox_name_edit.setText(\"\")\n\n\n    def dns_name_click(self):\n        if self._dns_name_checkbox.isChecked():\n            self._dns_name_edit.setDisabled(False)\n            self._dns_name_edit.setText(self._current_dns_name)\n        else:\n            self._dns_name_edit.setDisabled(True)\n            self._dns_name_edit.setText(\"\")\n\n\n    def get_name(self):\n        if self._name_checkbox.isChecked():\n            return self._name_edit.text()\n        return None\n\n\n    def get_livebox_name(self):\n        if self._livebox_name_checkbox.isChecked():\n            return self._livebox_name_edit.text()\n        return None\n\n\n    def get_dns_name(self):\n        if self._dns_name_checkbox.isChecked():\n            return self._dns_name_edit.text()\n        return None\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDeviceType.py",
    "content": "### Livebox Monitor device type dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_device_type_label as lx\n\n\n# ################################ Set device type dialog ################################\nclass SetDeviceTypeDialog(QtWidgets.QDialog):\n    def __init__(self, device_key, device_type_key, parent=None):\n        super().__init__(parent)\n        self.resize(320, 170)\n\n        self._ignore_signal = False\n\n        label = QtWidgets.QLabel(lx(\"Type for [{}] device:\").format(device_key), objectName=\"mainLabel\")\n\n        self._type_name_combo = QtWidgets.QComboBox(objectName=\"typeNameCombo\")\n        self._type_name_combo.setIconSize(QtCore.QSize(45, 45))\n\n        for i, d in enumerate(LmConfig.DEVICE_TYPES):\n            self._type_name_combo.addItem(d[\"Name\"])\n            self._type_name_combo.setItemIcon(i, QtGui.QIcon(d[\"PixMap\"]))\n        self._type_name_combo.activated.connect(self.type_name_selected)\n\n        self._type_key_edit = QtWidgets.QLineEdit(objectName=\"typeKeyEdit\")\n        self._type_key_edit.textChanged.connect(self.type_key_typed)\n        self._type_key_edit.setText(device_type_key)\n\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addWidget(label, 0)\n        vbox.addWidget(self._type_name_combo, 0)\n        vbox.addWidget(self._type_key_edit, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"dtype\")\n\n        self.setWindowTitle(lx(\"Assign a device type\"))\n        self.setModal(True)\n        self.show()\n\n\n    def get_type_key(self):\n        return self._type_key_edit.text()\n\n\n    def type_name_selected(self, index):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            self._type_key_edit.setText(LmConfig.DEVICE_TYPES[index][\"Key\"])\n            self._ignore_signal = False\n\n\n    def type_key_typed(self, type_key):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n\n            # Find the index where 'Key' matches type_key, default to 0 if not found\n            i = next((idx for idx, d in enumerate(LmConfig.DEVICE_TYPES) if d[\"Key\"] == type_key), 0)\n\n            self._type_name_combo.setCurrentIndex(i)\n            self._ignore_signal = False\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDhcpBinding.py",
    "content": "### Livebox Monitor Add DHCP binding dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_dhcp_binding_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ Add DHCP binding setup dialog ################################\nclass AddDhcpBindingDialog(QtWidgets.QDialog):\n    def __init__(self, home_ip_suggest, guest_ip_suggest, parent=None):\n        super().__init__(parent)\n        self.resize(350, 180)\n\n        self._home_ip_suggest = home_ip_suggest\n        self._guest_ip_suggest = guest_ip_suggest\n        self._ignore_signal = False\n\n        device_label = QtWidgets.QLabel(lx(\"Device\"), objectName=\"deviceLabel\")\n        self._device_combo = QtWidgets.QComboBox(objectName=\"deviceCombo\")\n        self.load_device_list()\n        for d in self._combo_device_list:\n            self._device_combo.addItem(d[\"Name\"])\n        self._device_combo.activated.connect(self.device_selected)\n\n        mac_label = QtWidgets.QLabel(lx(\"MAC address\"), objectName=\"macLabel\")\n        self._mac_edit = QtWidgets.QLineEdit(objectName=\"macEdit\")\n        mac_reg_exp = QtCore.QRegularExpression(\"^\" + LmTools.MAC_RS + \"$\")\n        mac_validator = QtGui.QRegularExpressionValidator(mac_reg_exp)\n        self._mac_edit.setValidator(mac_validator)\n        self._mac_edit.textChanged.connect(self.mac_typed)\n\n        domain_label = QtWidgets.QLabel(lx(\"Domain\"), objectName=\"domainLabel\")\n        self._domain_combo = QtWidgets.QComboBox(objectName=\"domainCombo\")\n        self._domain_combo.addItems([\"Home\", \"Guest\"])\n        self._domain_combo.activated.connect(self.domain_selected)\n\n        ip_label = QtWidgets.QLabel(lx(\"IP address\"), objectName=\"ipLabel\")\n        self._ip_edit = QtWidgets.QLineEdit(objectName=\"ipEdit\")\n        ip_reg_exp = QtCore.QRegularExpression(\"^\" + LmTools.IPv4_RS + \"$\")\n        ip_validator = QtGui.QRegularExpressionValidator(ip_reg_exp)\n        self._ip_edit.setValidator(ip_validator)\n        self._ip_edit.textChanged.connect(self.ip_typed)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(device_label, 0, 0)\n        grid.addWidget(self._device_combo, 0, 1)\n        grid.addWidget(mac_label, 1, 0)\n        grid.addWidget(self._mac_edit, 1, 1)\n        grid.addWidget(domain_label, 2, 0)\n        grid.addWidget(self._domain_combo, 2, 1)\n        grid.addWidget(ip_label, 3, 0)\n        grid.addWidget(self._ip_edit, 3, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"dbinding\")\n\n        self.setWindowTitle(lx(\"Add DHCP binding\"))\n        self.suggest_ip()\n        self.set_ok_button_state()\n        self.setModal(True)\n        self.show()\n\n\n    def load_device_list(self):\n        self._deviceList = self.parent().get_device_list()\n        self._combo_device_list = []\n\n        # Load from MacAddrTable file\n        for d in LmConf.MacAddrTable:\n            device = {\n                \"Name\": LmConf.MacAddrTable[d],\n                \"MAC\": d\n            }\n            self._combo_device_list.append(device)\n\n        # Load from device list if not already loaded\n        for d in self._deviceList:\n            if (len(d[\"MAC\"])) and (not any(e[\"MAC\"] == d[\"MAC\"] for e in self._combo_device_list)):\n                device = {\n                    \"Name\": d[\"LBName\"],\n                    \"MAC\": d[\"MAC\"]\n                }\n                self._combo_device_list.append(device)\n\n        # Sort by name\n        self._combo_device_list = sorted(self._combo_device_list, key = lambda x: x[\"Name\"])\n\n        # Insert unknown device at the beginning\n        device = {\n            \"Name\": lx(\"-Unknown-\"),\n            \"MAC\": \"\"\n        }\n        self._combo_device_list.insert(0, device)\n\n\n    def device_selected(self, index):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            self._mac_edit.setText(self._combo_device_list[index][\"MAC\"])\n            self._ignore_signal = False\n            self.suggest_ip()\n\n\n    def domain_selected(self, index):\n        self.suggest_ip()\n\n\n    def mac_typed(self, mac):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n\n            # Find index of device with matching MAC, default to 0 if not found\n            index = next((i for i, d in enumerate(self._combo_device_list) if d[\"MAC\"] == mac), 0)\n            self._device_combo.setCurrentIndex(index)\n            if index:\n                self.suggest_ip()\n            self._ignore_signal = False\n        self.set_ok_button_state()\n\n\n    def ip_typed(self, iIp):\n        self.set_ok_button_state()\n\n\n    def suggest_ip(self):\n        domain = self.get_domain()\n\n        # Search if MAC corresponds to an active IP\n        ip = None\n        mac = self.get_mac_address()\n        if mac:\n            device = next((d for d in self._deviceList if (d[\"MAC\"] == mac) and d[\"Active\"]), None)\n            if device:\n                ip = device[\"IP\"]\n\n        # Check if IP is in the domain network\n        if ip is not None:\n            if not self.parent().is_ip_in_network(ip, domain):\n                ip = None\n\n        # If no IP found, suggest the next available one\n        if ip is None:\n            if domain == \"Home\":\n                ip = self._home_ip_suggest\n            else:\n                ip = self._guest_ip_suggest\n\n        self._ip_edit.setText(ip)\n\n\n    def set_ok_button_state(self):\n        self._ok_button.setDisabled((len(self.get_mac_address()) == 0) or (len(self.get_ip_address()) == 0))\n\n\n    def get_mac_address(self):\n        return self._mac_edit.text()\n\n\n    def get_domain(self):\n        return self._domain_combo.currentText()\n\n\n    def get_ip_address(self):\n        return self._ip_edit.text()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDhcpSetup.py",
    "content": "### Livebox Monitor DHCP Setup dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_dhcp_setup_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ DHCP Setup dialog ################################\nclass DhcpSetupDialog(QtWidgets.QDialog):\n    def __init__(self, enabled, address, mask, min_addr, max_addr, parent=None):\n        super().__init__(parent)\n        self.resize(300, 225)\n\n        self._enable_checkbox = QtWidgets.QCheckBox(lx(\"DHCP Enabled\"), objectName=\"enableCheckbox\")\n        self._enable_checkbox.setChecked(enabled)\n\n        ip_reg_exp = QtCore.QRegularExpression(\"^\" + LmTools.IPv4_RS + \"$\")\n        ip_validator = QtGui.QRegularExpressionValidator(ip_reg_exp)\n\n        livebox_ip_label = QtWidgets.QLabel(lx(\"Livebox IP address\"), objectName=\"liveboxIpLabel\")\n        self._livebox_ip_edit = QtWidgets.QLineEdit(objectName=\"liveboxIpEdit\")\n        self._livebox_ip_edit.setValidator(ip_validator)\n        self._livebox_ip_edit.setText(address)\n        self._livebox_ip_edit.textChanged.connect(self.text_typed)\n\n        mask_label = QtWidgets.QLabel(lx(\"Subnet mask\"), objectName=\"maskLabel\")\n        self._mask_edit = QtWidgets.QLineEdit(objectName=\"maskEdit\")\n        self._mask_edit.setValidator(ip_validator)\n        self._mask_edit.setText(mask)\n        self._mask_edit.textChanged.connect(self.text_typed)\n\n        min_ip_label = QtWidgets.QLabel(lx(\"DHCP start IP\"), objectName=\"minLabel\")\n        self._min_edit = QtWidgets.QLineEdit(objectName=\"minEdit\")\n        self._min_edit.setValidator(ip_validator)\n        self._min_edit.setText(min_addr)\n        self._min_edit.textChanged.connect(self.text_typed)\n\n        max_ip_label = QtWidgets.QLabel(lx(\"DHCP end IP\"), objectName=\"maxLabel\")\n        self._max_edit = QtWidgets.QLineEdit(objectName=\"maxEdit\")\n        self._max_edit.setValidator(ip_validator)\n        self._max_edit.setText(max_addr)\n        self._max_edit.textChanged.connect(self.text_typed)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(self._enable_checkbox, 0, 0)\n        grid.addWidget(livebox_ip_label, 1, 0)\n        grid.addWidget(self._livebox_ip_edit, 1, 1)\n        grid.addWidget(mask_label, 2, 0)\n        grid.addWidget(self._mask_edit, 2, 1)\n        grid.addWidget(min_ip_label, 3, 0)\n        grid.addWidget(self._min_edit, 3, 1)\n        grid.addWidget(max_ip_label, 4, 0)\n        grid.addWidget(self._max_edit, 4, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"dsetup\")\n\n        self.setWindowTitle(lx(\"DHCP Setup\"))\n        self.set_ok_button_state()\n        self.setModal(True)\n        self.show()\n\n\n    def text_typed(self, text):\n        self.set_ok_button_state()\n\n\n    def set_ok_button_state(self):\n        self._ok_button.setDisabled((len(self.get_address()) == 0) or\n                                    (len(self.get_mask()) == 0) or\n                                    (len(self.get_min_address()) == 0) or\n                                    (len(self.get_max_address()) == 0))\n\n\n    def get_enabled(self):\n        return self._enable_checkbox.isChecked()\n\n\n    def get_address(self):\n        return self._livebox_ip_edit.text()\n\n\n    def get_mask(self):\n        return self._mask_edit.text()\n\n\n    def get_min_address(self):\n        return self._min_edit.text()\n\n\n    def get_max_address(self):\n        return self._max_edit.text()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDmz.py",
    "content": "### Livebox Monitor DynDNS setup dialog ###\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.lang.LmLanguages import get_dmz_label as lx, get_actions_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# DMZ device list columns\nclass DmzCol(IntEnum):\n    ID = 0\n    IP = 1\n    Device = 2\n    ExtIPs = 3\n\n\n# ################################ DMZ setup dialog ################################\nclass DmzSetupDialog(QtWidgets.QDialog):\n    ### Constructor\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(720, 400)\n\n        self._app = parent\n        self._api = parent._api\n        self._dmz_selection = -1\n        self._init = True\n        self._ignore_signal = False\n\n        # DMZ box\n        dmz_layout = QtWidgets.QHBoxLayout()\n        dmz_layout.setSpacing(30)\n\n        dmz_list_layout = QtWidgets.QVBoxLayout()\n        dmz_list_layout.setSpacing(5)\n\n        # DMZ list columns\n        self._dmz_list = LmTableWidget(objectName=\"dmzList\")\n        self._dmz_list.set_columns({DmzCol.ID: [lx(\"ID\"), 100, \"zlist_ID\"],\n                                    DmzCol.IP: [lx(\"IP\"), 100, \"zlist_IP\"],\n                                    DmzCol.Device: [lx(\"Device\"), 150, \"zlist_Device\"],\n                                    DmzCol.ExtIPs: [lx(\"External IPs\"), 150, \"zlist_ExtIPs\"]})\n        self._dmz_list.set_header_resize([DmzCol.Device, DmzCol.ExtIPs])\n        self._dmz_list.set_standard_setup(parent, allow_sort=False)\n        self._dmz_list.setMinimumWidth(680)\n        self._dmz_list.setMinimumHeight(LmConfig.table_height(4))\n        self._dmz_list.itemSelectionChanged.connect(self.dmz_list_click)\n\n        dmz_list_layout.addWidget(self._dmz_list, 1)\n\n        dmz_button_box = QtWidgets.QHBoxLayout()\n        dmz_button_box.setSpacing(5)\n\n        refresh_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_button.clicked.connect(self.refresh_button_click)\n        dmz_button_box.addWidget(refresh_button)\n        self._del_dmz_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delDmz\")\n        self._del_dmz_button.clicked.connect(self.del_dmz_button_click)\n        dmz_button_box.addWidget(self._del_dmz_button)\n        dmz_list_layout.addLayout(dmz_button_box, 0)\n        dmz_layout.addLayout(dmz_list_layout, 0)\n\n        dmz_group_box = QtWidgets.QGroupBox(lx(\"DMZ Devices\"), objectName=\"dmzGroup\")\n        dmz_group_box.setLayout(dmz_layout)\n\n        # Add DMZ box\n        id_label = QtWidgets.QLabel(lx(\"ID\"), objectName=\"idLabel\")\n        self._id = QtWidgets.QLineEdit(objectName=\"id\")\n        self._id.setText(\"webui\")\n        self._id.textChanged.connect(self.id_typed)\n        device_label = QtWidgets.QLabel(lx(\"Device\"), objectName=\"deviceLabel\")\n        self._device_combo = QtWidgets.QComboBox(objectName=\"deviceCombo\")\n        self._device_combo.activated.connect(self.device_selected)\n        ip_label = QtWidgets.QLabel(lx(\"IP Address\"), objectName=\"ipLabel\")\n        self._ip = QtWidgets.QLineEdit(objectName=\"ipEdit\")\n        self._ip.textChanged.connect(self.ip_typed)\n        ip_validator = QtGui.QRegularExpressionValidator(QtCore.QRegularExpression(\"^\" + LmTools.IPv4_RS + \"$\"))\n        self._ip.setValidator(ip_validator)\n        ext_ips_label = QtWidgets.QLabel(lx(\"External IPs\"), objectName=\"extIPsLabel\")\n        self._ext_ips = LmQtTools.MultiLinesEdit(objectName=\"extIPsEdit\")\n        self._ext_ips.setTabChangesFocus(True)\n        self._ext_ips.setLineNumber(2)\n        self._add_dmz_button = QtWidgets.QPushButton(lx(\"Add\"), objectName=\"addDmz\")\n        self._add_dmz_button.clicked.connect(self.add_dmz_button_click)\n        self._add_dmz_button.setDisabled(True)\n\n        dmz_edit_grid = QtWidgets.QGridLayout()\n        dmz_edit_grid.setSpacing(10)\n\n        dmz_edit_grid.addWidget(id_label, 0, 0)\n        dmz_edit_grid.addWidget(self._id, 0, 1)\n        dmz_edit_grid.addWidget(device_label, 1, 0)\n        dmz_edit_grid.addWidget(self._device_combo, 1, 1)\n        dmz_edit_grid.addWidget(ip_label, 2, 0)\n        dmz_edit_grid.addWidget(self._ip, 2, 1)\n        dmz_edit_grid.addWidget(ext_ips_label, 0, 2)\n        dmz_edit_grid.addWidget(self._ext_ips, 0, 3, 1, 2)\n        dmz_edit_grid.addWidget(self._add_dmz_button, 2, 4)\n\n        dmz_edit_group_box = QtWidgets.QGroupBox(lx(\"Add DMZ\"), objectName=\"addDmzGroup\")\n        dmz_edit_group_box.setLayout(dmz_edit_grid)\n\n        # Button bar\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(dmz_group_box, 1)\n        vbox.addWidget(dmz_edit_group_box, 0)\n        vbox.addLayout(button_bar, 0)\n\n        self._ip.setFocus()\n\n        LmConfig.set_tooltips(self, \"dmz\")\n\n        self.setWindowTitle(lx(\"DMZ\"))\n        self.setModal(True)\n        self._app.load_device_ip_name_map()\n        self.load_device_list()\n        self.load_dmz()\n        self.show()\n\n        self._init = False\n\n\n    ### Load DMZ list\n    def load_dmz(self):\n        self._app._task.start(lx(\"Loading DMZ devices...\"))\n\n        try:\n            d = self._api._firewall.get_dmz_devices()\n        except Exception as e:\n            self._app.display_error(str(e))\n            self._app._task.end()\n            return\n\n        if d:\n            if not isinstance(d, dict):\n                self._app.display_error(mx(\"Cannot load DMZ device list.\", \"dmzLoadErr\"))\n                self._app._task.end()\n                return\n\n            i = 0\n            for k in d:\n                self._dmz_list.insertRow(i)\n                self._dmz_list.setItem(i, DmzCol.ID, QtWidgets.QTableWidgetItem(k))\n\n                z = d[k]\n                ip = z.get(\"DestinationIPAddress\", \"\")\n                self._dmz_list.setItem(i, DmzCol.IP, QtWidgets.QTableWidgetItem(ip))\n                self._dmz_list.setItem(i, DmzCol.Device, QtWidgets.QTableWidgetItem(self._app.get_device_name_from_ip(ip)))\n\n                external_ips = z.get(\"SourcePrefix\", \"\")\n                if len(external_ips) == 0:\n                    external_ips = lx(\"All\")\n                self._dmz_list.setItem(i, DmzCol.ExtIPs, QtWidgets.QTableWidgetItem(external_ips))\n\n                i += 1\n\n            self.dmz_list_click()\n        self._app._task.end()\n\n\n    ### Click on DMZ list item\n    def dmz_list_click(self):\n        new_selection = self._dmz_list.currentRow()\n\n        # Check if selection really changed\n        if not self._init and self._dmz_selection == new_selection:\n            return\n        self._dmz_selection = new_selection\n\n        self._del_dmz_button.setDisabled(new_selection < 0)\n\n\n    ### Click on refresh button\n    def refresh_button_click(self):\n        self._dmz_list.clearContents()\n        self._dmz_list.setRowCount(0)\n        self._dmz_selection = -1\n        self._init = True\n        self._app.load_device_ip_name_map()\n        self.load_dmz()\n        self._init = False\n\n\n    ### Click on delete DMZ button\n    def del_dmz_button_click(self):\n        i = self._dmz_selection\n        if i < 0:\n            return\n\n        # Delete the DMZ entry\n        dmz_id = self._dmz_list.item(i, DmzCol.ID).text()\n        try:\n            self._api._firewall.delete_dmz(dmz_id)\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot delete DMZ device.\", \"dmzDelErr\"))\n            return\n\n        # Delete the list line\n        self._dmz_selection = -1\n        self._init = True\n        self._dmz_list.removeRow(i)\n        self._init = False\n\n        # Update selection\n        self._dmz_selection = self._dmz_list.currentRow()\n\n\n    ### Click on add DMZ button\n    def add_dmz_button_click(self):\n        # Set parameters\n        dmz_id = self._id.text()\n        dest_ip = self._ip.text()\n        ext_ips = self._ext_ips.toPlainText()\n\n        # Call Livebox API\n        try:\n            self._api._firewall.add_dmz(dmz_id, dest_ip, ext_ips=ext_ips)\n        except Exception as e:\n            self._app.display_error(str(e))\n            return\n\n        self.refresh_button_click()\n        self._id.setText(\"webui\")\n        self._ip.setText(\"\")\n        self._ext_ips.setPlainText(\"\")\n \n\n    def load_device_list(self):\n        device_map = self._app._device_ip_name_map\n        self._device_combo.clear()\n\n        # Load IPv4 devices\n        for i in device_map:\n            if device_map[i][\"IPVers\"] == \"IPv4\":\n                self._device_combo.addItem(self._app.get_device_name_from_ip(i), userData=i)\n\n        # Sort by name\n        self._device_combo.model().sort(0)\n\n        # Insert unknown device at the beginning\n        self._device_combo.insertItem(0, lx(\"-Unknown-\"), userData=\"\")\n        self._device_combo.setCurrentIndex(0)\n\n\n    def id_typed(self, iText):\n        self.set_add_button_state()\n\n\n    def device_selected(self, index):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            self._ip.setText(self._device_combo.currentData())\n            self._ignore_signal = False\n\n\n    def ip_typed(self, text):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            i = self._device_combo.findData(text)\n            if i < 0:\n                i = 0\n            self._device_combo.setCurrentIndex(i)\n            self._ignore_signal = False\n\n        self.set_add_button_state()\n\n\n    def set_add_button_state(self):\n        self._add_dmz_button.setDisabled((len(self._id.text()) == 0) or\n                                         (len(self._ip.text()) == 0))\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDns.py",
    "content": "### Livebox Monitor DNS dialog ###\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, CenteredIconsDelegate\nfrom LiveboxMonitor.lang.LmLanguages import get_dns_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# List columns\nclass DnsCol(IntEnum):\n    Key = 0     # Must be the same as DevCol.Key\n    Name = 1\n    LBName = 2\n    MAC = 3\n    Active = 4\n    IP = 5\n    DNS = 6\nDNS_ICON_COLUMNS = [DnsCol.Active]\n\n\n# ################################ DNS dialog ################################\nclass DnsDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(850, 56 + LmConfig.dialog_height(12))\n\n        # Device table\n        self._device_table = LmTableWidget(objectName=\"dnsTable\")\n        self._device_table.set_columns({DnsCol.Key: [\"Key\", 0, None],\n                                        DnsCol.Name: [lx(\"Name\"), 300, \"dns_Name\"],\n                                        DnsCol.LBName: [lx(\"Livebox Name\"), 300, \"dns_LBName\"],\n                                        DnsCol.MAC: [lx(\"MAC\"), 120, \"dns_MAC\"],\n                                        DnsCol.Active: [lx(\"A\"), 10, \"dns_Active\"],\n                                        DnsCol.IP: [lx(\"IP\"), 105, \"dns_IP\"],\n                                        DnsCol.DNS: [lx(\"DNS\"), 250, \"dns_DNS\"]})\n        self._device_table.set_header_resize([DnsCol.Name, DnsCol.LBName])\n        self._device_table.set_standard_setup(parent, allow_sel=False)\n        self._device_table.setItemDelegate(CenteredIconsDelegate(self, DNS_ICON_COLUMNS))\n\n        # Button bar\n        hbox = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        hbox.addWidget(ok_button, 1, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addWidget(self._device_table, 1)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"dns\")\n\n        self.setWindowTitle(lx(\"Devices DNS\"))\n        self.setModal(True)\n        self.show()\n\n\n    ### Load device list\n    def load_device_list(self, devices):\n        if devices is not None:\n            self._device_table.setSortingEnabled(False)\n            i = 0\n            app = self.parent()\n            for d in devices:\n                if app.displayable_device(d):\n                    # First collect DNS name\n                    dns_name = None\n                    name_list = d.get(\"Names\", [])\n                    if len(name_list):\n                        for name in name_list:\n                            if name.get(\"Source\", \"\") == \"dns\":\n                                dns_name = name.get(\"Name\", \"\")\n                                break\n                    if dns_name is None:\n                        continue\n\n                    # Display data\n                    key = d.get(\"Key\", \"\")\n                    app.add_device_line_key(self._device_table, i, key)\n\n                    app.format_name_widget(self._device_table, i, key, DnsCol.Name)\n\n                    lb_name = QtWidgets.QTableWidgetItem(d.get(\"Name\", \"\"))\n                    self._device_table.setItem(i, DnsCol.LBName, lb_name)\n\n                    app.format_mac_widget(self._device_table, i, d.get(\"PhysAddress\", \"\"), DnsCol.MAC)\n\n                    active_status = d.get(\"Active\", False)\n                    active_icon = app.format_active_table_widget(active_status)\n                    self._device_table.setItem(i, DnsCol.Active, active_icon)\n\n                    ip_struct = LmTools.determine_ip(d)\n                    if ip_struct is None:\n                        ipv4 = \"\"\n                        ipv4_reacheable = \"\"\n                        ipv4_reserved = False\n                    else:\n                        ipv4 = ip_struct.get(\"Address\", \"\")\n                        ipv4_reacheable = ip_struct.get(\"Status\", \"\")\n                        ipv4_reserved = ip_struct.get(\"Reserved\", False)\n                    ip = app.format_ipv4_table_widget(ipv4, ipv4_reacheable, ipv4_reserved)\n                    self._device_table.setItem(i, DnsCol.IP, ip)\n\n                    self._device_table.setItem(i, DnsCol.DNS, QtWidgets.QTableWidgetItem(dns_name))\n\n                    i += 1\n\n            self._device_table.sortItems(DnsCol.Active, QtCore.Qt.SortOrder.DescendingOrder)\n            self._device_table.setSortingEnabled(True)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmDynDns.py",
    "content": "### Livebox Monitor DynDNS setup dialog ###\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.lang.LmLanguages import get_dyndns_label as lx, get_actions_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n# ################################ VARS & DEFS ################################\n\n# Host list columns\nclass HostCol(IntEnum):\n    Service = 0\n    HostName = 1\n    UserName = 2\n    Password = 3\n    LastUpdate = 4\n    Status = 5\n\n\n# ################################ DynDNS setup dialog ################################\nclass DynDnsSetupDialog(QtWidgets.QDialog):\n    ### Constructor\n    def __init__(self, parent):\n        super().__init__(parent)\n        self.resize(720, 400)\n\n        self._app = parent\n        self._api = parent._api\n        self._host_selection = -1\n        self._init = True\n        self._show_passwords = False\n\n        # Host box\n        host_layout = QtWidgets.QHBoxLayout()\n        host_layout.setSpacing(30)\n\n        host_list_layout = QtWidgets.QVBoxLayout()\n        host_list_layout.setSpacing(5)\n\n        # Host list columns\n        self._host_list = LmTableWidget(objectName=\"hostList\")\n        self._host_list.set_columns({HostCol.Service: [lx(\"Service\"), 90, \"hlist_Service\"],\n                                     HostCol.HostName: [lx(\"Host Name\"), 80, \"hlist_HostName\"],\n                                     HostCol.UserName: [lx(\"User Email\"), 80, \"hlist_UserName\"],\n                                     HostCol.Password: [lx(\"Password\"), 130, \"hlist_Password\"],\n                                     HostCol.LastUpdate: [lx(\"Last Update\"), 120, \"hlist_LastUpdate\"],\n                                     HostCol.Status: [lx(\"Status\"), 120, \"hlist_Status\"]})\n        self._host_list.set_header_resize([HostCol.HostName, HostCol.UserName])\n        self._host_list.set_standard_setup(parent, allow_sort=False)\n        self._host_list.setMinimumWidth(880)\n        self._host_list.setMinimumHeight(LmConfig.table_height(4))\n        self._host_list.itemSelectionChanged.connect(self.host_list_click)\n\n        host_list_layout.addWidget(self._host_list, 1)\n\n        host_button_box = QtWidgets.QHBoxLayout()\n        host_button_box.setSpacing(5)\n\n        refresh_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_button.clicked.connect(self.refresh_button_click)\n        host_button_box.addWidget(refresh_button)\n        self._show_password_button = QtWidgets.QPushButton(lx(\"Show Passwords\"), objectName=\"showPassword\")\n        self._show_password_button.clicked.connect(self.show_password_button_click)\n        host_button_box.addWidget(self._show_password_button)\n        self._del_host_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delHost\")\n        self._del_host_button.clicked.connect(self.del_host_button_click)\n        host_button_box.addWidget(self._del_host_button)\n        host_list_layout.addLayout(host_button_box, 0)\n        host_layout.addLayout(host_list_layout, 0)\n\n        host_group_box = QtWidgets.QGroupBox(lx(\"Hosts\"), objectName=\"hostGroup\")\n        host_group_box.setLayout(host_layout)\n\n        # Add host box\n        service_label = QtWidgets.QLabel(lx(\"Service\"), objectName=\"serviceLabel\")\n        self._service_combo = QtWidgets.QComboBox(objectName=\"serviceCombo\")\n        self.load_service_combo()\n        hostname_label = QtWidgets.QLabel(lx(\"Host Name\"), objectName=\"hostNameLabel\")\n        self._hostname = QtWidgets.QLineEdit(objectName=\"hostNameEdit\")\n        self._hostname.textChanged.connect(self.host_typed)\n        username_label = QtWidgets.QLabel(lx(\"User Email\"), objectName=\"userNameLabel\")\n        self._username = QtWidgets.QLineEdit(objectName=\"userNameEdit\")\n        self._username.textChanged.connect(self.host_typed)\n        password_label = QtWidgets.QLabel(lx(\"Password\"), objectName=\"passwordLabel\")\n        self._password = QtWidgets.QLineEdit(objectName=\"passwordEdit\")\n        self._password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)\n        self._password.textChanged.connect(self.host_typed)\n        self._add_host_button = QtWidgets.QPushButton(lx(\"Add\"), objectName=\"addHost\")\n        self._add_host_button.clicked.connect(self.add_host_button_click)\n        self._add_host_button.setDisabled(True)\n\n        host_edit_grid = QtWidgets.QGridLayout()\n        host_edit_grid.setSpacing(10)\n\n        host_edit_grid.addWidget(service_label, 0, 0)\n        host_edit_grid.addWidget(self._service_combo, 0, 1)\n        host_edit_grid.addWidget(hostname_label, 0, 2)\n        host_edit_grid.addWidget(self._hostname, 0, 3)\n        host_edit_grid.addWidget(username_label, 1, 0)\n        host_edit_grid.addWidget(self._username, 1, 1)\n        host_edit_grid.addWidget(password_label, 1, 2)\n        host_edit_grid.addWidget(self._password, 1, 3)\n        host_edit_grid.addWidget(self._add_host_button, 0, 4, 2, 2)\n\n        host_edit_group_box = QtWidgets.QGroupBox(lx(\"Add Host\"), objectName=\"addHostGroup\")\n        host_edit_group_box.setLayout(host_edit_grid)\n\n        # Button bar\n        self._disable_button = QtWidgets.QPushButton(self.get_disable_button_title(), objectName=\"disableAll\")\n        self._disable_button.setStyleSheet(\"padding-left: 15px; padding-right: 15px; padding-top: 3px; padding-bottom: 3px;\")\n        self._disable_button.clicked.connect(self.disable_button_click)\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(self._disable_button, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(host_group_box, 1)\n        vbox.addWidget(host_edit_group_box, 0)\n        vbox.addLayout(button_bar, 0)\n\n        self._hostname.setFocus()\n\n        LmConfig.set_tooltips(self, \"dyndns\")\n\n        self.setWindowTitle(lx(\"DynDNS\"))\n        self.setModal(True)\n        self.load_hosts()\n        self.show()\n\n        self._init = False\n\n\n    ### Load host list\n    def load_hosts(self):\n        self._app._task.start(lx(\"Loading DynDNS hosts...\"))\n\n        try:\n            try:\n                d = self._api._dyndns.get_hosts()\n            except Exception as e:\n                LmTools.error(str(e))\n                self._app.display_error(mx(\"Cannot load DynDNS host list.\", \"dynDnsLoadErr\"))\n                return\n\n            for i, h in enumerate(d):\n                self._host_list.insertRow(i)\n                self._host_list.setItem(i, HostCol.Service, QtWidgets.QTableWidgetItem(h.get(\"service\", \"\")))\n                self._host_list.setItem(i, HostCol.HostName, QtWidgets.QTableWidgetItem(h.get(\"hostname\", \"\")))\n                self._host_list.setItem(i, HostCol.UserName, QtWidgets.QTableWidgetItem(h.get(\"username\", \"\")))\n                if self._show_passwords:\n                    self._host_list.setItem(i, HostCol.Password, QtWidgets.QTableWidgetItem(h.get(\"password\", \"\")))\n                else:\n                    self._host_list.setItem(i, HostCol.Password, QtWidgets.QTableWidgetItem(\"******\"))\n                self._host_list.setItem(i, HostCol.LastUpdate, QtWidgets.QTableWidgetItem(LmTools.fmt_livebox_timestamp(h.get(\"last_update\"))))\n                self._host_list.setItem(i, HostCol.Status, QtWidgets.QTableWidgetItem(h.get(\"status\", \"\")))\n\n            self.host_list_click()\n\n        finally:\n            self._app._task.end()\n\n\n    ### Click on host list item\n    def host_list_click(self):\n        new_selection = self._host_list.currentRow()\n\n        # Check if selection really changed\n        if not self._init and self._host_selection == new_selection:\n            return\n        self._host_selection = new_selection\n\n        self._del_host_button.setDisabled(new_selection < 0)\n\n\n    ### Load service combo box\n    def load_service_combo(self):\n        try:\n            d = self._api._dyndns.get_services()\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot load DynDNS services.\", \"dynDnsSvcErr\"))\n            return\n\n        for s in d:\n            self._service_combo.addItem(s)\n\n\n    ### Text changed in host edit box field\n    def host_typed(self, text):\n        h = self._hostname.text()\n        u = self._username.text()\n        p = self._password.text()\n        self._add_host_button.setDisabled(not len(h) or not len(u) or not len(p))\n\n\n    ### Click on refresh button\n    def refresh_button_click(self):\n        self._host_list.clearContents()\n        self._host_list.setRowCount(0)\n        self._host_selection = -1\n        self._init = True\n        self.load_hosts()\n        self._init = False\n\n\n    ### Click on show password button\n    def show_password_button_click(self):\n        if self._show_passwords:\n            self._show_password_button.setText(lx(\"Show Passwords\"))\n            self._show_passwords = False\n        else:\n            self._show_password_button.setText(lx(\"Hide Passwords\"))\n            self._show_passwords = True\n        self.refresh_button_click()\n\n\n    ### Click on delete host button\n    def del_host_button_click(self):\n        i = self._host_selection\n        if i < 0:\n            return\n\n        # Delete the host entry\n        hostname = self._host_list.item(i, HostCol.HostName).text()\n        try:\n            self._api._dyndns.delete_host(hostname)\n        except Exception as e:\n            LmTools.error(str(e))\n            self._app.display_error(mx(\"Cannot delete DynDNS host.\", \"dynDnsDelErr\"))\n            return\n\n        # Delete the list line\n        self._host_selection = -1\n        self._init = True\n        self._host_list.removeRow(i)\n        self._init = False\n\n        # Update selection\n        self._host_list.setFocus()  # To ensure new selection is highlighted with focus\n        self._host_selection = self._host_list.currentRow()\n\n\n    ### Click on add host button\n    def add_host_button_click(self):\n        # Hostname has to be unique\n        hostname = self._hostname.text()\n        if not len(hostname):\n            return\n\n        for i in range(self._host_list.rowCount()):\n            if self._host_list.item(i, HostCol.HostName).text() == hostname:\n                self._app.display_error(mx(\"Host name {} is already used.\", \"dynDnsHostName\").format(hostname))\n                return\n\n        # Set parameters\n        service = self._service_combo.currentText()\n        username = self._username.text()\n        password = self._password.text()\n\n        # Call Livebox API\n        try:\n            self._api._dyndns.add_host(service, username, hostname, password)\n        except Exception as e:\n            self._app.display_error(str(e))\n            return\n\n        self.refresh_button_click()\n        self._username.setText(\"\")\n        self._hostname.setText(\"\")\n        self._password.setText(\"\")\n\n\n    ### Get global enable status\n    def get_global_enable_status(self):\n        try:\n            d = self._api._dyndns.get_enable()\n        except Exception as e:\n            LmTools.error(str(e))\n            return False\n        if d is None:\n            LmTools.error(mx(\"Cannot get DynDNS global enable status.\", \"dynDnsEnableErr\"))\n            return False\n        return d\n\n\n    ### Click on enable/disable button\n    def disable_button_click(self):\n        enable = not self.get_global_enable_status()\n        try:\n            self._api._dyndns.set_enable(enable)\n        except Exception as e:\n            LmTools.error(str(e))\n\n        self._disable_button.setText(self.get_disable_button_title())\n        self.refresh_button_click()\n\n\n    ### get disable all button title\n    def get_disable_button_title(self):\n        if self.get_global_enable_status():\n            return lx(\"Disable All\")\n        else:\n            return lx(\"Enable All\")\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmEditContact.py",
    "content": "### Livebox Monitor edit contact dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_phone_contact_label as lx\n\n\n# ################################ Edit contact dialog ################################\nclass EditContactDialog(QtWidgets.QDialog):\n    def __init__(self, edit_mode, contact=None, parent=None):\n        super().__init__(parent)\n        self.resize(320, 170)\n\n        self._ready = False\n\n        first_name_edit_label = QtWidgets.QLabel(lx(\"First name\"), objectName=\"firstNameLabel\")\n        self._first_name_edit = QtWidgets.QLineEdit(objectName=\"firstNameEdit\")\n        self._first_name_edit.textChanged.connect(self.text_changed)\n\n        name_edit_label = QtWidgets.QLabel(lx(\"Name\"), objectName=\"nameLabel\")\n        self._name_edit = QtWidgets.QLineEdit(objectName=\"nameEdit\")\n        self._name_edit.textChanged.connect(self.text_changed)\n\n        phone_nb_reg_exp = QtCore.QRegularExpression(r\"^[0-9+*#]{1}[0-9*#]{19}$\")\n        phone_nb_validator = QtGui.QRegularExpressionValidator(phone_nb_reg_exp)\n\n        cell_edit_label = QtWidgets.QLabel(lx(\"Mobile\"), objectName=\"cellLabel\")\n        self._cell_edit = QtWidgets.QLineEdit(objectName=\"cellEdit\")\n        self._cell_edit.setValidator(phone_nb_validator)\n        self._cell_edit.textChanged.connect(self.text_changed)\n\n        home_edit_label = QtWidgets.QLabel(lx(\"Home\"), objectName=\"homeLabel\")\n        self._home_edit = QtWidgets.QLineEdit(objectName=\"homeEdit\")\n        self._home_edit.setValidator(phone_nb_validator)\n        self._home_edit.textChanged.connect(self.text_changed)\n\n        work_edit_label = QtWidgets.QLabel(lx(\"Work\"), objectName=\"workLabel\")\n        self._work_edit = QtWidgets.QLineEdit(objectName=\"workEdit\")\n        self._work_edit.setValidator(phone_nb_validator)\n        self._work_edit.textChanged.connect(self.text_changed)\n\n        ring_tone_edit_label = QtWidgets.QLabel(lx(\"Ring tone\"), objectName=\"ringToneLabel\")\n        self._ring_tone_combo = QtWidgets.QComboBox(objectName=\"ringToneCombo\")\n        for i in range(1, 8):\n            self._ring_tone_combo.addItem(str(i))\n\n        edit_grid = QtWidgets.QGridLayout()\n        edit_grid.setSpacing(10)\n        edit_grid.addWidget(first_name_edit_label, 0, 0)\n        edit_grid.addWidget(self._first_name_edit, 0, 1)\n        edit_grid.addWidget(name_edit_label, 1, 0)\n        edit_grid.addWidget(self._name_edit, 1, 1)\n        edit_grid.addWidget(cell_edit_label, 2, 0)\n        edit_grid.addWidget(self._cell_edit, 2, 1)\n        edit_grid.addWidget(home_edit_label, 3, 0)\n        edit_grid.addWidget(self._home_edit, 3, 1)\n        edit_grid.addWidget(work_edit_label, 4, 0)\n        edit_grid.addWidget(self._work_edit, 4, 1)\n        edit_grid.addWidget(ring_tone_edit_label, 5, 0)\n        edit_grid.addWidget(self._ring_tone_combo, 5, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setSpacing(10)\n        button_bar.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(edit_grid, 0)\n        vbox.addLayout(button_bar, 1)\n\n        self._first_name_edit.setFocus()\n\n        LmConfig.set_tooltips(self, \"pcontact\")\n\n        self.setWindowTitle(lx(\"Contact edition\") if edit_mode else lx(\"Contact creation\"))\n\n        if contact:\n            self._contact = contact\n            self._first_name_edit.setText(contact[\"firstname\"])\n            self._name_edit.setText(contact[\"name\"])\n            self._cell_edit.setText(contact[\"cell\"])\n            self._home_edit.setText(contact[\"home\"])\n            self._work_edit.setText(contact[\"work\"])\n            self._ring_tone_combo.setCurrentIndex(int(contact[\"ringtone\"]) - 1)\n        else:\n            self._contact = {}\n\n        self.set_ok_button_state()\n        self.setModal(True)\n        self._ready = True\n        self.show()\n\n\n    def text_changed(self, text):\n        if self._ready:\n            self.set_ok_button_state()\n\n\n    def set_ok_button_state(self):\n        c = self.get_contact()\n        if ((len(c[\"name\"]) == 0) and (len(c[\"firstname\"]) == 0)):\n            self._ok_button.setDisabled(True)\n            return\n\n        if ((len(c[\"cell\"]) == 0) and (len(c[\"home\"]) == 0) and (len(c[\"work\"]) == 0)):\n            self._ok_button.setDisabled(True)\n            return\n\n        self._ok_button.setDisabled(False)\n\n\n    def get_contact(self):\n        self._contact[\"firstname\"] = EditContactDialog.cleanup_name(self._first_name_edit.text())\n        self._contact[\"name\"] = EditContactDialog.cleanup_name(self._name_edit.text())\n        self._contact[\"formattedName\"] = EditContactDialog.compute_formatted_name(self._contact[\"name\"], self._contact[\"firstname\"])\n        self._contact[\"cell\"] = EditContactDialog.cleanup_phone_number(self._cell_edit.text())\n        self._contact[\"home\"] = EditContactDialog.cleanup_phone_number(self._home_edit.text())\n        self._contact[\"work\"] = EditContactDialog.cleanup_phone_number(self._work_edit.text())\n        self._contact[\"ringtone\"] = self._ring_tone_combo.currentText()\n        return self._contact\n\n\n    @staticmethod\n    def cleanup_name(name):\n        return name.replace(\";\", \" \")\n\n\n    @staticmethod\n    def compute_formatted_name(name, firstname):\n        if name:\n            if firstname:\n                return f\"{name} {firstname}\"\n            return name\n        return firstname\n\n\n    @staticmethod\n    def cleanup_phone_number(phone_nb):\n        if phone_nb and (phone_nb[0] == \"+\"):\n            return f\"00{phone_nb[1:]}\"\n        return phone_nb\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmEmailSetup.py",
    "content": "### Livebox Monitor Email setup dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_config_email_label as lx,  get_config_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ Email setup dialog ################################\nclass EmailSetupDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(515, 310)\n\n        self._init = True\n\n        email_reg_exp = QtCore.QRegularExpression(LmTools.EMAIL_RS)\n        email_validator = QtGui.QRegularExpressionValidator(email_reg_exp)\n\n        from_addr_label = QtWidgets.QLabel(lx(\"From Address\"), objectName=\"fromAddrLabel\")\n        self._from_address = QtWidgets.QLineEdit(objectName=\"fromAddrEdit\")\n        self._from_address.textChanged.connect(self.setup_changed)\n        self._from_address.setValidator(email_validator)\n\n        to_addr_label = QtWidgets.QLabel(lx(\"To Address\"), objectName=\"toAddrLabel\")\n        self._to_address = QtWidgets.QLineEdit(objectName=\"toAddrEdit\")\n        self._to_address.textChanged.connect(self.setup_changed)\n        self._to_address.setValidator(email_validator)\n\n        subject_prefix_label = QtWidgets.QLabel(lx(\"Subject Prefix\"), objectName=\"subjectPrefixLabel\")\n        self._subject_prefix = QtWidgets.QLineEdit(objectName=\"subjectPrefixEdit\")\n\n        smtp_server_label = QtWidgets.QLabel(lx(\"SMTP Server\"), objectName=\"smtpServerLabel\")\n        self._smtp_server = QtWidgets.QLineEdit(objectName=\"smtpServerEdit\")\n        self._smtp_server.textChanged.connect(self.setup_changed)\n\n        port_reg_exp = QtCore.QRegularExpression(LmTools.PORTS_RS)\n        port_validator = QtGui.QRegularExpressionValidator(port_reg_exp)\n        smtp_port_label = QtWidgets.QLabel(lx(\"Port\"), objectName=\"smtpPortLabel\")\n        self._smtp_port = QtWidgets.QLineEdit(objectName=\"smtpPortEdit\")\n        self._smtp_port.setValidator(port_validator)\n\n        options_label = QtWidgets.QLabel(lx(\"Options\"), objectName=\"optionsLabel\")\n        self._use_starttls = QtWidgets.QCheckBox(lx(\"Use STARTTLS\"), objectName=\"useSTARTTLS\")\n        self._use_starttls.stateChanged.connect(self.starttls_changed)\n        self._use_tls = QtWidgets.QCheckBox(lx(\"Use TLS\"), objectName=\"useTLS\")\n        self._use_tls.stateChanged.connect(self.tls_changed)\n        self._authentication = QtWidgets.QCheckBox(lx(\"Authentication\"), objectName=\"authentication\")\n        self._authentication.stateChanged.connect(self.setup_changed)\n\n        user_label = QtWidgets.QLabel(lx(\"User\"), objectName=\"userLabel\")\n        self._user = QtWidgets.QLineEdit(objectName=\"userEdit\")\n        self._user.textChanged.connect(self.setup_changed)\n\n        password_label = QtWidgets.QLabel(lx(\"Password\"), objectName=\"passwordLabel\")\n        self._password = QtWidgets.QLineEdit(objectName=\"passwordEdit\")\n        self._password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)\n        self._password.textChanged.connect(self.setup_changed)\n\n        edit_grid = QtWidgets.QGridLayout()\n        edit_grid.setSpacing(10)\n        edit_grid.addWidget(from_addr_label, 0, 0)\n        edit_grid.addWidget(self._from_address, 0, 1, 1, 10)\n        edit_grid.addWidget(to_addr_label, 1, 0)\n        edit_grid.addWidget(self._to_address, 1, 1, 1, 10)\n        edit_grid.addWidget(subject_prefix_label, 2, 0)\n        edit_grid.addWidget(self._subject_prefix, 2, 1, 1, 10)\n        edit_grid.addWidget(smtp_server_label, 3, 0)\n        edit_grid.addWidget(self._smtp_server, 3, 1, 1, 8)\n        edit_grid.addWidget(smtp_port_label, 3, 9)\n        edit_grid.addWidget(self._smtp_port, 3, 10)\n        edit_grid.addWidget(options_label, 4, 0)\n        edit_grid.addWidget(self._use_starttls, 4, 1)\n        edit_grid.addWidget(self._use_tls, 4, 3)\n        edit_grid.addWidget(self._authentication, 4, 5)\n        edit_grid.addWidget(user_label, 5, 0)\n        edit_grid.addWidget(self._user, 5, 1, 1, 10)\n        edit_grid.addWidget(password_label, 6, 0)\n        edit_grid.addWidget(self._password, 6, 1, 1, 10)\n\n        # Button bar\n        self._test_button = QtWidgets.QPushButton(lx(\"Test Sending\"), objectName=\"test\")\n        self._test_button.setStyleSheet(\"padding-left: 15px; padding-right: 15px; padding-top: 3px; padding-bottom: 3px;\")\n        self._test_button.clicked.connect(self.test_button_click)\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(self._test_button, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        ok_button_bar = QtWidgets.QHBoxLayout()\n        ok_button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.setSpacing(10)\n        ok_button_bar.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addLayout(ok_button_bar)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addLayout(edit_grid, 0)\n        vbox.addLayout(button_bar, 1)\n\n        self._from_address.setFocus()\n\n        LmConfig.set_tooltips(self, \"email\")\n\n        self.setWindowTitle(lx(\"Email Setup\"))\n        self.setModal(True)\n        self.load_setup()\n        self.show()\n\n        self._init = False\n\n\n ### Load preferences data\n    def load_setup(self):\n     # If no config set to default values\n        c = LmConf.load_email_setup()\n        if c is None:\n            c = {}\n\n        self._from_address.setText(c.get(\"From\", \"\"))\n        self._to_address.setText(c.get(\"To\", \"\"))\n        self._subject_prefix.setText(c.get(\"Prefix\", \"[LiveboxMonitor] \"))\n        self._smtp_server.setText(c.get(\"Server\", \"\"))\n        self._smtp_port.setText(str(int(c.get(\"Port\", 587))))\n        starttls = c.get(\"TLS\", True)\n        self._use_starttls.setChecked(starttls)\n        self._use_tls.setChecked(c.get(\"SSL\", False) and not starttls)\n        self._authentication.setChecked(c.get(\"Authentication\", True))\n        self._user.setText(c.get(\"User\", \"\"))\n        self._password.setText(c.get(\"Password\", \"\"))\n\n        self.setup_changed(None)\n\n\n ### Return current setup in dialog\n    def get_setup(self):\n        c = {}\n        c[\"From\"] = self._from_address.text()\n        c[\"To\"] = self._to_address.text()\n        c[\"Prefix\"] = self._subject_prefix.text()\n        c[\"Server\"] = self._smtp_server.text()\n        try:\n            c[\"Port\"] = int(self._smtp_port.text())\n        except Exception:\n            c[\"Port\"] = 0\n        c[\"TLS\"] = self._use_starttls.isChecked()\n        c[\"SSL\"] = self._use_tls.isChecked()\n        c[\"Authentication\"] = self._authentication.isChecked()\n        c[\"User\"] = self._user.text()\n        c[\"Password\"] = self._password.text()\n        return c\n\n\n ### Click on test button\n    def test_button_click(self):\n        app = self.parentWidget()\n        app._task.start(lx(\"Sending test email...\"))\n        c = self.get_setup()\n        if LmTools.send_email(c, lx(\"Test Message\"), lx(\"This is a test email from LiveboxMonitor.\")):\n            app.display_status(mx(\"Message sent successfully.\", \"emailSuccess\"))\n        else:\n            app.display_error(mx(\"Message send failure. Check your setup.\", \"emailFail\"))\n        app._task.end()\n\n\n    def starttls_changed(self, iState):\n        if not self._init and self._use_starttls.isChecked():\n            self._use_tls.setChecked(False)\n\n\n    def tls_changed(self, iState):\n        if not self._init:\n            if self._use_tls.isChecked():\n                self._use_starttls.setChecked(False)\n                self._smtp_port.setText(\"465\")\n            else:\n                self._smtp_port.setText(\"587\")\n\n\n    def setup_changed(self, iSetup):\n        c = self.get_setup()\n        m = len(c[\"From\"]) and len(c[\"To\"]) and len(c[\"Server\"])\n        if c[\"Authentication\"]:\n            self._user.setDisabled(False)\n            self._password.setDisabled(False)\n            m = m and len(c[\"User\"]) and len (c[\"Password\"])\n        else:\n            self._user.setDisabled(True)\n            self._password.setDisabled(True)\n\n        self._test_button.setDisabled(not m)\n        self._ok_button.setDisabled(not m)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmExportTable.py",
    "content": "### Livebox Monitor export table dialog ###\n\nimport csv\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_export_table_label as lx, get_main_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ Export table dialog ################################\nclass ExportTableDialog(QtWidgets.QDialog):\n    def __init__(self, table_widget, app, parent=None):\n        super().__init__(parent)\n\n        self._table_widget = table_widget\n        self._app = app\n\n        options_label = QtWidgets.QLabel(lx(\"Options\"), objectName=\"optionsLabel\")\n        self._export_header_checkbox = QtWidgets.QCheckBox(lx(\"Export Header\"), objectName=\"exportHeaderCheckbox\")\n        self._export_header_checkbox.setChecked(True)\n\n        columns_label = QtWidgets.QLabel(lx(\"Columns\"), objectName=\"columnsLabel\")\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(5)\n        grid.addWidget(options_label, 0, 0)\n        grid.addWidget(self._export_header_checkbox, 0, 1)\n        grid.addWidget(columns_label, 1, 0)\n\n        self._col_checkboxes = []\n        for col in range(table_widget.columnCount()):\n            self._col_checkbox = QtWidgets.QCheckBox(table_widget.horizontalHeaderItem(col).text())\n            self._col_checkbox.setChecked(True)\n            self._col_checkboxes.append(self._col_checkbox)\n            grid.addWidget(self._col_checkbox, col + 1, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"export_table\")\n\n        self.setWindowTitle(lx(\"Export Table\"))\n\n        self.setModal(True)\n        self.show()\n\n\n    # Export the table content in a CSV file\n    def do_export_table(self):\n        # Select file\n        file_name = QtWidgets.QFileDialog.getSaveFileName(self, lx(\"Save File\"), \".csv\", \"*.csv\")[0]\n        if not file_name:\n            return\n\n        # Open file\n        try:\n            export_file = open(file_name, \"w\", newline=\"\")\n        except Exception as e:\n            LmTools.error(f\"File creation error: {e}\")\n            self._app.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n            return\n\n        self._app._task.start(lx(\"Exporting data...\"))\n\n        # Create CSV writer\n        csv_writer = csv.writer(export_file, dialect=\"excel\", delimiter=LmConf.CsvDelimiter)\n\n        # Write header if necessary\n        if self._export_header_checkbox.isChecked():\n            header = [self._table_widget.horizontalHeaderItem(col).text()\n                      for col in range(len(self._col_checkboxes))\n                      if self._col_checkboxes[col].isChecked()]\n            csv_writer.writerow(header)\n\n        # Write each row\n        for row in range(self._table_widget.rowCount()):\n            line = [self.do_export_item(row, col)\n                    for col in range(len(self._col_checkboxes))\n                    if self._col_checkboxes[col].isChecked()]\n            csv_writer.writerow(line)\n\n        # Close file\n        try:\n            export_file.close()\n        except Exception as e:\n            LmTools.error(f\"File saving error: {e}\")\n            self._app.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n \n        self._app._task.end()\n\n\n    # Return an export string for the item at the given row & column\n    def do_export_item(self, row, col):\n        # Retrieve item, return empty string if None\n        item = self._table_widget.item(row, col)\n        if not item:\n            return \"\"\n\n        # First try a ExportDataRole data\n        data = item.data(LmQtTools.ItemDataRole.ExportRole)\n        if data:\n            return str(data)\n\n        # Then try a DisplayRole data\n        data = item.data(QtCore.Qt.ItemDataRole.DisplayRole)\n        if data:\n            return str(data)\n\n        # Then try a UserRole data\n        data = item.data(QtCore.Qt.ItemDataRole.UserRole)\n        if data:\n            return str(data)\n\n        # Otherwise return item text\n        return item.text()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmFirewall.py",
    "content": "### Livebox Monitor Firewall setup dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_firewall_level_label as lx\n\n\n# ################################ VARS & DEFS ################################\n\n# Firewall levels\nFIREWALL_LEVELS = [\"High\", \"Medium\", \"Low\", \"Custom\"]\n\n\n# ################################ Firewall Level dialog ################################\nclass FirewallLevelDialog(QtWidgets.QDialog):\n    def __init__(self, ipv4_level, ipv6_level, parent=None):\n        super().__init__(parent)\n        self.setMinimumWidth(230)\n        self.resize(300, 150)\n\n        ipv4_level_label = QtWidgets.QLabel(lx(\"IPv4 Firewall Level\"), objectName=\"ipV4Label\")\n        self._ipv4_level_combo = QtWidgets.QComboBox(objectName=\"ipV4Combo\")\n        for l in FIREWALL_LEVELS:\n            self._ipv4_level_combo.addItem(lx(l), userData=l)\n        self._ipv4_level_combo.setCurrentIndex(FIREWALL_LEVELS.index(ipv4_level))\n\n        ipv6_level_label = QtWidgets.QLabel(lx(\"IPv6 Firewall Level\"), objectName=\"ipV6Label\")\n        self._ipv6_level_combo = QtWidgets.QComboBox(objectName=\"ipV6Combo\")\n        for l in FIREWALL_LEVELS:\n            self._ipv6_level_combo.addItem(lx(l), userData = l)\n        self._ipv6_level_combo.setCurrentIndex(FIREWALL_LEVELS.index(ipv6_level))\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(ipv4_level_label, 0, 0)\n        grid.addWidget(self._ipv4_level_combo, 0, 1)\n        grid.addWidget(ipv6_level_label, 1, 0)\n        grid.addWidget(self._ipv6_level_combo, 1, 1)\n        grid.setColumnStretch(0, 0)\n        grid.setColumnStretch(1, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"fwlevel\")\n\n        self.setWindowTitle(lx(\"Firewall Levels\"))\n\n        self.setModal(True)\n        self.show()\n\n\n    def get_ipv4_level(self):\n        return self._ipv4_level_combo.currentData()\n\n\n    def get_ipv6_level(self):\n        return self._ipv6_level_combo.currentData()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmIPv6.py",
    "content": "### Livebox Monitor IPv6 dialog ###\n\nimport time\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, CenteredIconsDelegate\nfrom LiveboxMonitor.lang.LmLanguages import get_ipv6_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# List columns\nclass IPv6Col(IntEnum):\n    Key = 0     # Must be the same as DevCol.Key\n    Name = 1\n    LBName = 2\n    MAC = 3\n    Active = 4\n    IPv4 = 5\n    IPv6 = 6\n    Prefix = 7\nIPV6_ICON_COLUMNS = [IPv6Col.Active]\n\n\n# ################################ IPv6 dialog ################################\nclass IPv6Dialog(QtWidgets.QDialog):\n    def __init__(self, enabled, cgnat, mode, addr, prefix, gateway, parent):\n        super().__init__(parent)\n        self.resize(1005, 110 + LmConfig.dialog_height(12))\n\n        self._app = parent \n\n        # IPv6 info box\n        ipv6_enabled_label = QtWidgets.QLabel(lx(\"IPv6 enabled:\"), objectName=\"ipv6EnabledLabel\")\n        ipv6_enabled = QtWidgets.QLabel(objectName=\"ipv6Enabled\")\n        if enabled:\n            ipv6_enabled.setPixmap(LmIcon.TickPixmap)\n        else:\n            ipv6_enabled.setPixmap(LmIcon.CrossPixmap)\n\n        cgnat_enabled_label = QtWidgets.QLabel(lx(\"CGNat:\"), objectName=\"cgNatLabel\")\n        self._cgnat_icon = QtWidgets.QLabel(objectName=\"cgNat\")\n        self._cgnat_enabled = cgnat\n        self.set_cgnat_icon()\n\n        ipv6_mode_label = QtWidgets.QLabel(lx(\"Mode:\"), objectName=\"ipv6ModeLabel\")\n        ipv6_mode = QtWidgets.QLabel(mode, objectName=\"ipv6Mode\")\n\n        addr_label = QtWidgets.QLabel(lx(\"IPv6 address:\"), objectName=\"addrLabel\")\n        addr_edit = QtWidgets.QLineEdit(addr, objectName=\"addr\")\n        addr_edit.setReadOnly(True)\n\n        prefix_label = QtWidgets.QLabel(lx(\"IPv6 prefix:\"), objectName=\"prefixLabel\")\n        prefix_edit = QtWidgets.QLineEdit(prefix, objectName=\"prefix\")\n        prefix_edit.setReadOnly(True)\n\n        gateway_label = QtWidgets.QLabel(lx(\"IPv6 gateway:\"), objectName=\"gatewayLabel\")\n        gateway_edit = QtWidgets.QLineEdit(gateway, objectName=\"gateway\")\n        gateway_edit.setReadOnly(True)\n\n        ipv6_info_grid = QtWidgets.QGridLayout()\n        ipv6_info_grid.setSpacing(10)\n        ipv6_info_grid.addWidget(ipv6_enabled_label, 0, 0)\n        ipv6_info_grid.addWidget(ipv6_enabled, 0, 1)\n        ipv6_info_grid.addWidget(cgnat_enabled_label, 0, 2)\n        ipv6_info_grid.addWidget(self._cgnat_icon, 0, 3)\n        ipv6_info_grid.addWidget(ipv6_mode_label, 0, 4)\n        ipv6_info_grid.addWidget(ipv6_mode, 0, 5)\n        ipv6_info_grid.addWidget(addr_label, 1, 0)\n        ipv6_info_grid.addWidget(addr_edit, 1, 1)\n        ipv6_info_grid.addWidget(prefix_label, 1, 2)\n        ipv6_info_grid.addWidget(prefix_edit, 1, 3)\n        ipv6_info_grid.addWidget(gateway_label, 1, 4)\n        ipv6_info_grid.addWidget(gateway_edit, 1, 5)\n\n        # Device table\n        self._device_table = LmTableWidget(objectName=\"ipv6Table\")\n        self._device_table.set_columns({IPv6Col.Key: [\"Key\", 0, None],\n                                        IPv6Col.Name: [lx(\"Name\"), 300, \"ipv6_Name\"],\n                                        IPv6Col.LBName: [lx(\"Livebox Name\"), 300, \"ipv6_LBName\"],\n                                        IPv6Col.MAC: [lx(\"MAC\"), 120, \"ipv6_MAC\"],\n                                        IPv6Col.Active: [lx(\"A\"), 10, \"ipv6_Active\"],\n                                        IPv6Col.IPv4: [lx(\"IPv4\"), 105, \"ipv6_IPv4\"],\n                                        IPv6Col.IPv6: [lx(\"IPv6\"), 250, \"ipv6_IPv6\"],\n                                        IPv6Col.Prefix: [lx(\"Prefix\"), 155, \"ipv6_Prefix\"]})\n        self._device_table.set_header_resize([IPv6Col.Name, IPv6Col.LBName])\n        self._device_table.set_standard_setup(parent, allow_sel=False)\n        self._device_table.setItemDelegate(CenteredIconsDelegate(self, IPV6_ICON_COLUMNS))\n\n        # Button bar\n        self._cgnat_button = QtWidgets.QPushButton(self.get_cgnat_button_title(), objectName=\"cgNatButton\")\n        self._cgnat_button.setStyleSheet(\"padding-left: 15px; padding-right: 15px; padding-top: 3px; padding-bottom: 3px;\")\n        self._cgnat_button.clicked.connect(self.cgnat_button_click)\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setSpacing(10)\n        hbox.addWidget(self._cgnat_button, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        hbox.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(ipv6_info_grid, 0)\n        vbox.addWidget(self._device_table, 1)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"ipv6\")\n\n        self.setWindowTitle(lx(\"IPv6 Devices\"))\n        self.setModal(True)\n        self.show()\n\n\n    def set_cgnat_icon(self):\n        if self._cgnat_enabled:\n            self._cgnat_icon.setPixmap(LmIcon.TickPixmap)\n        else:\n            self._cgnat_icon.setPixmap(LmIcon.CrossPixmap)\n\n\n    def get_cgnat_button_title(self):\n        if self._cgnat_enabled:\n            return lx(\"Disable CGNat\")\n        else:\n            return lx(\"Enable CGNat\")\n\n\n    def cgnat_button_click(self):\n        self._app._task.start()\n        try:\n            self._app._api._info.set_cgnat_enable(not self._cgnat_enabled)\n            self._cgnat_enabled = not self._cgnat_enabled\n        except Exception as e:\n            self._app.display_error(str(e))\n        finally:\n            self._app._task.end()\n\n        self.set_cgnat_icon()\n        self._cgnat_button.setText(self.get_cgnat_button_title())\n\n\n    def load_device_list(self, devices, prefixes):\n        if devices is not None:\n            self._device_table.setSortingEnabled(False)\n            app = self.parent()\n            i = 0\n            for d in devices:\n                if app.displayable_device(d):\n                    # First collect global IPv6 addresses\n                    ipv6_struct = d.get(\"IPv6Address\")\n                    ipv6_addr = []\n                    if ipv6_struct is not None:\n                        for a in ipv6_struct:\n                            scope = a.get(\"Scope\", \"link\")\n                            if scope != \"link\":\n                                addr = a.get(\"Address\")\n                                if addr is not None:\n                                    ipv6_addr.append(addr)\n\n                    # Get prefixes\n                    mac = d.get(\"PhysAddress\", \"\")\n                    device_prefixes = []\n                    if isinstance(prefixes, list):\n                        for m in prefixes:\n                            if m.get(\"MacAddress\") == mac:\n                                prefix_list = m.get(\"PDPrefixList\")\n                                if isinstance(prefix_list, list):\n                                    for n in prefix_list:\n                                        prefix = n.get(\"Prefix\")\n                                        if prefix is not None:\n                                            prefix_len = n.get(\"PrefixLen\")\n                                            if prefix_len is not None:\n                                                prefix += \"/\" + str(prefix_len)\n                                            device_prefixes.append(prefix)\n\n                    if not len(ipv6_addr) and not len(device_prefixes):\n                        continue\n\n                    # Display data\n                    key = d.get(\"Key\", \"\")\n                    app.add_device_line_key(self._device_table, i, key)\n\n                    app.format_name_widget(self._device_table, i, key, IPv6Col.Name)\n\n                    lb_name = QtWidgets.QTableWidgetItem(d.get(\"Name\", \"\"))\n                    self._device_table.setItem(i, IPv6Col.LBName, lb_name)\n\n                    app.format_mac_widget(self._device_table, i, mac, IPv6Col.MAC)\n\n                    active_status = d.get(\"Active\", False)\n                    active_icon = app.format_active_table_widget(active_status)\n                    self._device_table.setItem(i, IPv6Col.Active, active_icon)\n\n                    ip_struct = LmTools.determine_ip(d)\n                    if ip_struct is None:\n                        ipv4 = \"\"\n                        ipv4_reacheable = \"\"\n                        ipv4_reserved = False\n                    else:\n                        ipv4 = ip_struct.get(\"Address\", \"\")\n                        ipv4_reacheable = ip_struct.get(\"Status\", \"\")\n                        ipv4_reserved = ip_struct.get(\"Reserved\", False)\n                    ip = app.format_ipv4_table_widget(ipv4, ipv4_reacheable, ipv4_reserved)\n                    self._device_table.setItem(i, IPv6Col.IPv4, ip)\n\n                    ipv6_str = \"\"\n                    resize = False\n                    for a in ipv6_addr:\n                        if len(ipv6_str):\n                            ipv6_str += \"\\n\"\n                            resize = True\n                        ipv6_str += a\n                    self._device_table.setItem(i, IPv6Col.IPv6, QtWidgets.QTableWidgetItem(ipv6_str))\n                    if resize:\n                        self._device_table.resizeRowToContents(i)\n\n                    prefix_str = \"\"\n                    resize = False\n                    for a in device_prefixes:\n                        if len(prefix_str):\n                            prefix_str += \"\\n\"\n                            resize = True\n                        prefix_str += a\n                    self._device_table.setItem(i, IPv6Col.Prefix, QtWidgets.QTableWidgetItem(prefix_str))\n                    if resize:\n                        self._device_table.resizeRowToContents(i)\n\n                    i += 1\n\n            self._device_table.sortItems(IPv6Col.Active, QtCore.Qt.SortOrder.DescendingOrder)\n            self._device_table.setSortingEnabled(True)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmLiveboxCnx.py",
    "content": "### Livebox Monitor Connection dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_config_cnx_label as lx\n\n\n# ################################ Livebox connection dialog ################################\nclass LiveboxCnxDialog(QtWidgets.QDialog):\n    def __init__(self, url, parent=None):\n        super().__init__(parent)\n        self.resize(450, 150)\n\n        warn_box = QtWidgets.QVBoxLayout()\n        warn_box.setSpacing(4)\n        w1_label = QtWidgets.QLabel(lx(\"Cannot connect to the Livebox.\"), objectName=\"w1Label\")\n        w1_label.setFont(LmQtTools.BOLD_FONT)\n        warn_box.addWidget(w1_label)\n        w2_label = QtWidgets.QLabel(lx(\"It might be unreachable, in that case just wait.\"), objectName=\"w2Label\")\n        warn_box.addWidget(w2_label)\n        aW3Label = QtWidgets.QLabel(lx(\"Otherwise, try {0}, {1} or {2}.\").format(\"http://livebox.home/\", \"http://livebox/\", \"http://192.168.1.1/\"),\n               objectName=\"w3Label\")\n        warn_box.addWidget(aW3Label)\n\n        url_label = QtWidgets.QLabel(lx(\"Livebox URL\"), objectName=\"urlLabel\")\n        self._url_edit = QtWidgets.QLineEdit(objectName=\"urlEdit\")\n        self._url_edit.textChanged.connect(self.text_changed)\n\n        edit_grid = QtWidgets.QGridLayout()\n        edit_grid.setSpacing(10)\n        edit_grid.addWidget(url_label, 0, 0)\n        edit_grid.addWidget(self._url_edit, 0, 1)\n\n        button_bar = QtWidgets.QHBoxLayout()\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setSpacing(10)\n        button_bar.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(15)\n        vbox.addLayout(warn_box, 0)\n        vbox.addLayout(edit_grid, 0)\n        vbox.addLayout(button_bar, 1)\n\n        self._url_edit.setFocus()\n\n        LmConfig.set_tooltips(self, \"cnx\")\n\n        title = lx(\"Livebox connection\")\n        if len(LmConf.Profiles) > 1:\n            title += f\" [{LmConf.CurrProfile['Name']}]\"\n        self.setWindowTitle(title)\n\n        self._url_edit.setText(url)\n\n        self.setModal(True)\n        self.show()\n\n\n    def text_changed(self, iText):\n        self._ok_button.setDisabled(len(self.get_url()) == 0)\n\n\n    def get_url(self):\n        return self._url_edit.text()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmLiveboxSignin.py",
    "content": "### Livebox Monitor Signin dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_config_signin_label as lx\n\n\n# ################################ Livebox signin dialog ################################\nclass LiveboxSigninDialog(QtWidgets.QDialog):\n    def __init__(self, user, password, save_passwords, parent=None):\n        super().__init__(parent)\n        self.resize(450, 130)\n\n        user_label = QtWidgets.QLabel(lx(\"User\"), objectName=\"userLabel\")\n        self._user_edit = QtWidgets.QLineEdit(objectName=\"userEdit\")\n        self._user_edit.textChanged.connect(self.text_changed)\n\n        password_label = QtWidgets.QLabel(lx(\"Password\"), objectName=\"passwordLabel\")\n        self._password_edit = QtWidgets.QLineEdit(objectName=\"passwordEdit\")\n        self._password_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)\n        self._password_edit.textChanged.connect(self.text_changed)\n\n        edit_grid = QtWidgets.QGridLayout()\n        edit_grid.setSpacing(10)\n        edit_grid.addWidget(user_label, 0, 0)\n        edit_grid.addWidget(self._user_edit, 0, 1)\n        edit_grid.addWidget(password_label, 1, 0)\n        edit_grid.addWidget(self._password_edit, 1, 1)\n\n        self._save_passwords = QtWidgets.QCheckBox(lx(\"Save passwords\"), objectName=\"savePasswords\")\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(self._save_passwords, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        ok_button_bar = QtWidgets.QHBoxLayout()\n        ok_button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.setSpacing(10)\n        ok_button_bar.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addLayout(ok_button_bar)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(edit_grid, 0)\n        vbox.addLayout(button_bar, 1)\n\n        self._user_edit.setFocus()\n\n        LmConfig.set_tooltips(self, \"signin\")\n\n        title = lx(\"Enter password\")\n        if len(LmConf.Profiles) > 1:\n            title += f\" [{LmConf.CurrProfile['Name']}]\"\n\n        self.setWindowTitle(title)\n\n        self._user_edit.setText(user)\n        self._password_edit.setText(password)\n        self._save_passwords.setChecked(save_passwords)\n\n        self.setModal(True)\n        self.show()\n\n\n    def text_changed(self, iText):\n        self._ok_button.setDisabled((len(self.get_user()) == 0) or (len(self.get_password()) == 0))\n\n\n    def get_user(self):\n        return self._user_edit.text()\n\n\n    def get_password(self):\n        return self._password_edit.text()\n\n\n    def get_save_passwords(self):\n        return self._save_passwords.isChecked()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmNatPatRuleType.py",
    "content": "### Livebox Monitor NAT/PAT rule type selection dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig, LmPatPtf\nfrom LiveboxMonitor.lang.LmLanguages import get_nat_pat_rule_type_label as lx\n\n\n# ################################ NAT/PAT rule type selection dialog ################################\nclass NatPatRuleTypeDialog(QtWidgets.QDialog):\n    def __init__(self, upnp, parent=None):\n        super().__init__(parent)\n        self.setMinimumWidth(230)\n        self.resize(230, 150)\n\n        self._upnp = upnp\n\n        self._ipv4_checkbox = QtWidgets.QCheckBox(LmPatPtf.RULE_TYPE_IPv4, objectName=\"ipV4Checkbox\")\n        self._ipv4_checkbox.clicked.connect(self.set_ok_button_state)\n        self._ipv6_checkbox = QtWidgets.QCheckBox(LmPatPtf.RULE_TYPE_IPv6, objectName=\"ipV6Checkbox\")\n        self._ipv6_checkbox.clicked.connect(self.set_ok_button_state)\n        if upnp:\n            self._upnp_checkbox = QtWidgets.QCheckBox(LmPatPtf.RULE_TYPE_UPnP, objectName=\"upnpCheckbox\")\n            self._upnp_checkbox.clicked.connect(self.set_ok_button_state)\n\n        vcbox = QtWidgets.QVBoxLayout()\n        vcbox.setSpacing(10)\n        vcbox.addWidget(self._ipv4_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        vcbox.addWidget(self._ipv6_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        if upnp:\n            vcbox.addWidget(self._upnp_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(vcbox, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"nprtype\")\n\n        self.setWindowTitle(lx(\"Select rule types\"))\n\n        self.set_default()\n\n        self.setModal(True)\n        self.show()\n\n\n    # Set default values\n    def set_default(self):\n        self._ipv4_checkbox.setChecked(True)\n        self._ipv6_checkbox.setChecked(True)\n        if self._upnp:\n            self._upnp_checkbox.setChecked(False)\n        self.set_ok_button_state()\n\n\n    def get_types(self):\n        t = {\n            LmPatPtf.RULE_TYPE_IPv4: self._ipv4_checkbox.isChecked(),\n            LmPatPtf.RULE_TYPE_IPv6: self._ipv6_checkbox.isChecked()\n        }\n        if self._upnp:\n            t[LmPatPtf.RULE_TYPE_UPnP] = self._upnp_checkbox.isChecked()\n        return t\n\n\n    def set_ok_button_state(self):\n        if self._upnp:\n            one_checked = (self._ipv4_checkbox.isChecked() or\n                           self._ipv6_checkbox.isChecked() or\n                           self._upnp_checkbox.isChecked())\n        else:\n            one_checked = (self._ipv4_checkbox.isChecked() or\n                           self._ipv6_checkbox.isChecked())\n\n        self._ok_button.setDisabled(not one_checked)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmNotificationSetup.py",
    "content": "### Livebox Monitor Notification rules setup dialog ###\n\nimport os\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig, LmNotif\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, CenteredIconHeaderView, CenteredIconsDelegate\nfrom LiveboxMonitor.lang.LmLanguages import get_notification_rules_label as lx, get_events_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Rule list columns\nclass RuleCol(IntEnum):\n    Key = 0\n    Add = 1\n    Delete = 2\n    Active = 3\n    Inactive = 4\n    Link = 5\n    File = 6\n    Email = 7\nICON_COLUMNS = [RuleCol.Add, RuleCol.Delete, RuleCol.Active, RuleCol.Inactive, RuleCol.Link, RuleCol.File, RuleCol.Email]\n\n\n# ################################ Notification rules setup dialog ################################\nclass NotificationSetupDialog(QtWidgets.QDialog):\n    device_combo_separator_index = 2\n\n    ### Constructor\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(720, 400)\n\n        self._rule_selection = -1\n        self._ignore_signal = False\n        self._init = True\n\n        # Rule box\n        rule_layout = QtWidgets.QHBoxLayout()\n        rule_layout.setSpacing(30)\n\n        rule_list_layout = QtWidgets.QVBoxLayout()\n        rule_list_layout.setSpacing(5)\n\n        # Device list columns\n        self._rule_list = LmTableWidget(objectName=\"ruleList\")\n        self._rule_list.setHorizontalHeader(CenteredIconHeaderView(self, ICON_COLUMNS))\n        self._rule_list.set_columns({RuleCol.Key: [lx(\"Device\"), 390, \"rlist_Key\"],\n                                     RuleCol.Add: [lx(\"Added\"), 10, \"rlist_Add\"],\n                                     RuleCol.Delete: [lx(\"Deleted\"), 10, \"rlist_Delete\"],\n                                     RuleCol.Active: [lx(\"Connected\"), 10, \"rlist_Active\"],\n                                     RuleCol.Inactive: [lx(\"Disconnected\"), 10, \"rlist_Inactive\"],\n                                     RuleCol.Link: [lx(\"Link Changed\"), 10, \"rlist_Link\"],\n                                     RuleCol.File: [lx(\"File\"), 10, \"rlist_File\"],\n                                     RuleCol.Email: [lx(\"Email\"), 10, \"rlist_Email\"]})\n        self._rule_list.set_header_resize([RuleCol.Key])\n        self._rule_list.set_standard_setup(parent)\n\n        # Assign icon headers - drawn by CenteredIconHeaderView\n        model = self._rule_list.horizontalHeader().model()\n        model.setHeaderData(RuleCol.Add, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.AddCirclePixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.Delete, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.DelCirclePixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.Active, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.ActiveCirclePixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.Inactive, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.InactiveCirclePixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.Link, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.LocChangePixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.File, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.ExcelDocPixmap), LmQtTools.ItemDataRole.IconRole)\n        model.setHeaderData(RuleCol.Email, QtCore.Qt.Orientation.Horizontal, QtGui.QIcon(LmIcon.MailSendPixmap), LmQtTools.ItemDataRole.IconRole)\n\n        self._rule_list.setItemDelegate(CenteredIconsDelegate(self, ICON_COLUMNS))\n        self._rule_list.setMinimumWidth(460)\n        self._rule_list.itemSelectionChanged.connect(self.rule_list_click)\n\n        rule_list_layout.addWidget(self._rule_list, 1)\n\n        rule_button_box = QtWidgets.QHBoxLayout()\n        rule_button_box.setSpacing(5)\n\n        add_rule_button = QtWidgets.QPushButton(lx(\"Add\"), objectName=\"addRule\")\n        add_rule_button.clicked.connect(self.add_rule_button_click)\n        rule_button_box.addWidget(add_rule_button)\n        self._del_rule_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delRule\")\n        self._del_rule_button.clicked.connect(self.del_rule_button_click)\n        rule_button_box.addWidget(self._del_rule_button)\n        rule_list_layout.addLayout(rule_button_box, 0)\n        rule_layout.addLayout(rule_list_layout, 0)\n\n        device_label = QtWidgets.QLabel(lx(\"Device\"), objectName=\"deviceLabel\")\n        self._device_combo = QtWidgets.QComboBox(objectName=\"deviceCombo\")\n        self.load_device_list()\n        self._device_combo.addItem(lx(\"Any device\"))\n        self._device_combo.addItem(lx(\"Any unknown device\"))\n        self._device_combo.insertSeparator(NotificationSetupDialog.device_combo_separator_index)\n        for d in self._combo_device_list:\n            self._device_combo.addItem(d[\"Name\"])\n        self._device_combo.currentIndexChanged.connect(self.device_selected)\n\n        mac_label = QtWidgets.QLabel(lx(\"MAC address\"), objectName=\"macLabel\")\n        self._mac_edit = QtWidgets.QLineEdit(objectName=\"macEdit\")\n        mac_reg_exp = QtCore.QRegularExpression(\"^\" + LmTools.MAC_RS + \"$\")\n        mac_validator = QtGui.QRegularExpressionValidator(mac_reg_exp)\n        self._mac_edit.setValidator(mac_validator)\n        self._mac_edit.textChanged.connect(self.mac_typed)\n\n        events_label = QtWidgets.QLabel(lx(\"Events:\"), objectName=\"eventsLabel\")\n        self._add_event = QtWidgets.QCheckBox(lx(\"Device Added\"), objectName=\"addEvent\")\n        self._add_event.stateChanged.connect(self.add_event_changed)\n        self._del_event = QtWidgets.QCheckBox(lx(\"Device Deleted\"), objectName=\"delEvent\")\n        self._del_event.stateChanged.connect(self.del_event_changed)\n        self._act_event = QtWidgets.QCheckBox(lx(\"Device Connected\"), objectName=\"actEvent\")\n        self._act_event.stateChanged.connect(self.act_event_changed)\n        self._ina_event = QtWidgets.QCheckBox(lx(\"Device Disconnected\"), objectName=\"inaEvent\")\n        self._ina_event.stateChanged.connect(self.ina_event_changed)\n        self._lnk_event = QtWidgets.QCheckBox(lx(\"Device Access Link Changed\"), objectName=\"lnkEvent\")\n        self._lnk_event.stateChanged.connect(self.lnk_event_changed)\n\n        actions_label = QtWidgets.QLabel(lx(\"Actions:\"), objectName=\"actionsLabel\")\n        self._file_action = QtWidgets.QCheckBox(lx(\"Log in CSV file\"), objectName=\"fileAction\")\n        self._file_action.stateChanged.connect(self.file_action_changed)\n        self._email_action = QtWidgets.QCheckBox(lx(\"Send Email\"), objectName=\"emailAction\")\n        self._email_action.stateChanged.connect(self.email_action_changed)\n\n        rule_edit_grid = QtWidgets.QGridLayout()\n        rule_edit_grid.setSpacing(10)\n        rule_edit_grid.addWidget(device_label, 0, 0)\n        rule_edit_grid.addWidget(self._device_combo, 0, 1, 1, 2)\n        rule_edit_grid.addWidget(mac_label, 1, 0)\n        rule_edit_grid.addWidget(self._mac_edit, 1, 1, 1, 2)\n        rule_edit_grid.addWidget(events_label, 2, 0)\n        rule_edit_grid.addWidget(self._add_event, 2, 1)\n        rule_edit_grid.addWidget(self._del_event, 2, 2)\n        rule_edit_grid.addWidget(self._act_event, 3, 1)\n        rule_edit_grid.addWidget(self._ina_event, 3, 2)\n        rule_edit_grid.addWidget(self._lnk_event, 4, 1, 1, 2)\n        rule_edit_grid.addWidget(actions_label, 5, 0)\n        rule_edit_grid.addWidget(self._file_action, 5, 1, 1, 2)\n        rule_edit_grid.addWidget(self._email_action, 6, 1, 1, 2)\n\n        rule_layout.addLayout(rule_edit_grid, 0)\n\n        rule_group_box = QtWidgets.QGroupBox(lx(\"Rules\"), objectName=\"ruleGroup\")\n        rule_group_box.setLayout(rule_layout)\n\n        # General preferences box\n        int_validator = QtGui.QIntValidator()\n        int_validator.setRange(1, 99)\n\n        flush_frequency_label = QtWidgets.QLabel(lx(\"Event Resolution Frequency\"), objectName=\"flushFrequencyLabel\")\n        self._flush_frequency = QtWidgets.QLineEdit(objectName=\"flushFrequencyEdit\")\n        self._flush_frequency.setValidator(int_validator)\n        self._flush_frequency.setMaximumWidth(60)\n        flush_frequency_sec_label = QtWidgets.QLabel(lx(\"seconds\"), objectName=\"flushFrequencySecLabel\")\n\n        event_file_path_label = QtWidgets.QLabel(lx(\"CSV Files Path\"), objectName=\"eventFilePathLabel\")\n        self._event_file_path = QtWidgets.QLineEdit(objectName=\"eventFilePathEdit\")\n        self._event_file_path.textChanged.connect(self.event_file_path_typed)\n        self._event_file_path_select_button = QtWidgets.QPushButton(lx(\"Select\"), objectName=\"eventFilePathSelectButton\")\n        self._event_file_path_select_button.clicked.connect(self.event_file_path_select_button_clic)\n        self._default_file_path = QtWidgets.QCheckBox(lx(\"Default\"), objectName=\"defaultFilePath\")\n        self._default_file_path.stateChanged.connect(self.default_file_path_changed)\n\n        prefs_edit_grid = QtWidgets.QGridLayout()\n        prefs_edit_grid.setSpacing(10)\n\n        prefs_edit_grid.addWidget(flush_frequency_label, 0, 0)\n        prefs_edit_grid.addWidget(self._flush_frequency, 0, 1, 1, 1)\n        prefs_edit_grid.addWidget(flush_frequency_sec_label, 0, 2)\n        prefs_edit_grid.addWidget(event_file_path_label, 1, 0)\n        prefs_edit_grid.addWidget(self._event_file_path, 1, 1, 1, 5)\n        prefs_edit_grid.addWidget(self._event_file_path_select_button, 1, 7)\n        prefs_edit_grid.addWidget(self._default_file_path, 1, 8)\n\n        prefs_group_box = QtWidgets.QGroupBox(lx(\"Preferences\"), objectName=\"prefsGroup\")\n        prefs_group_box.setLayout(prefs_edit_grid)\n\n        # Button bar\n        button_bar = QtWidgets.QHBoxLayout()\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.ok_button_click)\n        self._ok_button.setDefault(True)\n        button_bar.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setSpacing(10)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(rule_group_box, 1)\n        vbox.addWidget(prefs_group_box, 0)\n        vbox.addLayout(button_bar, 0)\n\n        self._flush_frequency.setFocus()\n\n        LmConfig.set_tooltips(self, \"evnrules\")\n\n        self.setWindowTitle(lx(\"Notification Rules Setup\"))\n        self.setModal(True)\n        self.load_prefs()\n        self.show()\n\n        self._init = False\n\n\n    ### Load preferences data\n    def load_prefs(self):\n        self._rules = []\n\n        # Load rule list\n        if LmConf.NotificationRules:\n            for i, r in enumerate(LmConf.NotificationRules):\n                self._rules.append(r.copy())\n                self._rule_list.insertRow(i)\n                self.set_rule_row(i, r)\n        self.rule_list_click()\n\n        # Load paramaters\n        self._flush_frequency.setText(str(int(LmConf.NotificationFlushFrequency)))\n        if LmConf.NotificationFilePath is None:\n            self._default_file_path.setChecked(True)\n            self._event_file_path.setText(LmConf.get_config_directory())\n            self._event_file_path.setDisabled(True)\n            self._event_file_path_select_button.setDisabled(True)\n        else:\n            self._default_file_path.setChecked(False)\n            self._event_file_path.setText(LmConf.NotificationFilePath)\n\n\n    ### Set a row rule to a rule item\n    def set_rule_row(self, row, rule):\n        # Set rule device name\n        rule_name = self.lookup_rule_name(rule[\"Key\"])\n        self._rule_list.setItem(row, RuleCol.Key, QtWidgets.QTableWidgetItem(rule_name))\n\n        # Set event flags\n        event_flags = [(LmNotif.TYPE_ADD, RuleCol.Add),\n                       (LmNotif.TYPE_DELETE, RuleCol.Delete),\n                       (LmNotif.TYPE_ACTIVE, RuleCol.Active),\n                       (LmNotif.TYPE_INACTIVE, RuleCol.Inactive),\n                       (LmNotif.TYPE_LINK_CHANGE, RuleCol.Link)]\n        self.set_item_flags(row, rule[\"Events\"], event_flags, LmIcon.BlueLightPixmap)\n\n\n        # Set rule action flags\n        rule_flags = [(LmNotif.RULE_FILE, RuleCol.File),\n                      (LmNotif.RULE_EMAIL, RuleCol.Email)]\n        self.set_item_flags(row, rule[\"Rules\"], rule_flags, LmIcon.GreenLightPixmap)\n\n\n    ### Look rule name from device key\n    def lookup_rule_name(self, device_key):\n        if device_key == LmNotif.DEVICE_ALL:\n            return lx(\"Any device\")\n        elif device_key == LmNotif.DEVICE_UNKNOWN:\n            return lx(\"Any unknown device\")\n        for device in self._combo_device_list:\n            if device[\"MAC\"] == device_key:\n                return device[\"Name\"]\n        return device_key\n\n\n    ### Set table icons for each flag if present in active_types\n    def set_item_flags(self, row, active_types, flag_defs, icon_pixmap):\n        for flag_type, col in flag_defs:\n            item = QtWidgets.QTableWidgetItem()\n            if flag_type in active_types:\n                item.setIcon(QtGui.QIcon(icon_pixmap))\n                item.setData(QtCore.Qt.ItemDataRole.UserRole, True)\n            self._rule_list.setItem(row, col, item)\n\n\n    ### Save preferences data\n    def save_prefs(self):\n        # Save rule data\n        if len(self._rules):\n            LmConf.NotificationRules = self._rules\n        else:\n            LmConf.NotificationRules = None\n\n        # Save parameters\n        LmConf.NotificationFlushFrequency = int(self._flush_frequency.text())\n        if self._default_file_path.isChecked():\n            LmConf.NotificationFilePath = None\n        else:\n            LmConf.NotificationFilePath = self._event_file_path.text()\n\n\n    ### Click on rule list item\n    def rule_list_click(self):\n        new_selection = self._rule_list.currentRow()\n\n        # Check of selection really changed\n        if not self._init and self._rule_selection == new_selection:\n            return\n\n        # Check if current rule is OK\n        if not self.check_rule():\n            self._rule_list.selectRow(self._rule_selection)\n            return\n\n        within_dialog_init = self._init\n        if not within_dialog_init:\n            self._init = True\n\n        self._rule_selection = new_selection\n\n        # Load new values\n        if new_selection >= 0:\n            self._del_rule_button.setDisabled(False)\n\n            r = self._rules[new_selection]\n\n            # Device data\n            k = r[\"Key\"]\n            self._device_combo.setDisabled(False)\n            if k == LmNotif.DEVICE_ALL:\n                self._device_combo.setCurrentIndex(0)\n            elif k == LmNotif.DEVICE_UNKNOWN:\n                self._device_combo.setCurrentIndex(1)\n            else:\n                self._mac_edit.setDisabled(False)\n                self._mac_edit.setText(k)\n\n            # Event data\n            e = r[\"Events\"]\n            self._add_event.setDisabled(False)\n            self._add_event.setChecked(LmNotif.TYPE_ADD in e)\n            self._del_event.setDisabled(False)\n            self._del_event.setChecked(LmNotif.TYPE_DELETE in e)\n            self._act_event.setDisabled(False)\n            self._act_event.setChecked(LmNotif.TYPE_ACTIVE in e)\n            self._ina_event.setDisabled(False)\n            self._ina_event.setChecked(LmNotif.TYPE_INACTIVE in e)\n            self._lnk_event.setDisabled(False)\n            self._lnk_event.setChecked(LmNotif.TYPE_LINK_CHANGE in e)\n\n            # Set rule action flags\n            a = r[\"Rules\"]\n            self._file_action.setDisabled(False)\n            self._file_action.setChecked(LmNotif.RULE_FILE in a)\n            self._email_action.setDisabled(False)\n            self._email_action.setChecked(LmNotif.RULE_EMAIL in a)\n        else:\n            self._del_rule_button.setDisabled(True)\n            self._device_combo.setCurrentIndex(0)\n            self._device_combo.setDisabled(True)\n            self._mac_edit.setText(\"\")\n            self._mac_edit.setDisabled(True)\n            self._add_event.setChecked(False)\n            self._add_event.setDisabled(True)\n            self._del_event.setChecked(False)\n            self._del_event.setDisabled(True)\n            self._act_event.setChecked(False)\n            self._act_event.setDisabled(True)\n            self._ina_event.setChecked(False)\n            self._ina_event.setDisabled(True)\n            self._lnk_event.setChecked(False)\n            self._lnk_event.setDisabled(True)\n            self._file_action.setChecked(False)\n            self._file_action.setDisabled(True)\n            self._email_action.setChecked(False)\n            self._email_action.setDisabled(True)\n\n        if not within_dialog_init:\n            self._init = False\n\n\n    def load_device_list(self):\n        device_list = self.parent().get_device_list()\n        self._combo_device_list = []\n\n        # Load from MacAddrTable file\n        for d in LmConf.MacAddrTable:\n            device = {\"Name\": LmConf.MacAddrTable[d], \"MAC\": d}\n            self._combo_device_list.append(device)\n\n        # Load from device list if not already loaded\n        for d in device_list:\n            if (len(d[\"MAC\"])) and (not any(e[\"MAC\"] == d[\"MAC\"] for e in self._combo_device_list)):\n                device = {\"Name\": d[\"LBName\"], \"MAC\": d[\"MAC\"]}\n                self._combo_device_list.append(device)\n\n        # Sort by name\n        self._combo_device_list = sorted(self._combo_device_list, key = lambda x: x[\"Name\"])\n\n        # Insert unknown device at the beginning\n        device = {\"Name\": lx(\"-Unknown-\"), \"MAC\": \"\"}\n        self._combo_device_list.insert(0, device)\n\n\n    def device_selected(self, index):\n        if not self._ignore_signal:\n            if index == 0:\n                self._ignore_signal = True\n                self._mac_edit.setText(\"\")\n                self._ignore_signal = False\n                self._mac_edit.setDisabled(True)\n            elif index == 1:\n                self._ignore_signal = True\n                self._mac_edit.setText(\"\")\n                self._ignore_signal = False\n                self._mac_edit.setDisabled(True)\n            elif index > NotificationSetupDialog.device_combo_separator_index:\n                self._mac_edit.setDisabled(False)\n                self._ignore_signal = True\n                self._mac_edit.setText(self._combo_device_list[index - (NotificationSetupDialog.device_combo_separator_index + 1)][\"MAC\"])\n                self._ignore_signal = False\n\n            if not self._init:\n                self.save_rule()\n\n\n    def mac_typed(self, mac_addr):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n\n            index = 0\n            for i, d in enumerate(self._combo_device_list):\n                if d[\"MAC\"] == mac_addr:\n                    index = i\n                    break\n\n            self._device_combo.setCurrentIndex(index + (NotificationSetupDialog.device_combo_separator_index + 1))\n            self._ignore_signal = False\n\n            if not self._init:\n                self.save_rule()\n\n\n    ### Add event checkbox option changed\n    def add_event_changed(self, state):\n        self.event_option_changed(self._add_event)\n\n\n    ### Delete event checkbox option changed\n    def del_event_changed(self, state):\n        self.event_option_changed(self._del_event)\n\n\n    ### Active event checkbox option changed\n    def act_event_changed(self, state):\n        self.event_option_changed(self._act_event)\n\n\n    ### Inactive event checkbox option changed\n    def ina_event_changed(self, state):\n        self.event_option_changed(self._ina_event)\n\n\n    ### Link change event checkbox option changed\n    def lnk_event_changed(self, state):\n        self.event_option_changed(self._lnk_event)\n\n\n    ### An event checkbox option changed\n    def event_option_changed(self, checkbox):\n        if not self._init:\n            # Check if at least one event is checked\n            if (not self._add_event.isChecked() and\n                not self._del_event.isChecked() and\n                not self._act_event.isChecked() and\n                not self._ina_event.isChecked() and\n                not self._lnk_event.isChecked()):\n                self._init = True\n                checkbox.setChecked(True)\n                self._init = False\n            else:\n                self.save_rule()\n\n\n    ### File action checkbox option changed\n    def file_action_changed(self, state):\n        self.action_option_changed(self._file_action)\n\n\n    ### Email action checkbox option changed\n    def email_action_changed(self, state):\n        self.action_option_changed(self._email_action)\n\n\n    ### An action checkbox option changed\n    def action_option_changed(self, checkbox):\n        if not self._init:\n            # Check if at least one action is checked\n            if (not self._file_action.isChecked() and\n                not self._email_action.isChecked()):\n                self._init = True\n                checkbox.setChecked(True)\n                self._init = False\n            else:\n                self.save_rule()\n\n\n    ### Notification event file path changed\n    def event_file_path_typed(self, path):\n        self._ok_button.setDisabled(len(path) == 0)\n\n\n    ### Check if current rule is OK, returns True if yes\n    def check_rule(self):\n        if self._rule_selection >= 0:\n            r = self._rules[self._rule_selection]\n            k = r[\"Key\"]\n            if k != LmNotif.DEVICE_ALL and k != LmNotif.DEVICE_UNKNOWN:\n                m = self._mac_edit.text()\n                if not LmTools.is_mac_addr(m):\n                        self.parent().display_error(mx(\"{} is not a valid MAC address.\", \"macErr\").format(m))\n                        self._mac_edit.setFocus()\n                        return False\n        return True\n\n\n    ### Save current rule in rules buffer\n    def save_rule(self):\n        r = self._rules[self._rule_selection]\n\n        # Key\n        i = self._device_combo.currentIndex()\n        if i == 0:\n            r[\"Key\"] = LmNotif.DEVICE_ALL\n        elif i == 1:\n            r[\"Key\"] = LmNotif.DEVICE_UNKNOWN\n        else:\n            mac_addr = self._mac_edit.text()\n            if not len(mac_addr):\n                r[\"Key\"] = LmNotif.DEVICE_UNKNOWN\n            else:\n                r[\"Key\"] = mac_addr\n\n        # Events\n        e = []\n        if self._add_event.isChecked():\n            e.append(LmNotif.TYPE_ADD)\n        if self._del_event.isChecked():\n            e.append(LmNotif.TYPE_DELETE)\n        if self._act_event.isChecked():\n            e.append(LmNotif.TYPE_ACTIVE)\n        if self._ina_event.isChecked():\n            e.append(LmNotif.TYPE_INACTIVE)\n        if self._lnk_event.isChecked():\n            e.append(LmNotif.TYPE_LINK_CHANGE)\n        r[\"Events\"] = e\n\n        # Rule action flags\n        a = []\n        if self._file_action.isChecked():\n            a.append(LmNotif.RULE_FILE)\n        if self._email_action.isChecked():\n            a.append(LmNotif.RULE_EMAIL)\n        r[\"Rules\"] = a\n\n        # Display rule\n        self.set_rule_row(self._rule_selection, r)\n\n\n    ### Click on add rule button\n    def add_rule_button_click(self):\n        # Add new default rule in buffer\n        r = {\"Key\": LmNotif.DEVICE_ALL,\n             \"Events\": [ LmNotif.TYPE_ACTIVE, LmNotif.TYPE_INACTIVE],\n             \"Rules\": [ LmNotif.RULE_FILE ]}\n        self._rules.append(r)\n\n        # Add new item in list and select it\n        i = self._rule_list.rowCount()\n        self._rule_list.insertRow(i)\n        self.set_rule_row(i, r)\n        self._rule_list.selectRow(i)\n\n\n    ### Click on delete rule button\n    def del_rule_button_click(self):\n        i = self._rule_selection\n\n        # Delete the list line\n        self._rule_selection = -1\n        self._init = True\n        self._rule_list.removeRow(i)\n        self._init = False\n\n        # Remove the rule from rules buffer\n        self._rules.pop(i)\n\n        # Update selection\n        self._rule_selection = self._rule_list.currentRow()\n\n\n    ### Select event file path button click\n    def event_file_path_select_button_clic(self):\n        folder = QtWidgets.QFileDialog.getExistingDirectory(self, lx(\"Select Folder\"))\n        if len(folder):\n            folder = QtCore.QDir.toNativeSeparators(folder)\n            self._event_file_path.setText(folder)\n\n\n    ### Default file path checkbox changed\n    def default_file_path_changed(self, state):\n        if not self._init:\n            if self._default_file_path.isChecked():\n                self._event_file_path.setText(LmConf.get_config_directory())\n                self._event_file_path.setDisabled(True)\n                self._event_file_path_select_button.setDisabled(True)\n            else:\n                if LmConf.NotificationFilePath is None:\n                    self._event_file_path.setText(LmConf.get_config_directory())\n                else:\n                    self._event_file_path.setText(LmConf.NotificationFilePath)\n                self._event_file_path.setDisabled(False)\n                self._event_file_path_select_button.setDisabled(False)\n\n\n    ### Check if file path is OK, return True if yes\n    def check_file_path(self):\n        if self._default_file_path.isChecked():\n            return True\n\n        # Create directory if doesn't exist\n        p = self._event_file_path.text()\n        if not os.path.isdir(p):\n            if self.parent().ask_question(mx(\"Configured log file directory does not exist. Do you want to create it?\", \"logDirExist\")):\n                try:\n                    os.makedirs(p)\n                except Exception as e:\n                    LmTools.error(f\"Cannot create log file directory. Error: {e}\")\n                    self.parent().display_error(mx(\"Cannot create log file directory.\\nError: {}.\", \"logDirErr\").format(e))\n                    return False\n            else:\n                return False\n        return True\n\n\n    ### Click on OK button\n    def ok_button_click(self):\n        # Accept only if current rule & file path are OK\n        if self.check_rule() and self.check_file_path():\n            self.save_prefs()\n            self.accept()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmPatRule.py",
    "content": "### Livebox Monitor PAT rule dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig, LmPatPtf\nfrom LiveboxMonitor.lang.LmLanguages import get_pat_rule_label as lx, get_nat_pat_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ PAT rule dialog ################################\nclass PatRuleDialog(QtWidgets.QDialog):\n    def __init__(self, rule=None, parent=None):\n        super().__init__(parent)\n        self.resize(390, 420)\n\n        self._ignore_signal = False\n\n        self._enable_checkbox = QtWidgets.QCheckBox(lx(\"Enabled\"), objectName=\"enableCheckbox\")\n\n        type_label = QtWidgets.QLabel(lx(\"Type\"), objectName=\"typeLabel\")\n        self._type_combo = QtWidgets.QComboBox(objectName=\"typeCombo\")\n        self._type_combo.addItems(LmPatPtf.RULE_PAT_TYPES)\n        self._type_combo.activated.connect(self.type_selected)\n\n        name_label = QtWidgets.QLabel(lx(\"Name\"), objectName=\"nameLabel\")\n        self._name_edit = QtWidgets.QLineEdit(objectName=\"nameEdit\")\n        self._name_edit.textChanged.connect(self.name_typed)\n\n        desc_label = QtWidgets.QLabel(lx(\"Description\"), objectName=\"descLabel\")\n        self._desc_edit = LmQtTools.MultiLinesEdit(objectName=\"descEdit\")\n        self._desc_edit.setTabChangesFocus(True)\n        self._desc_edit.setLineNumber(2)\n\n        protocols_label = QtWidgets.QLabel(lx(\"Protocols\"), objectName=\"protocolsLabel\")\n        self._tcp_checkbox = QtWidgets.QCheckBox(lx(\"TCP\"), objectName=\"tcpCheckbox\")\n        self._tcp_checkbox.clicked.connect(self.protocol_click)\n        self._udp_checkbox = QtWidgets.QCheckBox(lx(\"UDP\"), objectName=\"udpCheckbox\")\n        self._udp_checkbox.clicked.connect(self.protocol_click)\n        protocols_box = QtWidgets.QHBoxLayout()\n        protocols_box.setSpacing(10)\n        protocols_box.addWidget(self._tcp_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        protocols_box.addWidget(self._udp_checkbox, 1, QtCore.Qt.AlignmentFlag.AlignLeft)\n\n        port_regexp = QtCore.QRegularExpression(LmTools.PORTS_RS)\n        port_validator = QtGui.QRegularExpressionValidator(port_regexp)\n\n        int_port_label = QtWidgets.QLabel(lx(\"Internal Port\"), objectName=\"intPortLabel\")\n        self._int_port_edit = QtWidgets.QLineEdit(objectName=\"intPortEdit\")\n        self._int_port_edit.setValidator(port_validator)\n\n        ext_port_label = QtWidgets.QLabel(lx(\"External Port\"), objectName=\"extPortLabel\")\n        self._ext_port_edit = QtWidgets.QLineEdit(objectName=\"extPortEdit\")\n        self._ext_port_edit.setValidator(port_validator)\n\n        port_box = QtWidgets.QHBoxLayout()\n        port_box.addWidget(self._int_port_edit, 1, QtCore.Qt.AlignmentFlag.AlignLeft)\n        port_box.addWidget(ext_port_label, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        port_box.addWidget(self._ext_port_edit, 1, QtCore.Qt.AlignmentFlag.AlignLeft)\n\n        device_label = QtWidgets.QLabel(lx(\"Device\"), objectName=\"deviceLabel\")\n        self._device_combo = QtWidgets.QComboBox(objectName=\"deviceCombo\")\n        self._device_combo.activated.connect(self.device_selected)\n\n        ip_label = QtWidgets.QLabel(lx(\"IP Address\"), objectName=\"ipLabel\")\n        self._ip_edit = QtWidgets.QLineEdit(objectName=\"ipEdit\")\n        self._ip_edit.textChanged.connect(self.ip_typed)\n\n        ext_ips_label = QtWidgets.QLabel(lx(\"External IPs\"), objectName=\"extIPsLabel\")\n        self._ext_ips_edit = LmQtTools.MultiLinesEdit(objectName=\"extIPsEdit\")\n        self._ext_ips_edit.setTabChangesFocus(True)\n        self._ext_ips_edit.setLineNumber(2)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(self._enable_checkbox, 0, 0)\n        grid.addWidget(type_label, 1, 0)\n        grid.addWidget(self._type_combo, 1, 1)\n        grid.addWidget(name_label, 2, 0)\n        grid.addWidget(self._name_edit, 2, 1)\n        grid.addWidget(desc_label, 3, 0)\n        grid.addWidget(self._desc_edit, 3, 1)\n        grid.addWidget(protocols_label, 4, 0)\n        grid.addLayout(protocols_box, 4, 1)\n        grid.addWidget(int_port_label, 5, 0)\n        grid.addLayout(port_box, 5, 1)\n        grid.addWidget(device_label, 6, 0)\n        grid.addWidget(self._device_combo, 6, 1)\n        grid.addWidget(ip_label, 7, 0)\n        grid.addWidget(self._ip_edit, 7, 1)\n        grid.addWidget(ext_ips_label, 8, 0)\n        grid.addWidget(self._ext_ips_edit, 8, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"patrule\")\n\n        self.setWindowTitle(lx(\"Port Forwarding Rule\"))\n\n        if rule:\n            self.set_rule(rule)\n        else:\n            self.set_default()\n\n        self._name_edit.setFocus()\n        self.setModal(True)\n        self.show()\n\n\n    # Set default values, for rule creation\n    def set_default(self):\n        self._enable_checkbox.setChecked(True)\n        i = LmPatPtf.RULE_PAT_TYPES.index(LmPatPtf.RULE_TYPE_IPv4)\n        self._type_combo.setCurrentIndex(i)\n        self.type_selected(i)\n        self._name_edit.setText(\"\")\n        self._desc_edit.setPlainText(\"\")\n        self._tcp_checkbox.setChecked(True)\n        self._udp_checkbox.setChecked(False)\n        self._int_port_edit.setText(\"1000\")\n        self._ext_port_edit.setText(\"1000\")\n        self._device_combo.setCurrentIndex(0)\n        self._ip_edit.setText(\"\")\n        self._ext_ips_edit.setPlainText(\"\")\n        self.set_ok_button_state()\n\n\n    # Set values to existing rule, for edition\n    def set_rule(self, rule):\n        self._enable_checkbox.setChecked(rule[\"Enable\"])\n\n        i = LmPatPtf.RULE_PAT_TYPES.index(rule[\"Type\"])\n        self._type_combo.setCurrentIndex(i)\n        self.type_selected(i)\n\n        self._name_edit.setText(rule[\"Name\"])\n        self._desc_edit.setPlainText(rule[\"Desc\"])\n\n        p = rule[\"ProtoNames\"].split(\"/\")\n\n        self._tcp_checkbox.setChecked(LmPatPtf.PROTOCOL_NAMES[str(LmPatPtf.Protocols.TCP.value)] in p)\n        self._udp_checkbox.setChecked(LmPatPtf.PROTOCOL_NAMES[str(LmPatPtf.Protocols.UDP.value)] in p)\n\n        self._int_port_edit.setText(rule[\"IntPort\"])\n        self._ext_port_edit.setText(rule[\"ExtPort\"])\n\n        ip = rule[\"IP\"]\n        self._ip_edit.setText(ip)\n        self.ip_typed(ip)\n\n        self._ext_ips_edit.setPlainText(rule[\"ExtIPs\"])\n\n        self.set_ok_button_state()\n\n\n    def get_rule(self):\n        p = self.get_protocols()\n        return {\n            \"Enable\": self.get_enabled(),\n            \"Type\": self.get_type(),\n            \"Name\": self.get_name(),\n            \"Desc\": self.get_description(),\n            \"ProtoNames\": p,\n            \"ProtoNumbers\": self.parent().translate_nat_pat_protocols(p),\n            \"IntPort\": self.get_int_port(),\n            \"ExtPort\": self.get_ext_port(),\n            \"IP\": self.get_ip(),\n            \"ExtIPs\": self.get_ext_ips()\n        }\n\n\n    def type_selected(self, index):\n        # Load corresponding devices\n        self.load_device_list()\n\n        # Adjust IP field validator\n        if self.get_type() == LmPatPtf.RULE_TYPE_IPv6:\n            ip_reg_exp = QtCore.QRegularExpression(f\"^{LmTools.IPv6_RS}$\")\n            if not LmPatPtf.IPV6_SOURCE_PORT_WORKING:\n                self._ext_port_edit.setEnabled(False)\n                self._ext_port_edit.setText(\"\")\n        else:\n            ip_reg_exp = QtCore.QRegularExpression(f\"^{LmTools.IPv4_RS}$\")\n            if not LmPatPtf.IPV6_SOURCE_PORT_WORKING:\n                self._ext_port_edit.setEnabled(True)\n        self._ip_edit.setValidator(QtGui.QRegularExpressionValidator(ip_reg_exp))\n\n\n    def name_typed(self, text):\n        self.set_ok_button_state()\n\n\n    def protocol_click(self):\n        self.set_ok_button_state()\n\n\n    def device_selected(self, index):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            self._ip_edit.setText(self._device_combo.currentData())\n            self._ignore_signal = False\n\n\n    def ip_typed(self, text):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            i = self._device_combo.findData(text.split('/')[0])     # split() to convert potential CIDR notation into IP addr\n            if i < 0:\n                i = 0\n            self._device_combo.setCurrentIndex(i)\n            self._ignore_signal = False\n\n        self.set_ok_button_state()\n\n\n    def set_ok_button_state(self):\n        self._ok_button.setDisabled((len(self.get_name()) == 0) or\n                                    (len(self.get_ip()) == 0) or\n                                    (len(self.get_protocols()) == 0))\n\n\n    def load_device_list(self):\n        t = self.get_type()\n        device_map = self.parent()._device_ip_name_map\n        self._device_combo.clear()\n\n        # If type is UPnP load IPv4 devices\n        if t == LmPatPtf.RULE_TYPE_UPnP:\n            t = LmPatPtf.RULE_TYPE_IPv4\n\n        # Load matching devices / IPs\n        for i in device_map:\n            if device_map[i][\"IPVers\"] == t:\n                self._device_combo.addItem(self.parent().get_device_name_from_ip(i), userData=i)\n\n        # Sort by name\n        self._device_combo.model().sort(0)\n\n        # Insert unknown device at the beginning\n        self._device_combo.insertItem(0, lx(\"-Unknown-\"), userData=\"\")\n        self._device_combo.setCurrentIndex(0)\n        self.device_selected(0)\n\n\n    def accept(self):\n        t = self.get_type()\n\n        # Validate IP address\n        ip = self.get_ip()\n        if t == LmPatPtf.RULE_TYPE_IPv6:\n            if not LmTools.is_ipv6(ip):\n                self.parent().display_error(mx(\"{} is not a valid IPv6 address.\", \"ipv6AddrErr\").format(ip))\n                self._ip_edit.setFocus()\n                return\n        else:\n            if not LmTools.is_ipv4(ip):\n                self.parent().display_error(mx(\"{} is not a valid IPv4 address.\", \"ipv4AddrErr\").format(ip))\n                self._ip_edit.setFocus()\n                return\n\n        # Validate external IP addresses\n        e = self.get_ext_ips()\n        if e:\n            ext_ips = e.split(\",\")\n            for ip in ext_ips:\n                if len(ip) == 0:\n                    self.parent().display_error(mx(\"Empty IP address.\", \"emptyAddr\"))\n                    self._ext_ips_edit.setFocus()\n                    return\n\n                if t == LmPatPtf.RULE_TYPE_IPv6:\n                    if not LmTools.is_ipv6_pfix(ip):\n                        self.parent().display_error(mx(\"{} is not a valid IPv6 address or prefix.\", \"ipv6AddrPfixErr\").format(ip))\n                        self._ext_ips_edit.setFocus()\n                        return\n                else:\n                    if not LmTools.is_ipv4_pfix(ip):\n                        self.parent().display_error(mx(\"{} is not a valid IPv4 address or prefix.\", \"ipv4AddrPfixErr\").format(ip))\n                        self._ext_ips_edit.setFocus()\n                        return\n\n        super().accept()\n\n\n    def get_enabled(self):\n        return self._enable_checkbox.isChecked()\n\n\n    def get_type(self):\n        return self._type_combo.currentText()\n\n\n    def get_name(self):\n        return self._name_edit.text()\n\n\n    def get_description(self):\n        return self._desc_edit.toPlainText()\n\n\n    def get_protocols(self):\n        protocols = []\n        if self._tcp_checkbox.isChecked():\n            protocols.append(LmPatPtf.PROTOCOL_NAMES[str(LmPatPtf.Protocols.TCP.value)])\n        if self._udp_checkbox.isChecked():\n            protocols.append(LmPatPtf.PROTOCOL_NAMES[str(LmPatPtf.Protocols.UDP.value)])\n        return \"/\".join(protocols)\n\n\n    def get_int_port(self):\n        p = self._int_port_edit.text()\n        if p:\n            return p\n        return None\n\n\n    def get_ext_port(self):\n        p = self._ext_port_edit.text()\n        if p:\n            return p\n        return None\n\n\n    def get_ip(self):\n        return self._ip_edit.text()\n\n\n    def get_ext_ips(self):\n        return self._ext_ips_edit.toPlainText()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmPingResponse.py",
    "content": "### Livebox Monitor Ping Response setup dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_ping_response_label as lx\n\n\n# ################################ Ping Response setup dialog ################################\nclass PingResponseDialog(QtWidgets.QDialog):\n    def __init__(self, ipv4, ipv6, parent=None):\n        super().__init__(parent)\n        self.setMinimumWidth(230)\n        self.resize(230, 150)\n\n        self._ipv4_checkbox = QtWidgets.QCheckBox(lx(\"Respond to IPv4 ping\"), objectName=\"ipV4Checkbox\")\n        self._ipv4_checkbox.setChecked(ipv4)\n\n        self._ipv6_checkbox = QtWidgets.QCheckBox(lx(\"Respond to IPv6 ping\"), objectName=\"ipV6Checkbox\")\n        self._ipv6_checkbox.setChecked(ipv6)\n\n        vcbox = QtWidgets.QVBoxLayout()\n        vcbox.setSpacing(10)\n        vcbox.addWidget(self._ipv4_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        vcbox.addWidget(self._ipv6_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(vcbox, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"pingr\")\n\n        self.setWindowTitle(lx(\"Ping Responses\"))\n\n        self.setModal(True)\n        self.show()\n\n\n    def get_ipv4(self):\n        return self._ipv4_checkbox.isChecked()\n\n\n    def get_ipv6(self):\n        return self._ipv6_checkbox.isChecked()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmPrefs.py",
    "content": "### Livebox Monitor Preferences dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang import LmLanguages\nfrom LiveboxMonitor.lang.LmLanguages import get_config_prefs_label as lx,  get_config_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ Preferences dialog ################################\nclass PrefsDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(620, 510)\n\n        # Profiles box\n        profile_layout = QtWidgets.QHBoxLayout()\n        profile_layout.setSpacing(30)\n\n        profile_list_layout = QtWidgets.QVBoxLayout()\n        profile_list_layout.setSpacing(5)\n\n        self._profile_selection = -1\n        self._profile_list = QtWidgets.QListWidget(objectName=\"profileList\")\n        self._profile_list.setMaximumWidth(190)\n        self._profile_list.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection)\n        self._profile_list.itemSelectionChanged.connect(self.profile_list_click)\n        profile_list_layout.addWidget(self._profile_list, 0)\n\n        profile_button_box = QtWidgets.QHBoxLayout()\n        profile_button_box.setSpacing(5)\n\n        add_profile_button = QtWidgets.QPushButton(lx(\"Add\"), objectName=\"addProfile\")\n        add_profile_button.clicked.connect(self.add_profile_button_click)\n        profile_button_box.addWidget(add_profile_button)\n        del_profile_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delProfile\")\n        del_profile_button.clicked.connect(self.del_profile_button_click)\n        profile_button_box.addWidget(del_profile_button)\n        profile_list_layout.addLayout(profile_button_box, 0)\n        profile_layout.addLayout(profile_list_layout, 0)\n\n        profile_name_label = QtWidgets.QLabel(lx(\"Name\"), objectName=\"profileNameLabel\")\n        self._profile_name = QtWidgets.QLineEdit(objectName=\"profileNameEdit\")\n        self._profile_name.textChanged.connect(self.profile_name_changed)\n\n        livebox_url_label = QtWidgets.QLabel(lx(\"Livebox URL\"), objectName=\"liveboxUrlLabel\")\n        self._livebox_url = QtWidgets.QLineEdit(objectName=\"liveboxUrlEdit\")\n\n        livebox_user_label = QtWidgets.QLabel(lx(\"Livebox User\"), objectName=\"liveboxUserLabel\")\n        self._livebox_user = QtWidgets.QLineEdit(objectName=\"liveboxUserEdit\")\n\n        self._filter_devices = QtWidgets.QCheckBox(lx(\"Filter Devices\"), objectName=\"filterDevices\")\n        self._only_active_devices = QtWidgets.QCheckBox(lx(\"Display Only Active Devices\"), objectName=\"onlyActiveDevices\")\n\n        mac_addr_table_file_label = QtWidgets.QLabel(lx(\"MacAddr Table File\"), objectName=\"macAddrTableFileLabel\")\n        self._mac_addr_table_file = QtWidgets.QLineEdit(objectName=\"macAddrTableFileEdit\")\n\n        self._default_profile = QtWidgets.QCheckBox(lx(\"Default\"), objectName=\"defaultProfile\")\n\n        profile_edit_grid = QtWidgets.QGridLayout()\n        profile_edit_grid.setSpacing(10)\n        profile_edit_grid.addWidget(profile_name_label, 0, 0)\n        profile_edit_grid.addWidget(self._profile_name, 0, 1)\n        profile_edit_grid.addWidget(livebox_url_label, 1, 0)\n        profile_edit_grid.addWidget(self._livebox_url, 1, 1)\n        profile_edit_grid.addWidget(livebox_user_label, 2, 0)\n        profile_edit_grid.addWidget(self._livebox_user, 2, 1)\n        profile_edit_grid.addWidget(self._filter_devices, 3, 0, 1, 2)\n        profile_edit_grid.addWidget(self._only_active_devices, 4, 0, 1, 2)\n        profile_edit_grid.addWidget(mac_addr_table_file_label, 5, 0)\n        profile_edit_grid.addWidget(self._mac_addr_table_file, 5, 1)\n        profile_edit_grid.addWidget(self._default_profile, 6, 0, 1, 2)\n        profile_layout.addLayout(profile_edit_grid, 1)\n\n        profile_group_box = QtWidgets.QGroupBox(lx(\"Profiles\"), objectName=\"profileGroup\")\n        profile_group_box.setLayout(profile_layout)\n\n        # General preferences box\n        language_label = QtWidgets.QLabel(lx(\"Language\"), objectName=\"languageLabel\")\n        self._language_combo = QtWidgets.QComboBox(objectName=\"languageCombo\")\n        for i in range(len(LmLanguages.LANGUAGES_KEY)):\n            self._language_combo.addItem(LmLanguages.LANGUAGES_KEY[i] + \" - \" + LmLanguages.LANGUAGES_NAME[i])\n\n        self._tooltips = QtWidgets.QCheckBox(lx(\"Tooltips\"), objectName=\"tooltips\")\n\n        mac_addr_api_key_label = QtWidgets.QLabel(lx(\"macaddress.io API Key\"), objectName=\"macAddrApiKeyLabel\")\n        self._mac_addr_api_key = QtWidgets.QLineEdit(objectName=\"macAddrApiKeyEdit\")\n\n        call_filter_api_key_label = QtWidgets.QLabel(lx(\"CallFilter API Key\"), objectName=\"callFilterApiKeyLabel\")\n        self._call_filter_api_key = QtWidgets.QLineEdit(objectName=\"callFilterApiKeyEdit\")\n\n        int_validator = QtGui.QIntValidator()\n        int_validator.setRange(1, 99)\n\n        stats_frequency_label = QtWidgets.QLabel(lx(\"Stats Frequency\"), objectName=\"statsFrequencyLabel\")\n        self._stats_frequency = QtWidgets.QLineEdit(objectName=\"statsFrequencyEdit\")\n        self._stats_frequency.setValidator(int_validator)\n\n        phone_code_label = QtWidgets.QLabel(lx(\"Intl Phone Code\"), objectName=\"phoneCodeLabel\")\n        self._phone_code = QtWidgets.QLineEdit(objectName=\"phoneCodeEdit\")\n        phone_code_validator = QtGui.QIntValidator()\n        phone_code_validator.setRange(1, 999999)\n        self._phone_code.setValidator(phone_code_validator)\n\n        list_header_height_label = QtWidgets.QLabel(lx(\"List Header Height\"), objectName=\"listHeaderHeightLabel\")\n        self._list_header_height = QtWidgets.QLineEdit(objectName=\"listHeaderHeightEdit\")\n        self._list_header_height.setValidator(int_validator)\n\n        list_header_font_size_label = QtWidgets.QLabel(lx(\"List Header Font Size\"), objectName=\"listHeaderFontSizeLabel\")\n        self._list_header_font_size = QtWidgets.QLineEdit(objectName=\"listHeaderFontSizeEdit\")\n        self._list_header_font_size.setValidator(int_validator)\n\n        list_line_height_label = QtWidgets.QLabel(lx(\"List Line Height\"), objectName=\"listLineHeightLabel\")\n        self._list_line_height = QtWidgets.QLineEdit(objectName=\"listLineHeightEdit\")\n        self._list_line_height.setValidator(int_validator)\n\n        list_line_font_size_label = QtWidgets.QLabel(lx(\"List Line Font Size\"), objectName=\"listLineFontSizeLabel\")\n        self._list_line_font_size = QtWidgets.QLineEdit(objectName=\"listLineFontSize\")\n        self._list_line_font_size.setValidator(int_validator)\n\n        timeout_margin_validator = QtGui.QIntValidator()\n        timeout_margin_validator.setRange(0, 240)\n        timeout_margin_label = QtWidgets.QLabel(lx(\"Timeout Margin\"), objectName=\"timeoutMarginLabel\")\n        self._timeout_margin = QtWidgets.QLineEdit(objectName=\"timeoutMarginEdit\")\n        self._timeout_margin.setValidator(timeout_margin_validator)\n\n        csv_delimiter_label = QtWidgets.QLabel(lx(\"CSV Delimiter\"), objectName=\"csvDelimiterLabel\")\n        self._csv_delimiter = QtWidgets.QLineEdit(objectName=\"csvDelimiterEdit\")\n        self._csv_delimiter.setMaxLength(1);\n        self._csv_delimiter.setMaximumWidth(25)\n\n        self._realtime_wifi_stats = QtWidgets.QCheckBox(lx(\"Realtime wifi device statistics\"), objectName=\"realtimeWifiStats\")\n        self._prevent_sleep = QtWidgets.QCheckBox(lx(\"Prevent sleep mode\"), objectName=\"preventSleepMode\")\n        self._native_ui_style = QtWidgets.QCheckBox(lx(\"Use native graphical interface style\"), objectName=\"nativeUIStyle\")\n        self._save_passwords = QtWidgets.QCheckBox(lx(\"Save passwords\"), objectName=\"savePasswords\")\n\n        prefs_edit_grid = QtWidgets.QGridLayout()\n        prefs_edit_grid.setSpacing(10)\n\n        prefs_edit_grid.addWidget(language_label, 0, 0)\n        prefs_edit_grid.addWidget(self._language_combo, 0, 1)\n        prefs_edit_grid.addWidget(self._tooltips, 0, 3)\n\n        prefs_edit_grid.addWidget(mac_addr_api_key_label, 1, 0)\n        prefs_edit_grid.addWidget(self._mac_addr_api_key, 1, 1, 1, 3)\n        prefs_edit_grid.addWidget(call_filter_api_key_label, 2, 0)\n        prefs_edit_grid.addWidget(self._call_filter_api_key, 2, 1, 1, 3)\n        prefs_edit_grid.addWidget(stats_frequency_label, 3, 0)\n        prefs_edit_grid.addWidget(self._stats_frequency, 3, 1)\n        prefs_edit_grid.addWidget(phone_code_label, 3, 2)\n        prefs_edit_grid.addWidget(self._phone_code, 3, 3)\n        prefs_edit_grid.addWidget(list_header_height_label, 4, 0)\n        prefs_edit_grid.addWidget(self._list_header_height, 4, 1)\n        prefs_edit_grid.addWidget(list_header_font_size_label, 4, 2)\n        prefs_edit_grid.addWidget(self._list_header_font_size, 4, 3)\n        prefs_edit_grid.addWidget(list_line_height_label, 5, 0)\n        prefs_edit_grid.addWidget(self._list_line_height, 5, 1)\n        prefs_edit_grid.addWidget(list_line_font_size_label, 5, 2)\n        prefs_edit_grid.addWidget(self._list_line_font_size, 5, 3)\n        prefs_edit_grid.addWidget(timeout_margin_label, 6, 0)\n        prefs_edit_grid.addWidget(self._timeout_margin, 6, 1)\n        prefs_edit_grid.addWidget(csv_delimiter_label, 6, 2)\n        prefs_edit_grid.addWidget(self._csv_delimiter, 6, 3)\n        prefs_edit_grid.addWidget(self._realtime_wifi_stats, 7, 0, 1, 2)\n        prefs_edit_grid.addWidget(self._prevent_sleep, 7, 2, 1, 2)\n        prefs_edit_grid.addWidget(self._native_ui_style, 8, 0, 1, 2)\n        prefs_edit_grid.addWidget(self._save_passwords, 8, 2, 1, 2)\n\n        prefs_group_box = QtWidgets.QGroupBox(lx(\"Preferences\"), objectName=\"prefsGroup\")\n        prefs_group_box.setLayout(prefs_edit_grid)\n\n        # Button bar\n        button_bar = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.ok_button_click)\n        ok_button.setDefault(True)\n        button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setSpacing(10)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(profile_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        vbox.addWidget(prefs_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        vbox.addLayout(button_bar, 1)\n\n        LmConfig.set_tooltips(self, \"prefs\")\n\n        self.setWindowTitle(lx(\"Preferences\"))\n        self.setModal(True)\n        self.load_prefs()\n        self.show()\n\n\n    ### Load preferences data\n    def load_prefs(self):\n        self._profiles = []\n\n        # Load profile list\n        for p in LmConf.Profiles:\n            self._profiles.append(p.copy())\n            i = QtWidgets.QListWidgetItem(p[\"Name\"], self._profile_list)\n            if p == LmConf.CurrProfile:\n                self._profile_list.setCurrentItem(i)\n\n        # Load paramaters\n        try:\n            i = LmLanguages.LANGUAGES_KEY.index(LmConf.Language)\n        except ValueError:\n            i = 0\n        self._language_combo.setCurrentIndex(i)\n        self._tooltips.setChecked(LmConf.Tooltips)\n        self._stats_frequency.setText(str(int(LmConf.StatsFrequency / 1000)))\n        self._mac_addr_api_key.setText(LmConf.MacAddrApiKey)\n        self._call_filter_api_key.setText(LmConf.CallFilterApiKey)\n        self._phone_code.setText(LmConf.PhoneCode)\n        self._list_header_height.setText(str(LmConf.ListHeaderHeight))\n        self._list_header_font_size.setText(str(LmConf.ListHeaderFontSize))\n        self._list_line_height.setText(str(LmConf.ListLineHeight))\n        self._list_line_font_size.setText(str(LmConf.ListLineFontSize))\n        self._timeout_margin.setText(str(LmConf.TimeoutMargin))\n        self._csv_delimiter.setText(LmConf.CsvDelimiter)\n        self._realtime_wifi_stats.setChecked(LmConf.RealtimeWifiStats_save)\n        self._prevent_sleep.setChecked(LmConf.PreventSleep)\n        self._native_ui_style.setChecked(LmConf.NativeUIStyle)\n        self._save_passwords.setChecked(LmConf.SavePasswords)\n\n\n    ### Save preferences data\n    def save_prefs(self):\n        # Save profile data\n        LmConf.Profiles = self._profiles\n\n        # Try to restore current profile by name\n        curr_profile_name = LmConf.CurrProfile.get(\"Name\")\n        p = next((p for p in LmConf.Profiles if p[\"Name\"] == curr_profile_name), None)\n        if p is None:\n            # Otherwise take the default\n            p = next((p for p in LmConf.Profiles if p[\"Default\"]), None)\n        if p is None:\n            # If not default take the first\n            p = LmConf.Profiles[0]\n        LmConf.CurrProfile = p\n\n        # Save parameters\n        LmConf.Language = LmLanguages.LANGUAGES_KEY[self._language_combo.currentIndex()]\n        LmConf.Tooltips = self._tooltips.isChecked()\n        LmConf.StatsFrequency = int(self._stats_frequency.text()) * 1000\n        LmConf.MacAddrApiKey = self._mac_addr_api_key.text()\n        LmConf.CallFilterApiKey = self._call_filter_api_key.text()\n        LmConf.PhoneCode = self._phone_code.text()\n        LmConf.ListHeaderHeight = int(self._list_header_height.text())\n        LmConf.ListHeaderFontSize = int(self._list_header_font_size.text())\n        LmConf.ListLineHeight = int(self._list_line_height.text())\n        LmConf.ListLineFontSize = int(self._list_line_font_size.text())\n        LmConf.TimeoutMargin = int(self._timeout_margin.text())\n        LmConf.CsvDelimiter = self._csv_delimiter.text()\n        LmConf.RealtimeWifiStats_save = self._realtime_wifi_stats.isChecked()\n        LmConf.PreventSleep = self._prevent_sleep.isChecked()\n        LmConf.NativeUIStyle = self._native_ui_style.isChecked()\n        LmConf.SavePasswords = self._save_passwords.isChecked()\n\n\n    ### Click on profile list item\n    def profile_list_click(self):\n        new_selection = self._profile_list.currentRow()\n\n        # Save previous values before switch to new\n        if self._profile_selection >= 0:\n            # Check of selection really changed\n            if self._profile_selection == new_selection:\n                return\n\n            # Save values\n            if not self.save_profile():\n                self._profile_list.setCurrentRow(self._profile_selection)\n                return\n\n        # Load new values\n        self._profile_selection = -1        # To inhibit name text change event\n        p = self._profiles[new_selection]\n        self._profile_name.setText(p[\"Name\"])\n        self._livebox_url.setText(p[\"Livebox URL\"])\n        self._livebox_user.setText(p[\"Livebox User\"])\n        self._filter_devices.setChecked(p[\"Filter Devices\"])\n        self._only_active_devices.setChecked(p[\"Only Active Devices\"])\n        self._mac_addr_table_file.setText(p[\"MacAddr Table File\"])\n        self._default_profile.setChecked(p[\"Default\"])\n        self._profile_selection = new_selection\n\n\n    ### Save current profile in profiles buffer, returns False if failed\n    def save_profile(self):\n        # Check if name is not duplicated\n        profile_name = self._profile_name.text()\n        if len(profile_name) == 0:\n            self.parent().display_error(mx(\"Please set profile name.\", \"profileName\"))\n            return False\n\n        if self.count_profile_name(profile_name) > 1:\n            self.parent().display_error(mx(\"Duplicated name.\", \"profileDup\"))\n            return False\n\n        # If default profile is selected, set all others to false\n        default = self._default_profile.isChecked()\n        if default:\n            for p in self._profiles:\n                p[\"Default\"] = False\n\n        # Save in profiles buffer\n        p = self._profiles[self._profile_selection]\n        p[\"Name\"] = self._profile_name.text()\n        p[\"Livebox URL\"] = LmTools.clean_url(self._livebox_url.text())\n        p[\"Livebox User\"] = self._livebox_user.text()\n        p[\"Filter Devices\"] = self._filter_devices.isChecked()\n        p[\"Only Active Devices\"] = self._only_active_devices.isChecked()\n        p[\"MacAddr Table File\"] = self._mac_addr_table_file.text()\n        p[\"Default\"] = default\n        return True\n\n\n    ### Profile name text changed\n    def profile_name_changed(self, text):\n        if self._profile_selection >= 0:\n            self._profile_list.item(self._profile_selection).setText(text)\n\n\n    ### Find number of profiles in list matching a name\n    def count_profile_name(self, name):\n        return len(self._profile_list.findItems(name, QtCore.Qt.MatchFlag.MatchExactly))\n\n\n    ### Click on add profile button\n    def add_profile_button_click(self):\n        # First try to save current profile adding one\n        if not self.save_profile():\n            return\n\n        # Add new empty profile in buffer\n        p = {\"Name\": \"\",\n             \"Livebox URL\": LmConfig.DCFG_LIVEBOX_URL,\n             \"Livebox User\": LmConfig.DCFG_LIVEBOX_USER,\n             \"Filter Devices\": LmConfig.DCFG_FILTER_DEVICES,\n             \"Only Active Devices\": LmConfig.DCFG_ONLY_ACTIVE_DEVICES,\n             \"MacAddr Table File\": LmConfig.DCFG_MACADDR_TABLE_FILE,\n             \"Default\": False}\n        self._profiles.append(p)\n\n        # Add new item in list and select it\n        i = QtWidgets.QListWidgetItem(p[\"Name\"], self._profile_list)\n        self._profile_list.setCurrentItem(i)\n\n        # Set focus on profile's name\n        self._profile_name.setFocus()\n\n\n    ### Click on delete profile button\n    def del_profile_button_click(self):\n        if len(self._profiles) == 1:\n            self.parent().display_error(mx(\"You must have at least one profile.\", \"profileOne\"))\n            return\n\n        # Delete the list line\n        i = self._profile_selection\n        self._profile_selection = -1    # Inhibit event handling\n        self._profile_list.takeItem(i)\n\n        # Remove the profile from profiles buffer\n        self._profiles.pop(i)\n\n        # Update selection\n        self._profile_selection = self._profile_list.currentRow()\n\n\n    ### Click on OK button\n    def ok_button_click(self):\n        # First try to save current profile before leaving\n        if self.save_profile():\n            self.save_prefs()\n            self.accept()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmPtfRule.py",
    "content": "### Livebox Monitor PTF rule dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig, LmPatPtf\nfrom LiveboxMonitor.lang.LmLanguages import get_ptf_rule_label as lx, get_nat_pat_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ PTF rule dialog ################################\nclass PtfRuleDialog(QtWidgets.QDialog):\n    def __init__(self, rule, parent):\n        super().__init__(parent)\n        self.resize(390, 380)\n\n        self._app = parent\n        self._ignore_signal = False\n\n        self._enable_checkbox = QtWidgets.QCheckBox(lx(\"Enabled\"), objectName=\"enableCheckbox\")\n\n        type_label = QtWidgets.QLabel(lx(\"Type\"), objectName=\"typeLabel\")\n        self._type_combo = QtWidgets.QComboBox(objectName=\"typeCombo\")\n        self._type_combo.addItems(LmPatPtf.RULE_PTF_TYPES)\n        self._type_combo.activated.connect(self.type_selected)\n\n        name_label = QtWidgets.QLabel(lx(\"Name\"), objectName=\"nameLabel\")\n        self._name_edit = QtWidgets.QLineEdit(objectName=\"nameEdit\")\n        self._name_edit.textChanged.connect(self.name_typed)\n\n        desc_label = QtWidgets.QLabel(lx(\"Description\"), objectName=\"descLabel\")\n        self._desc_edit = LmQtTools.MultiLinesEdit(objectName=\"descEdit\")\n        self._desc_edit.setTabChangesFocus(True)\n        self._desc_edit.setLineNumber(2)\n\n        protocols_label = QtWidgets.QLabel(lx(\"Protocols\"), objectName=\"protocolsLabel\")\n        self._protocols_combo = LmQtTools.CheckableComboBox(objectName=\"protocolsCombo\")\n        self._protocols_combo.setPlaceholderText(lx(\"Protocols\"))\n        self._protocols_combo.currentTextChanged.connect(self.protocols_click)\n\n        device_label = QtWidgets.QLabel(lx(\"Device\"), objectName=\"deviceLabel\")\n        self._device_combo = QtWidgets.QComboBox(objectName=\"deviceCombo\")\n        self._device_combo.activated.connect(self.device_selected)\n\n        ip_label = QtWidgets.QLabel(lx(\"IP Address\"), objectName=\"ipLabel\")\n        self._ip_edit = QtWidgets.QLineEdit(objectName=\"ipEdit\")\n        self._ip_edit.textChanged.connect(self.ip_typed)\n\n        ext_ips_label = QtWidgets.QLabel(lx(\"External IPs\"), objectName=\"extIPsLabel\")\n        self._ext_ips_edit = LmQtTools.MultiLinesEdit(objectName=\"extIPsEdit\")\n        self._ext_ips_edit.setTabChangesFocus(True)\n        self._ext_ips_edit.setLineNumber(2)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(self._enable_checkbox, 0, 0)\n        grid.addWidget(type_label, 1, 0)\n        grid.addWidget(self._type_combo, 1, 1)\n        grid.addWidget(name_label, 2, 0)\n        grid.addWidget(self._name_edit, 2, 1)\n        grid.addWidget(desc_label, 3, 0)\n        grid.addWidget(self._desc_edit, 3, 1)\n        grid.addWidget(protocols_label, 4, 0)\n        grid.addWidget(self._protocols_combo, 4, 1)\n        grid.addWidget(device_label, 5, 0)\n        grid.addWidget(self._device_combo, 5, 1)\n        grid.addWidget(ip_label, 6, 0)\n        grid.addWidget(self._ip_edit, 6, 1)\n        grid.addWidget(ext_ips_label, 7, 0)\n        grid.addWidget(self._ext_ips_edit, 7, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"ptfrule\")\n\n        self.setWindowTitle(lx(\"Protocol Forwarding Rule\"))\n\n        if rule:\n            self.set_rule(rule)\n        else:\n            self.set_default()\n\n        self._name_edit.setFocus()\n        self.setModal(True)\n        self.show()\n\n\n    # Set default values, for rule creation\n    def set_default(self):\n        self._enable_checkbox.setChecked(True)\n        i = LmPatPtf.RULE_PTF_TYPES.index(LmPatPtf.RULE_TYPE_IPv4)\n        self._type_combo.setCurrentIndex(i)\n        self.type_selected(i)\n        self._name_edit.setText(\"\")\n        self._desc_edit.setPlainText(\"\")\n        self.load_protocols_combo(self._app._protocol_numbers[\"AH\"])\n        self._device_combo.setCurrentIndex(0)\n        self._ip_edit.setText(\"\")\n        self._ext_ips_edit.setPlainText(\"\")\n        self.set_ok_button_state()\n\n\n    # Set values to existing rule, for edition\n    def set_rule(self, rule):\n        self._enable_checkbox.setChecked(rule[\"Enable\"])\n\n        t = rule[\"Type\"]\n        i = LmPatPtf.RULE_PTF_TYPES.index(t)\n        self._type_combo.setCurrentIndex(i)\n        self.type_selected(i)\n\n        self._name_edit.setText(rule[\"Name\"])\n        self._desc_edit.setPlainText(rule[\"Desc\"])\n\n        self.load_protocols_combo(rule[\"ProtoNames\"])\n\n        ip = rule[\"IP\"]\n        self._ip_edit.setText(ip)\n        self.ip_typed(ip)\n\n        self._ext_ips_edit.setPlainText(rule[\"ExtIPs\"])\n\n        self.set_ok_button_state()\n\n\n    def load_protocols_combo(self, protocols):\n        protocol_numbers, protocol_names = zip(*LmPatPtf.PROTOCOL_NAMES.items())\n        self._protocols_combo.addItems(protocol_names, protocol_numbers)\n        self._protocols_combo.setSelection(protocols.split(\"/\"))\n\n\n    def get_rule(self):\n        p = self.get_protocols()\n        return {\n            \"Enable\": self.get_enabled(),\n            \"Type\": self.get_type(),\n            \"Name\": self.get_name(),\n            \"Desc\": self.get_description(),\n            \"ProtoNames\": p,\n            \"ProtoNumbers\": self._app.translate_nat_pat_protocols(p),\n            \"IP\": self.get_ip(),\n            \"ExtIPs\": self.get_ext_ips()        \n        }\n\n\n    def type_selected(self, index):\n        # Load corresponding devices\n        self.load_device_list()\n\n        # Adjust IP field validator\n        if self.get_type() == LmPatPtf.RULE_TYPE_IPv6:\n            ip_reg_exp = QtCore.QRegularExpression(f\"^{LmTools.IPv6Pfix_RS}$\")\n        else:\n            ip_reg_exp = QtCore.QRegularExpression(f\"^{LmTools.IPv4Pfix_RS}$\")\n        self._ip_edit.setValidator(QtGui.QRegularExpressionValidator(ip_reg_exp))\n\n\n    def name_typed(self, text):\n        self.set_ok_button_state()\n\n\n    def protocols_click(self, current_text):\n        self.set_ok_button_state()\n\n\n    def device_selected(self, index):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            self._ip_edit.setText(self._device_combo.currentData())\n            self._ignore_signal = False\n\n\n    def ip_typed(self, text):\n        if not self._ignore_signal:\n            self._ignore_signal = True\n            i = self._device_combo.findData(text.split('/')[0])     # split() to convert potential CIDR notation into IP addr\n            if i < 0:\n                i = 0\n            self._device_combo.setCurrentIndex(i)\n            self._ignore_signal = False\n\n        self.set_ok_button_state()\n\n\n    def set_ok_button_state(self):\n        self._ok_button.setDisabled((len(self.get_name()) == 0) or\n                                    (len(self.get_ip()) == 0) or\n                                    (len(self.get_protocols()) == 0))\n\n\n    def load_device_list(self):\n        t = self.get_type()\n        device_map = self._app._device_ip_name_map\n        self._device_combo.clear()\n\n        # Load matching devices / IPs\n        for i in device_map:\n            if device_map[i][\"IPVers\"] == t:\n                self._device_combo.addItem(self._app.get_device_name_from_ip(i), userData=i)\n\n        # Sort by name\n        self._device_combo.model().sort(0)\n\n        # Insert unknown device at the beginning\n        self._device_combo.insertItem(0, lx(\"-Unknown-\"), userData=\"\")\n        self._device_combo.setCurrentIndex(0)\n        self.device_selected(0)\n\n\n    def accept(self):\n        t = self.get_type()\n\n        # Validate IP address\n        ip = self.get_ip()\n        if t == LmPatPtf.RULE_TYPE_IPv6:\n            if not LmTools.is_ipv6_pfix(ip):\n                self._app.display_error(mx(\"{} is not a valid IPv6 address or prefix.\", \"ipv6AddrPfixErr\").format(ip))\n                self._ip_edit.setFocus()\n                return\n        else:\n            if not LmTools.is_ipv4_pfix(ip):\n                self._app.display_error(mx(\"{} is not a valid IPv4 address or prefix.\", \"ipv4AddrPfixErr\").format(ip))\n                self._ip_edit.setFocus()\n                return\n\n        # Validate external IP addresses\n        e = self.get_ext_ips()\n        if e:\n            ext_ips = e.split(\",\")\n            for ip in ext_ips:\n                if len(ip) == 0:\n                    self._app.display_error(mx(\"Empty IP address.\", \"emptyAddr\"))\n                    self._ext_ips_edit.setFocus()\n                    return\n\n                if t == LmPatPtf.RULE_TYPE_IPv6:\n                    if not LmTools.is_ipv6_pfix(ip):\n                        self._app.display_error(mx(\"{} is not a valid IPv6 address or prefix.\", \"ipv6AddrPfixErr\").format(ip))\n                        self._ext_ips_edit.setFocus()\n                        return\n                else:\n                    if not LmTools.is_ipv4_pfix(ip):\n                        self._app.display_error(mx(\"{} is not a valid IPv4 address or prefix.\", \"ipv4AddrPfixErr\").format(ip))\n                        self._ext_ips_edit.setFocus()\n                        return\n\n        super().accept()\n\n\n    def get_enabled(self):\n        return self._enable_checkbox.isChecked()\n\n\n    def get_type(self):\n        return self._type_combo.currentText()\n\n\n    def get_name(self):\n        return self._name_edit.text()\n\n\n    def get_description(self):\n        return self._desc_edit.toPlainText()\n\n\n    def get_protocols(self):\n        return \"/\".join(self._protocols_combo.currentSelection())\n\n\n    def get_ip(self):\n        return self._ip_edit.text()\n\n\n    def get_ext_ips(self):\n        return self._ext_ips_edit.toPlainText()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmRebootHistory.py",
    "content": "### Livebox Monitor Reboot History dialog ###\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.lang.LmLanguages import get_reboot_history_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Reboot history columns\nclass RebootCol(IntEnum):\n    BootDate = 0\n    BootReason = 1\n    ShutdownDate = 2\n    ShutdownReason = 3\n\n\n# ################################ Reboot History dialog ################################\nclass RebootHistoryDialog(QtWidgets.QDialog):\n    def __init__(self, name, parent=None):\n        super().__init__(parent)\n        self.resize(550, 56 + LmConfig.dialog_height(10))\n\n        self._history_table = LmTableWidget(objectName=\"historyTable\")\n        self._history_table.set_columns({RebootCol.BootDate: [lx(\"Boot Date\"), 125, \"reboot_BootDate\"],\n                                         RebootCol.BootReason: [lx(\"Boot Reason\"), 225, \"reboot_BootReason\"],\n                                         RebootCol.ShutdownDate: [lx(\"Shutdown Date\"), 125, \"reboot_ShutdownDate\"],\n                                         RebootCol.ShutdownReason: [lx(\"Shutdown Reason\"), 225, \"reboot_ShutdownReason\"]})\n        self._history_table.set_header_resize([RebootCol.BootReason, RebootCol.ShutdownReason])\n        self._history_table.set_standard_setup(parent, allow_sel=False, allow_sort=False)\n\n        hbox = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        hbox.addWidget(ok_button, 1, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addWidget(self._history_table, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"rhistory\")\n\n        self.setWindowTitle(lx(\"{} Reboot History\").format(name))\n        self.setModal(True)\n        self.show()\n\n\n    def load_history(self, history):\n        for i, key in enumerate(history):\n            d = history[key]\n            self._history_table.insertRow(i)\n            self._history_table.setItem(i, RebootCol.BootDate, QtWidgets.QTableWidgetItem(LmTools.fmt_livebox_timestamp(d.get(\"BootDate\"))))\n            self._history_table.setItem(i, RebootCol.BootReason, QtWidgets.QTableWidgetItem(d.get(\"BootReason\", lx(\"Unknown\"))))\n            self._history_table.setItem(i, RebootCol.ShutdownDate, QtWidgets.QTableWidgetItem(LmTools.fmt_livebox_timestamp(d.get(\"ShutdownDate\"))))\n            self._history_table.setItem(i, RebootCol.ShutdownReason, QtWidgets.QTableWidgetItem(d.get(\"ShutdownReason\", lx(\"Unknown\"))))\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmReleaseWarning.py",
    "content": "### Livebox Monitor release warning dialog ###\n\nimport webbrowser\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_release_warning_label as lx\n\nfrom LiveboxMonitor.__init__ import __url__, __version__\n\n\n# ################################ New release warning dialog ################################\nclass ReleaseWarningDialog(QtWidgets.QDialog):\n    def __init__(self, new_release, parent=None):\n        super().__init__(parent)\n        self.resize(450, 150)\n\n        warn_box = QtWidgets.QVBoxLayout()\n        warn_box.setSpacing(4)\n        new_release_label = QtWidgets.QLabel(lx(\"New release {0} has been published.\").format(new_release), objectName=\"nreal\")\n        new_release_label.setFont(LmQtTools.BOLD_FONT)\n        warn_box.addWidget(new_release_label)\n        curr_release_label = QtWidgets.QLabel(lx(\"You are using release {0}.\").format(__version__), objectName=\"creal\")\n        warn_box.addWidget(curr_release_label)\n        download_url = QtWidgets.QLabel(__url__, objectName=\"downloadURL\")\n        download_url.setStyleSheet(\"QLabel { color : blue }\")\n        download_url.mousePressEvent = self.download_url_click\n        warn_box.addWidget(download_url, 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        button_bar = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Don't warn me again\"), objectName=\"nowarning\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.setSpacing(10)\n        button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(15)\n        vbox.addLayout(warn_box, 0)\n        vbox.addLayout(button_bar, 1)\n\n        LmConfig.set_tooltips(self, \"rwarn\")\n\n        self.setWindowTitle(lx(\"You are not using the latest release\"))\n\n        self.setModal(True)\n        self.show()\n\n\n ### Project's URL web button\n    def download_url_click(self, event):\n        webbrowser.open_new_tab(__url__)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmRouting.py",
    "content": "### Livebox Monitor Routing setup dialog ###\n\nfrom enum import IntEnum\nfrom ipaddress import IPv4Network\nimport random\nimport string\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, CenteredIconsDelegate, NumericSortItem\nfrom LiveboxMonitor.lang.LmLanguages import get_routing_label as lx, get_actions_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Rule list columns\nclass RuleCol(IntEnum):\n    Name = 0\n    DestNetwork = 1\n    DestMask = 2\n    Gateway = 3\n    Priority = 4\n    Enabled = 5\n    Status = 6\nICON_COLUMNS = [RuleCol.Enabled, RuleCol.Status]\n\n# Priority base value\nPRIORITY_BASE = 3000\n\n\n# ################################ Routing setup dialog ################################\nclass RoutingSetupDialog(QtWidgets.QDialog):\n    ### Constructor\n    def __init__(self, parent):\n        super().__init__(parent)\n        self.resize(720, 400)\n\n        self._app = parent\n        self._api = parent._api\n        self._rule_selection = -1\n        self._init = True\n        self._load_for_edit = False\n\n        # Rule box\n        rule_layout = QtWidgets.QHBoxLayout()\n        rule_layout.setSpacing(30)\n\n        rule_list_layout = QtWidgets.QVBoxLayout()\n        rule_list_layout.setSpacing(5)\n\n        # Rule list columns\n        self._rule_list = LmTableWidget(objectName=\"ruleList\")\n        self._rule_list.set_columns({RuleCol.Name: [\"Name\", 0, None],\n                                     RuleCol.DestNetwork: [lx(\"Destination Network\"), 105, \"rlist_DestNetwork\"],\n                                     RuleCol.DestMask: [lx(\"Mask\"), 105, \"rlist_DestMask\"],\n                                     RuleCol.Gateway: [lx(\"Gateway\"), 105, \"rlist_Gateway\"],\n                                     RuleCol.Priority: [lx(\"Priority\"), 60, \"rlist_Priority\"],\n                                     RuleCol.Enabled: [lx(\"A\"), 20, \"rlist_Enabled\"],\n                                     RuleCol.Status: [lx(\"Status\"), 70, \"rlist_Status\"]})\n        self._rule_list.set_header_resize([RuleCol.DestNetwork, RuleCol.DestMask, RuleCol.Gateway])\n        self._rule_list.set_standard_setup(parent, allow_sort=False)\n        self._rule_list.setItemDelegate(CenteredIconsDelegate(self, ICON_COLUMNS))\n        self._rule_list.setMinimumWidth(480)\n        self._rule_list.setMinimumHeight(LmConfig.table_height(4))\n        self._rule_list.itemSelectionChanged.connect(self.rule_list_click)\n\n        rule_list_layout.addWidget(self._rule_list, 1)\n\n        rule_button_box = QtWidgets.QHBoxLayout()\n        rule_button_box.setSpacing(5)\n\n        refresh_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_button.clicked.connect(self.refresh_button_click)\n        rule_button_box.addWidget(refresh_button)\n        self._enable_button = QtWidgets.QPushButton(lx(\"Enable\"), objectName=\"enableRule\")\n        self._enable_button.clicked.connect(self.enable_button_click)\n        rule_button_box.addWidget(self._enable_button)\n        self._del_rule_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delRule\")\n        self._del_rule_button.clicked.connect(self.del_rule_button_click)\n        rule_button_box.addWidget(self._del_rule_button)\n        rule_list_layout.addLayout(rule_button_box, 0)\n        rule_layout.addLayout(rule_list_layout, 0)\n\n        rule_group_box = QtWidgets.QGroupBox(lx(\"Rules\"), objectName=\"ruleGroup\")\n        rule_group_box.setLayout(rule_layout)\n\n        # Add/Modify rule box\n        ip_reg_exp = QtCore.QRegularExpression(\"^\" + LmTools.IPv4_RS + \"$\")\n        ip_validator = QtGui.QRegularExpressionValidator(ip_reg_exp)\n\n        dest_network_label = QtWidgets.QLabel(lx(\"Destination network\"), objectName=\"destNetworkLabel\")\n        self._dest_network = QtWidgets.QLineEdit(objectName=\"destNetworkEdit\")\n        self._dest_network.setValidator(ip_validator)\n        self._dest_network.textChanged.connect(self.rule_typed)\n\n        dest_mask_label = QtWidgets.QLabel(lx(\"Destination mask\"), objectName=\"destMaskLabel\")\n        self._dest_mask = QtWidgets.QLineEdit(objectName=\"destMaskEdit\")\n        self._dest_mask.setValidator(ip_validator)\n        self._dest_mask.textChanged.connect(self.rule_typed)\n\n        gateway_label = QtWidgets.QLabel(lx(\"Gateway\"), objectName=\"gatewayLabel\")\n        self._gateway = QtWidgets.QLineEdit(objectName=\"gatewayEdit\")\n        self._gateway.setValidator(ip_validator)\n        self._gateway.textChanged.connect(self.rule_typed)\n\n        priority_label = QtWidgets.QLabel(lx(\"Priority\"), objectName=\"priorityLabel\")\n        self._priority = QtWidgets.QSpinBox(objectName=\"priorityEdit\")\n\n        self._add_rule_button = QtWidgets.QPushButton(lx(\"Add\"), objectName=\"addRule\")\n        self._add_rule_button.clicked.connect(self.add_rule_button_click)\n        self._add_rule_button.setDisabled(True)\n\n        self._edit_rule_button = QtWidgets.QPushButton(lx(\"Edit\"), objectName=\"editRule\")\n        self._edit_rule_button.clicked.connect(self.edit_rule_button_click)\n        self._edit_rule_button.setDisabled(True)\n\n        self._enabled = QtWidgets.QCheckBox(lx(\"Enabled\"), objectName=\"enabledCheckbox\")\n\n        rule_edit_grid = QtWidgets.QGridLayout()\n        rule_edit_grid.setSpacing(10)\n\n        rule_edit_grid.addWidget(dest_network_label, 0, 0)\n        rule_edit_grid.addWidget(self._dest_network, 0, 1)\n        rule_edit_grid.addWidget(dest_mask_label, 0, 2)\n        rule_edit_grid.addWidget(self._dest_mask, 0, 3)\n        rule_edit_grid.addWidget(self._add_rule_button, 0, 4)\n        rule_edit_grid.addWidget(gateway_label, 1, 0)\n        rule_edit_grid.addWidget(self._gateway, 1, 1)\n        rule_edit_grid.addWidget(priority_label, 1, 2)\n        rule_edit_grid.addWidget(self._priority, 1, 3)\n        rule_edit_grid.addWidget(self._edit_rule_button, 1, 4)\n        rule_edit_grid.addWidget(self._enabled, 2, 0)\n\n        rule_edit_group_box = QtWidgets.QGroupBox(lx(\"Add/Edit Rule\"), objectName=\"addEditRuleGroup\")\n        rule_edit_group_box.setLayout(rule_edit_grid)\n\n        # Button bar\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        # Final layout\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addWidget(rule_group_box, 1)\n        vbox.addWidget(rule_edit_group_box, 0)\n        vbox.addLayout(button_bar, 0)\n\n        self._dest_network.setFocus()\n\n        LmConfig.set_tooltips(self, \"routing\")\n\n        self.setWindowTitle(lx(\"Routing Table\"))\n        self.setModal(True)\n        self.load_rules()\n        self.show()\n\n        self._init = False\n\n\n    ### Load rule list\n    def load_rules(self):\n        self._app._task.start(lx(\"Loading Routing Table Rules...\"))\n\n        try:\n            try:\n                d = self._api._routing.get_list()\n            except Exception as e:\n                LmTools.error(str(e))\n                self._app.display_error(mx(\"Cannot load routing table.\", \"routingLoadErr\"))\n                return\n\n            for i, name in enumerate(d):\n                self._rule_list.insertRow(i)\n                self._rule_list.setItem(i, RuleCol.Name, QtWidgets.QTableWidgetItem(name))\n                r = d[name]\n                self._rule_list.setItem(i, RuleCol.DestNetwork, QtWidgets.QTableWidgetItem(r.get(\"Dst\", \"\")))\n                self._rule_list.setItem(i, RuleCol.DestMask, self.format_dest_mask(r.get(\"DstLen\", 0)))\n                self._rule_list.setItem(i, RuleCol.Gateway, QtWidgets.QTableWidgetItem(r.get(\"Gateway\", \"\")))\n                self._rule_list.setItem(i, RuleCol.Priority, self.format_priority(r.get(\"Priority\", PRIORITY_BASE)))\n                self._rule_list.setItem(i, RuleCol.Enabled, self.format_enabled(r.get(\"Enable\", False)))\n                self._rule_list.setItem(i, RuleCol.Status, self.format_status(r.get(\"Status\", 0)))\n\n            self._rule_list.sortItems(RuleCol.Priority, QtCore.Qt.SortOrder.AscendingOrder)\n            self.rule_list_click()\n\n        finally:\n            self._app._task.end()\n\n\n    ### Format destination mask column\n    def format_dest_mask(self, mask):\n        try:\n            mask_str = str(IPv4Network(f\"0.0.0.0/{mask}\").netmask)\n        except Exception:\n            mask_str = \"0.0.0.0\"\n        return QtWidgets.QTableWidgetItem(mask_str)\n\n\n    ### Format priority column\n    def format_priority(self, priority):\n        value = priority - PRIORITY_BASE\n        item = NumericSortItem(str(value))\n        item.setData(QtCore.Qt.ItemDataRole.UserRole, value)\n        return item\n\n\n    ### Format enabled column\n    def format_enabled(self, enable):\n        item = QtWidgets.QTableWidgetItem()\n        if enable:\n            item.setIcon(QtGui.QIcon(LmIcon.TickPixmap))\n            item.setData(QtCore.Qt.ItemDataRole.UserRole, True)\n        else:\n            item.setIcon(QtGui.QIcon(LmIcon.CrossPixmap))\n            item.setData(QtCore.Qt.ItemDataRole.UserRole, False)\n        return item\n\n\n    ### Format status column\n    def format_status(self, status):\n        match status:\n            case \"Bound\":\n                item = QtWidgets.QTableWidgetItem()\n                item.setIcon(QtGui.QIcon(LmIcon.TickPixmap))\n                item.setData(QtCore.Qt.ItemDataRole.UserRole, status)\n            case \"Disabled\":\n                item = QtWidgets.QTableWidgetItem()\n                item.setIcon(QtGui.QIcon(LmIcon.CrossPixmap))\n                item.setData(QtCore.Qt.ItemDataRole.UserRole, status)\n            case _:     # Can be \"Error\"\n                item = QtWidgets.QTableWidgetItem(status)\n                item.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        return item\n\n\n    ### Click on rule list item\n    def rule_list_click(self):\n        new_selection = self._rule_list.currentRow()\n\n        # Check if selection really changed\n        if not self._init and self._rule_selection == new_selection:\n            return\n        self._rule_selection = new_selection\n\n        self.load_rule_edit()\n        self.update_buttons_state(True)\n\n\n    ### Load the rule edit field according to selection\n    def load_rule_edit(self):\n        if self._rule_selection < 0:\n            return\n\n        self._load_for_edit = True\n        self._dest_network.setText(self._rule_list.item(self._rule_selection, RuleCol.DestNetwork).text())\n        self._dest_mask.setText(self._rule_list.item(self._rule_selection, RuleCol.DestMask).text())\n        self._gateway.setText(self._rule_list.item(self._rule_selection, RuleCol.Gateway).text())\n        self._priority.setValue(self._rule_list.item(self._rule_selection, RuleCol.Priority).data(QtCore.Qt.ItemDataRole.UserRole))\n        self._enabled.setChecked(self._rule_list.item(self._rule_selection, RuleCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole))\n        self._load_for_edit = False\n\n\n    ### Text changed in rule edit box field\n    def rule_typed(self, text):\n        if not self._load_for_edit:\n            self.update_buttons_state()\n\n\n    ### Update state of all buttons\n    def update_buttons_state(self, select_change=False):\n        n = self._dest_network.text()\n        m = self._dest_mask.text()\n        g = self._gateway.text()\n        rule_ready = n and m and g\n        self._add_rule_button.setDisabled(not rule_ready)\n        self._edit_rule_button.setDisabled((self._rule_selection < 0) or (not rule_ready))\n\n        if select_change:\n            self._del_rule_button.setDisabled(self._rule_selection < 0)\n            self._enable_button.setDisabled(self._rule_selection < 0)\n\n            if self._rule_selection >= 0:\n                enabled = self._rule_list.item(self._rule_selection, RuleCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole)\n                self._enable_button.setText(lx(\"Disable\") if enabled else lx(\"Enable\"))\n\n\n\n    ### Click on refresh button\n    def refresh_button_click(self):\n        self._rule_list.clearContents()\n        self._rule_list.setRowCount(0)\n        self._rule_selection = -1\n        self._init = True\n        self.load_rules()\n        self._init = False\n\n\n    ### Click on enable button\n    def enable_button_click(self):\n        if self._rule_selection < 0:\n            return\n\n        rule_name = self._rule_list.item(self._rule_selection, RuleCol.Name).text()\n        enabled = self._rule_list.item(self._rule_selection, RuleCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole)\n\n        self._app._task.start()\n        try:\n            self._api._routing.set_enable(rule_name, not enabled)\n        except Exception as e:\n            self._app.display_error(str(e))\n            return\n        finally:\n            self._app._task.end()\n\n        self.refresh_button_click()\n\n\n    ### Click on delete rule button\n    def del_rule_button_click(self):\n        i = self._rule_selection\n        if i < 0:\n            return\n\n        rule_name = self._rule_list.item(i, RuleCol.Name).text()\n        self._app._task.start()\n        try:\n            self._api._routing.delete(rule_name)\n        except Exception as e:\n            self._app.display_error(str(e))\n            return\n        finally:\n            self._app._task.end()\n\n        # Delete the list line\n        self._rule_selection = -1\n        self._init = True\n        self._rule_list.removeRow(i)\n        self._init = False\n\n        # Update selection\n        self._rule_list.setFocus()  # To ensure new selection is highlighted with focus\n        self.rule_list_click()\n\n\n    ### Click on add rule button\n    def add_rule_button_click(self):\n        # Generate a unique random name\n        while True:\n            rule_name = self.generate_rule_name()\n\n            # Check uniqueness\n            is_unique = True\n            for i in range(self._rule_list.rowCount()):\n                if self._rule_list.item(i, RuleCol.Name).text() == rule_name:\n                    is_unique = False\n                    break\n            if is_unique:\n                break\n\n        # Generate Livebox route\n        route = self.generate_livebox_route(rule_name)\n        if not route:\n            return\n\n        # Call Livebox API\n        self._app._task.start()\n        try:\n            self._api._routing.add(route)\n        except Exception as e:\n            self._app.display_error(str(e))\n            return\n        finally:\n            self._app._task.end()\n\n        # Reset edit fields\n        self.reset_edit_fields()\n\n        # Refresh list\n        self.refresh_button_click()\n\n\n    ### Click on edit rule button\n    def edit_rule_button_click(self):\n        i = self._rule_selection\n        if i < 0:\n            return\n\n        # Find rule name\n        rule_name = self._rule_list.item(i, RuleCol.Name).text()\n\n        # Generate Livebox route with same name\n        route = self.generate_livebox_route(rule_name)\n        if not route:\n            return\n\n        self._app._task.start()\n        try:\n            # Start by deleting the corresponding rule\n            try:\n                self._api._routing.delete(rule_name)\n            except Exception as e:\n                self._app.display_error(str(e))\n                return\n\n            # Then create the route\n            try:\n                self._api._routing.add(route)\n            except Exception as e:\n                self._app.display_error(str(e))\n                return\n        finally:\n            self._app._task.end()\n\n        # Reset edit fields\n        self.reset_edit_fields()\n\n        # Refresh list\n        self.refresh_button_click()\n\n\n    ### Reset edit fields\n    def reset_edit_fields(self):\n        self._load_for_edit = True\n        self._dest_network.setText(\"\")\n        self._dest_mask.setText(\"\")\n        self._gateway.setText(\"\")\n        self._priority.setValue(0)\n        self._enabled.setChecked(False)\n        self._load_for_edit = False\n\n\n    ### Generate a Livebox route structure corresponding to entered values - returns None if errors\n    def generate_livebox_route(self, rule_name):\n        # Validate destination network\n        dest_network = self._dest_network.text()\n        if not LmTools.is_ipv4(dest_network):\n            self._app.display_error(mx(\"{} is not a valid address.\", \"addrErr\").format(dest_network))\n            self._dest_network.setFocus()\n            return None\n\n        # Validate destination subnet mask\n        dest_mask = self._dest_mask.text()\n        try:\n            dest_len = IPv4Network((\"0.0.0.0\", dest_mask)).prefixlen\n        except Exception:\n            self._app.display_error(mx(\"{} is not a valid mask.\", \"maskErr\").format(dest_mask))\n            self._dest_network.setFocus()\n            return None\n\n        # Validate gateway address\n        gateway = self._gateway.text()\n        if not LmTools.is_ipv4(gateway):\n            self._app.display_error(mx(\"{} is not a valid address.\", \"addrErr\").format(gateway))\n            self._gateway.setFocus()\n            return None\n\n        return {\"Name\": rule_name,\n                \"Dst\": dest_network,\n                \"DstLen\": dest_len,\n                \"Gateway\": gateway,\n                \"Enable\": self._enabled.isChecked(),\n                \"Priority\": PRIORITY_BASE + self._priority.value()}\n\n\n    ### Generate a random rule name following same logic as WebUI\n    @staticmethod\n    def generate_rule_name():\n        # 10 random chars that can be uppercase/lowercase letters and digits\n        return ''.join(random.choices(string.ascii_letters + string.digits, k=10))\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmScreen.py",
    "content": "### Livebox Monitor screen & LEDs setup dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.lang.LmLanguages import get_screen_label as lx\n\n\n# ################################ Screen setup dialog ################################\nclass ScreenDialog(QtWidgets.QDialog):\n    def __init__(self, orange_led_level, show_wifi_password, parent=None):\n        super().__init__(parent)\n        self.setMinimumWidth(300)\n        self.resize(350, 150)\n\n        orange_label = QtWidgets.QLabel(lx(\"LED Brightness\"), objectName=\"orangeLabel\")\n        self._orange_slider = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal, objectName=\"orangeSlider\")\n        self._orange_slider.setRange(0, 255)\n        self._orange_slider.setValue(orange_led_level)\n        self._orange_slider.setSingleStep(5)\n        self._orange_slider.setPageStep(50)\n        self._orange_slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove)\n        self._orange_slider.setTickInterval(15)\n        self._orange_slider.valueChanged.connect(self.orange_level_changed)\n        self._orange_value = QtWidgets.QLabel(str(orange_led_level), objectName=\"orangeValue\")\n        self._orange_value.setMinimumWidth(20)\n\n        self._show_wifi_password_checkbox = QtWidgets.QCheckBox(lx(\"Show Wifi Password\"), objectName=\"showWifiPasswordCheckbox\")\n        self._show_wifi_password_checkbox.setChecked(show_wifi_password)\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(orange_label, 0, 0)\n        grid.addWidget(self._orange_slider, 0, 1)\n        grid.addWidget(self._orange_value, 0, 2)\n        grid.addWidget(self._show_wifi_password_checkbox, 1, 0, 1, 3)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"screen\")\n\n        self.setWindowTitle(lx(\"LEDs & Screen Setup\"))\n\n        self.setModal(True)\n        self.show()\n\n\n    def orange_level_changed(self, value):\n        self._orange_value.setText(str(value))\n\n\n    def get_orange_led_level(self):\n        return self._orange_slider.value()\n\n\n    def get_show_wifi_password(self):\n        return self._show_wifi_password_checkbox.isChecked()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmSelectProfile.py",
    "content": "### Livebox Monitor Profile selection dialog ###\n\nfrom PyQt6 import QtCore, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.api.LmLiveboxInfoApi import LiveboxInfoApi\nfrom LiveboxMonitor.lang.LmLanguages import get_select_profile_label as lx\n\n\n# ################################ Profile selection dialog ################################\nclass SelectProfileDialog(QtWidgets.QDialog):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        self.resize(350, 130)\n\n        main_label = QtWidgets.QLabel(lx(\"Please select a profile to use:\"), objectName=\"mainLabel\")\n        self._profile_combo = QtWidgets.QComboBox(objectName=\"profileCombo\")\n        current_index = 0\n        for i, p in enumerate(LmConf.Profiles):\n            name = p[\"Name\"]\n            self._profile_combo.addItem(name)\n            if (LmConf.CurrProfile is not None) and (LmConf.CurrProfile[\"Name\"] == name):\n                current_index = i\n        self._profile_combo.currentIndexChanged.connect(self.profile_selected)\n\n        associated_mac_label = QtWidgets.QLabel(lx(\"Associated Livebox MAC:\"), objectName=\"assMacLabel\")\n        self._ass_mac = QtWidgets.QLabel(objectName=\"assMacValue\")\n        self._ass_mac.setFont(LmQtTools.BOLD_FONT)\n\n        detected_mac_label = QtWidgets.QLabel(lx(\"Detected Livebox MAC:\"), objectName=\"detMacLabel\")\n        self._det_mac = QtWidgets.QLabel(objectName=\"detMacValue\")\n        self._det_mac.setFont(LmQtTools.BOLD_FONT)\n\n        self._warning = QtWidgets.QLabel(\"\", objectName=\"warnLabel\")\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n        grid.addWidget(main_label, 0, 0)\n        grid.addWidget(self._profile_combo, 1, 0, 1, 2)\n        grid.addWidget(associated_mac_label, 2, 0)\n        grid.addWidget(self._ass_mac, 2, 1)\n        grid.addWidget(detected_mac_label, 3, 0)\n        grid.addWidget(self._det_mac, 3, 1)\n        grid.addWidget(self._warning, 4, 0, 1, 2)\n\n        create_profile_button = QtWidgets.QPushButton(lx(\"New Profile...\"), objectName=\"createProfile\")\n        create_profile_button.setStyleSheet(\"padding-left: 15px; padding-right: 15px; padding-top: 3px; padding-bottom: 3px;\")\n        create_profile_button.clicked.connect(self.create_profile)\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        button_bar = QtWidgets.QHBoxLayout()\n        button_bar.setSpacing(10)\n        button_bar.addWidget(create_profile_button, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        ok_button_bar = QtWidgets.QHBoxLayout()\n        ok_button_bar.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.setSpacing(10)\n        ok_button_bar.addWidget(ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        ok_button_bar.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        button_bar.addLayout(ok_button_bar)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.setSpacing(20)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(button_bar, 1)\n\n        LmConfig.set_tooltips(self, \"sprofile\")\n\n        self.setWindowTitle(lx(\"Profile selection\"))\n\n        if current_index:\n            self._profile_combo.setCurrentIndex(current_index)\n        else:\n            self.profile_selected(0)\n\n        self._create_profile = False\n\n        self.setModal(True)\n        self.show()\n\n\n    def profile_selected(self, index):\n        p = LmConf.Profiles[index]\n        associated_livebox_mac = p.get(\"Livebox MacAddr\")\n        if associated_livebox_mac is None:\n            self._ass_mac.setText(lx(\"<None>\"))\n            self._ass_mac.setStyleSheet(\"QLabel { color : green }\")\n        else:\n            self._ass_mac.setText(associated_livebox_mac)\n            self._ass_mac.setStyleSheet(\"QLabel { color : black }\")\n\n        LmQtTools.mouse_cursor_busy()\n        try:\n            detected_livebox_mac = LiveboxInfoApi.get_livebox_mac_nosign(p.get(\"Livebox URL\"))\n        finally:\n            LmQtTools.mouse_cursor_normal()\n        if detected_livebox_mac is None:\n            self._det_mac.setText(lx(\"<None>\"))\n            self._det_mac.setStyleSheet(\"QLabel { color : red }\")\n            self._warning.setText(lx(\"No Livebox detected at profile's URL.\"))\n            self._warning.setStyleSheet(\"QLabel { color : red }\")\n        else:\n            self._det_mac.setText(detected_livebox_mac)\n            if associated_livebox_mac is None:\n                self._det_mac.setStyleSheet(\"QLabel { color : green }\")\n                self._warning.setText(lx(\"Detected MAC will be associated to this profile.\"))\n                self._warning.setStyleSheet(\"QLabel { color : green }\")\n            elif detected_livebox_mac == associated_livebox_mac:\n                self._det_mac.setStyleSheet(\"QLabel { color : green }\")\n                self._warning.setText(\"\")\n                self._warning.setStyleSheet(\"QLabel { color : black }\")\n            else:\n                self._det_mac.setStyleSheet(\"QLabel { color : red }\")\n                self._warning.setText(lx(\"Warning: another Livebox is associated to this profile.\"))\n                self._warning.setStyleSheet(\"QLabel { color : red }\")\n\n\n    def profile_index(self):\n        return self._profile_combo.currentIndex()\n\n\n    def do_create_profile(self):\n        return self._create_profile\n\n\n    def create_profile(self):\n        self._create_profile = True\n        self.accept()\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmWifiConfig.py",
    "content": "### Livebox Monitor Wifi Configuration setup dialog ###\n\nimport copy\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.lang.LmLanguages import get_wifi_config_label as lx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Wifi MAC Filtering modes\nMAC_FILTERING_MODES = [\"Off\", \"WhiteList\", \"BlackList\"]\n\n\n# ################################ Wifi Configuration dialog ################################\nclass WifiConfigDialog(QtWidgets.QDialog):\n    def __init__(self, parent, config, guest):\n        super().__init__(parent)\n\n        self._app = parent\n        self._guest = guest\n        if self._guest:\n            self.resize(390, 350)\n        else:\n            self.resize(390, 420)\n\n        self._enable_checkbox = QtWidgets.QCheckBox(lx(\"Enabled\"), objectName=\"enableCheckbox\")\n        self._enable_checkbox.clicked.connect(self.enable_click)\n\n        self._mlo = config.get(\"MLO\") is not None\n        if self._mlo:\n            self._mlo_checkbox = QtWidgets.QCheckBox(lx(\"MLO\"), objectName=\"mloCheckbox\")\n\n        if self._guest:\n            duration_label = QtWidgets.QLabel(lx(\"Duration\"), objectName=\"durationLabel\")\n            int_validator = QtGui.QIntValidator()\n            int_validator.setRange(0, 999)\n            self._duration_edit = QtWidgets.QLineEdit(objectName=\"durationEdit\")\n            self._duration_edit.setValidator(int_validator)\n            duration_unit = QtWidgets.QLabel(lx(\"hours (0 = unlimited).\"), objectName=\"durationUnit\")\n\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        freq_label = QtWidgets.QLabel(lx(\"Radio Band\"), objectName=\"freqLabel\")\n        self._freq_combo = QtWidgets.QComboBox(objectName=\"freqCombo\")\n        self._freq_combo.activated.connect(self.freq_selected)\n\n        ssid_label = QtWidgets.QLabel(lx(\"SSID\"), objectName=\"ssidLabel\")\n        self._ssid_edit = QtWidgets.QLineEdit(objectName=\"ssidEdit\")\n\n        options_label = QtWidgets.QLabel(lx(\"Options\"), objectName=\"optionsLabel\")\n        self._freq_enabled_checkbox = QtWidgets.QCheckBox(lx(\"Enabled\"), objectName=\"freqEnabledCheckbox\")\n        self._broadcast_checkbox = QtWidgets.QCheckBox(lx(\"SSID Broadcast\"), objectName=\"broadcastCheckbox\")\n        self._wps_checkbox = QtWidgets.QCheckBox(lx(\"WPS\"), objectName=\"wpsCheckbox\")\n        options_box = QtWidgets.QHBoxLayout()\n        options_box.setSpacing(10)\n        options_box.addWidget(self._freq_enabled_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        options_box.addWidget(self._broadcast_checkbox, 0, QtCore.Qt.AlignmentFlag.AlignLeft)\n        options_box.addWidget(self._wps_checkbox, 1, QtCore.Qt.AlignmentFlag.AlignLeft)\n\n        mac_filtering_label = QtWidgets.QLabel(lx(\"MAC Filtering\"), objectName=\"macFilteringLabel\")\n        self._mac_filtering_combo = QtWidgets.QComboBox(objectName=\"macFilteringCombo\")\n        self._mac_filtering_combo.addItems(MAC_FILTERING_MODES)\n\n        if not self._guest:\n            self._mac_filtering_entries_combo = LmQtTools.CheckableComboBox(objectName=\"macFilteringEntriesCombo\")\n            self._mac_filtering_entries_combo.setPlaceholderText(lx(\"Devices\"))\n\n        secu_label = QtWidgets.QLabel(lx(\"Security\"), objectName=\"secuLabel\")\n        self._secu_combo = QtWidgets.QComboBox(objectName=\"secuCombo\")\n        self._secu_combo.activated.connect(self.secu_selected)\n\n        pass_label = QtWidgets.QLabel(lx(\"Password\"), objectName=\"passLabel\")\n        self._pass_edit = QtWidgets.QLineEdit(objectName=\"passEdit\")\n        self._pass_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)\n        pass_show_button = QtWidgets.QPushButton(\"👁️\", objectName=\"passShow\")\n        pass_show_button.setCheckable(True)\n        pass_show_button.setMaximumWidth(30)\n        pass_show_button.toggled.connect(self.pass_show_toggle)\n        self._pass_edit.textChanged.connect(self.pass_typed)\n        pass_box = QtWidgets.QHBoxLayout()\n        pass_box.setSpacing(5)\n        pass_box.addWidget(self._pass_edit, 1)\n        pass_box.addWidget(pass_show_button, 0)\n\n        if not self._guest:\n            chan_label = QtWidgets.QLabel(lx(\"Channel\"), objectName=\"chanLabel\")\n            self._chan_combo = QtWidgets.QComboBox(objectName=\"chanCombo\")\n\n            mode_label = QtWidgets.QLabel(lx(\"Mode\"), objectName=\"modeLabel\")\n            self._mode_combo = QtWidgets.QComboBox(objectName=\"modeCombo\")\n\n            bandwidth_label = QtWidgets.QLabel(lx(\"Bandwidth\"), objectName=\"bandwidthLabel\")\n            self._bandwidth_combo = QtWidgets.QComboBox(objectName=\"bandwidthCombo\")\n\n        grid = QtWidgets.QGridLayout()\n        grid.setSpacing(10)\n\n        if self._guest:\n            grid.addWidget(self._enable_checkbox, 0, 0, 1, 4)\n            grid.addWidget(duration_label, 1, 0)\n            grid.addWidget(self._duration_edit, 1, 1)\n            grid.addWidget(duration_unit, 1, 2, 1, 3)\n            grid.addWidget(separator, 2, 0, 1, 5)\n            grid.addWidget(freq_label, 3, 0)\n            grid.addWidget(self._freq_combo, 3, 1, 1, 4)\n            grid.addWidget(ssid_label, 4, 0)\n            grid.addWidget(self._ssid_edit, 4, 1, 1, 4)\n            grid.addWidget(options_label, 5, 0)\n            grid.addLayout(options_box, 5, 1, 1, 4)\n            grid.addWidget(mac_filtering_label, 6, 0)\n            grid.addWidget(self._mac_filtering_combo, 6, 1, 1, 4)            \n            grid.addWidget(secu_label, 7, 0)\n            grid.addWidget(self._secu_combo, 7, 1, 1, 4)\n            grid.addWidget(pass_label, 8, 0)\n            grid.addLayout(pass_box, 8, 1, 1, 4)\n\n            # Cannot be changed on guest interfaces\n            self._broadcast_checkbox.setEnabled(False)\n            self._wps_checkbox.setEnabled(False)\n            self._mac_filtering_combo.setEnabled(False)\n        else:\n            grid.addWidget(self._enable_checkbox, 0, 0, 1, 1)\n            if self._mlo:\n                grid.addWidget(self._mlo_checkbox, 0, 1)\n            grid.addWidget(separator, 1, 0, 1, 2)\n            grid.addWidget(freq_label, 2, 0)\n            grid.addWidget(self._freq_combo, 2, 1)\n            grid.addWidget(ssid_label, 3, 0)\n            grid.addWidget(self._ssid_edit, 3, 1)\n            grid.addWidget(options_label, 4, 0)\n            grid.addLayout(options_box, 4, 1)\n            filtering_box = QtWidgets.QHBoxLayout()\n            filtering_box.setSpacing(10)\n            filtering_box.addWidget(self._mac_filtering_combo, 0)\n            filtering_box.addWidget(self._mac_filtering_entries_combo, 1)\n            grid.addWidget(mac_filtering_label, 5, 0)\n            grid.addLayout(filtering_box, 5, 1)          \n            grid.addWidget(secu_label, 6, 0)\n            grid.addWidget(self._secu_combo, 6, 1)\n            grid.addWidget(pass_label, 7, 0)\n            grid.addLayout(pass_box, 7, 1)\n            grid.addWidget(chan_label, 8, 0)\n            grid.addWidget(self._chan_combo, 8, 1)\n            grid.addWidget(mode_label, 9, 0)\n            grid.addWidget(self._mode_combo, 9, 1)\n            grid.addWidget(bandwidth_label, 10, 0)\n            grid.addWidget(self._bandwidth_combo, 10, 1)\n\n        self._ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        self._ok_button.clicked.connect(self.accept)\n        self._ok_button.setDefault(True)\n        cancel_button = QtWidgets.QPushButton(lx(\"Cancel\"), objectName=\"cancel\")\n        cancel_button.clicked.connect(self.reject)\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.setSpacing(10)\n        hbox.addWidget(self._ok_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n        hbox.addWidget(cancel_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addLayout(grid, 0)\n        vbox.addLayout(hbox, 1)\n\n        LmConfig.set_tooltips(self, \"wconfig\")\n\n        if self._guest:\n            self.setWindowTitle(lx(\"Guest Wifi Configuration\"))\n        else:\n            self.setWindowTitle(lx(\"Wifi Configuration\"))\n\n        self.set_config(config)\n\n        self._ssid_edit.setFocus()\n        self.setModal(True)\n        self.show()\n\n\n    def set_config(self, config):\n        self._config = copy.deepcopy(config)\n        self._current_freq = None\n\n        self._enable_checkbox.setChecked(self._config[\"Enable\"])\n        if self._mlo:\n            self._mlo_checkbox.setChecked(self._config[\"MLO\"])\n\n        if self._guest:\n            self._duration_edit.setText(str(self._config[\"Duration\"] // 3600))\n            timer = self._config[\"Timer\"]\n            if timer:\n                self._enable_checkbox.setText(lx(f\"Enabled for {LmTools.fmt_time(timer, True)}\"))\n        else:\n            self.load_filtering_entries_combo()\n\n        self.enable_click()      \n        self.load_freq_combo()\n        self.freq_selected(0)\n\n\n    def enable_click(self):\n        if self._guest:\n            if self._enable_checkbox.isChecked():\n                self._duration_edit.setText(str(self._config[\"Duration\"] // 3600))\n                self._duration_edit.setEnabled(True)\n            else:\n                self._duration_edit.setText(\"0\")\n                self._duration_edit.setEnabled(False)\n\n\n    def load_filtering_entries_combo(self):\n        # Add device action first\n        self._mac_filtering_entries_combo.addSelectableItem(lx(\"Add...\"), self.add_filtering_mac)\n\n        # Put known wifi devices first\n        device_list = self._app.get_device_list()\n        device_names = []\n        device_macs = []\n        for d in device_list:\n            mac = d[\"MAC\"]\n            if self._app.is_wifi_device(mac):\n                try:\n                    name = LmConf.MacAddrTable[mac]\n                except KeyError:\n                    name = d[\"LBName\"]\n                    if not name:\n                        name = mac\n                device_names.append(name)\n                device_macs.append(mac)\n\n        # Add all listed MACs not known\n        for i in self._config[\"Intf\"]:\n            entries = i[\"MACFilteringEntries\"]\n            if entries:\n                for mac in entries:\n                    if mac not in device_macs:\n                        try:\n                            name = LmConf.MacAddrTable[mac]\n                        except KeyError:\n                            name = mac\n                        device_names.append(name)\n                        device_macs.append(mac)\n\n        self._mac_filtering_entries_combo.addItems(device_names, device_macs)\n\n\n    def add_filtering_mac(self):\n        mac, ok = QtWidgets.QInputDialog.getText(self._app, lx(\"MAC Filtering\"), lx(\"Enter MAC address to filter:\"))\n        if ok and mac:\n            if LmTools.is_mac_addr(mac):\n                # Search if mac address is not already in the list\n                index = self._mac_filtering_entries_combo.findData(mac)\n                if index >= 0:\n                    name = self._mac_filtering_entries_combo.itemText(index)\n                    self._app.display_status(lx(\"Already in the list: {}\").format(name))\n                else:\n                    try:\n                        name = LmConf.MacAddrTable[mac]\n                    except KeyError:\n                        name = mac\n                    self._mac_filtering_entries_combo.addItem(name, mac, selected=True)\n            else:\n                self._app.display_error(lx(\"Invalid MAC address: {}\").format(mac))\n\n\n    def load_freq_combo(self):\n        c = self._config[\"Intf\"]\n        for f in c:\n            self._freq_combo.addItem(f[\"Name\"], userData=f[\"Key\"])\n\n\n    def freq_selected(self, index):\n        # First save config of previously selected freq\n        self.save_freq_config()\n\n        # Retrieve interface in config according to selection\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n        self._current_freq = key\n\n        self._ssid_edit.setText(i[\"SSID\"])\n        self._pass_edit.setText(i[\"KeyPass\"])\n        self._freq_enabled_checkbox.setChecked(i[\"Enable\"])\n        self._broadcast_checkbox.setChecked(i[\"Broadcast\"])\n        self._wps_checkbox.setChecked(i[\"WPS\"])\n\n        try:\n            new_index = MAC_FILTERING_MODES.index(i[\"MACFiltering\"])\n        except ValueError:\n            MAC_FILTERING_MODES.append(i[\"MACFiltering\"])\n            self._mac_filtering_combo.addItem(i[\"MACFiltering\"])\n            new_index = self._mac_filtering_combo.count() - 1\n        self._mac_filtering_combo.setCurrentIndex(new_index)\n\n        self.load_secu_combo()\n\n        if not self._guest:\n            self._mac_filtering_entries_combo.setDataSelection(i[\"MACFilteringEntries\"])\n            self.load_chan_combo()\n            self.load_mode_combo()\n            self.load_bandwidth_combo()\n\n\n    def save_freq_config(self):\n        if self._current_freq is not None:\n            i = next((i for i in self._config[\"Intf\"] if i[\"Key\"] == self._current_freq), None)\n            if i is None:\n                LmTools.error(\"Internal error, unconsistent configuration - intf not found\")\n                self.reject()\n                return\n            i[\"SSID\"] = self._ssid_edit.text()\n            i[\"Enable\"] = self._freq_enabled_checkbox.isChecked()\n            i[\"Broadcast\"] = self._broadcast_checkbox.isChecked()\n            i[\"WPS\"] = self._wps_checkbox.isChecked()\n            i[\"MACFiltering\"] = self._mac_filtering_combo.currentText()\n            i[\"Secu\"] = self._secu_combo.currentText()\n            if i[\"Secu\"] != \"None\":\n                i[\"KeyPass\"] = self._pass_edit.text()\n\n            if not self._guest:\n                i[\"MACFilteringEntries\"] = self._mac_filtering_entries_combo.currentData()\n                chan = self._chan_combo.currentText()\n                if chan == \"Auto\":\n                    i[\"ChannelAuto\"] = True\n                else:\n                    i[\"ChannelAuto\"] = False\n                    i[\"Channel\"] = int(chan)\n                i[\"Mode\"] = self._mode_combo.currentText()\n                i[\"Bandwidth\"] = self._bandwidth_combo.currentText()\n\n\n    def pass_show_toggle(self, checked):\n        if checked:\n            self._pass_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)\n        else:\n            self._pass_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)\n\n\n    def pass_typed(self, text):\n        self.set_ok_button_state()\n\n\n    def load_secu_combo(self):\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n        secu = i[\"Secu\"]\n        secu_list = i[\"SecuAvail\"]\n        if secu_list is None:\n            LmTools.error(\"Internal error, unconsistent configuration - no security list\")\n            self.reject()\n        secu_list = secu_list.split(\",\")\n        self._secu_combo.clear()\n        n = 0\n        selection = -1\n        for s in secu_list:\n            if not \"WEP\" in s:\n                if s == secu:\n                    selection = n\n                self._secu_combo.addItem(s)\n                n += 1\n\n        if selection == -1:\n            if secu is not None:\n                self._secu_combo.addItem(secu)\n                selection = n\n                LmTools.log_debug(1, f\"Warning - security {secu} not in list\")\n            elif n == 0:\n                LmTools.error(\"Internal error, unconsistent configuration - no security\")\n                self.reject()\n            else:\n                LmTools.log_debug(1, \"Warning - no security, defaulting to first\")\n                selection = 0\n\n        if selection >= 0:\n            self._secu_combo.setCurrentIndex(selection)\n            self.secu_selected(selection)\n\n\n    def secu_selected(self, index):\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n\n        secu = self._secu_combo.currentText()\n        if secu == \"None\":\n            # Save pass key in case secu is reselected\n            i[\"KeyPass\"] = self._pass_edit.text()\n            self._pass_edit.setEnabled(False)\n            self._pass_edit.setText(\"\")\n        else:\n            self._pass_edit.setEnabled(True)\n            if len(self._pass_edit.text()) == 0:\n                self._pass_edit.setText(i[\"KeyPass\"])\n\n        self.set_ok_button_state()\n\n\n    def load_chan_combo(self):\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n        intf = i[\"LLIntf\"]\n\n        modes = self._config[\"Modes\"].get(intf)\n        if modes is not None:\n            channels = modes.get(\"Channels\")\n            channels_in_use = modes.get(\"ChannelsInUse\")\n        else:\n            channels = None\n            channels_in_use = None\n        if channels is None:\n            LmTools.error(\"Internal error, unconsistent configuration - no channel list\")\n            self.reject()\n            return\n        channels = channels.split(\",\")\n        if channels_in_use is None:\n            channels_in_use = []\n        else:\n            channels_in_use = channels_in_use.split(\",\")\n\n        current_channel = str(i[\"Channel\"])\n\n        self._chan_combo.clear()\n        n = 0\n        selection = -1\n        if i[\"ChannelAutoSupport\"]:\n            self._chan_combo.addItem(\"Auto\")\n            if i[\"ChannelAuto\"]:\n                selection = n\n            n += 1\n        for c in channels:\n            if (not c in channels_in_use) or (c == current_channel):\n                self._chan_combo.addItem(c)\n                if (c == current_channel) and (selection == -1):\n                    selection = n\n                n += 1\n\n        if selection == -1:\n            if current_channel != \"None\":\n                self._chan_combo.addItem(current_channel)\n                selection = n\n                LmTools.log_debug(1, f\"Warning - channel {secu} not in list\")\n            elif n == 0:\n                LmTools.error(\"Internal error, unconsistent configuration - no channel\")\n                self.reject()\n            else:\n                LmTools.log_debug(1, \"Warning - no channel, defaulting to first\")\n                selection = 0\n\n        if selection >= 0:\n            self._chan_combo.setCurrentIndex(selection)\n\n\n    def load_mode_combo(self):\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n        intf = i[\"LLIntf\"]\n\n        modes = self._config[\"Modes\"].get(intf)\n        if modes is not None:\n            modes = modes.get(\"Modes\")\n        if modes is None:\n            LmTools.error(\"Internal error, unconsistent configuration - no mode list\")\n            self.reject()\n            return\n        modes = modes.split(\",\")\n\n        current_mode = i[\"Mode\"]\n\n        self._mode_combo.clear()\n        selection = -1\n        for n, m in enumerate(modes):\n            self._mode_combo.addItem(m)\n            if m == current_mode:\n                selection = n\n\n        if selection == -1:\n            if current_mode is not None:\n                self._mode_combo.addItem(current_mode)\n                selection = n\n                LmTools.log_debug(1, f\"Warning - mode {current_mode} not in list\")\n            elif n == 0:\n                LmTools.error(\"Internal error, unconsistent configuration - no mode\")\n                self.reject()\n            else:\n                LmTools.log_debug(1, \"Warning - no mode, defaulting to first\")\n                selection = 0\n\n        if selection >= 0:\n            self._mode_combo.setCurrentIndex(selection)\n\n\n    def load_bandwidth_combo(self):\n        key, i = self.get_current_key_intf()\n        if i is None:\n            return\n        intf = i[\"LLIntf\"]\n\n        modes = self._config[\"Modes\"].get(intf)\n        if modes is not None:\n            bandwidths = modes.get(\"Bandwidths\")\n        else:\n            bandwidths = None\n\n        self._bandwidth_combo.clear()\n        selection = -1\n        current_bandwidth = i[\"Bandwidth\"]\n\n        if bandwidths is None:\n            self._bandwidth_combo.setEnabled(False)\n            n = 0\n        else:\n            self._bandwidth_combo.setEnabled(True)\n            bandwidths = bandwidths.split(\",\")\n            for n, b in enumerate(bandwidths):\n                self._bandwidth_combo.addItem(b)\n                if b == current_bandwidth:\n                    selection = n\n\n        if selection == -1:\n            if current_bandwidth is not None:\n                self._bandwidth_combo.addItem(current_bandwidth)\n                selection = n\n                if bandwidths:\n                    LmTools.log_debug(1, f\"Warning - bandwidth {current_bandwidth} not in list\")\n            else:\n                LmTools.log_debug(1, \"Warning - no bandwidth set, defaulting to first\")\n                selection = 0\n\n        if selection >= 0:\n            self._bandwidth_combo.setCurrentIndex(selection)\n\n\n    def get_current_key_intf(self):\n        key = self._freq_combo.currentData()\n        i = next((i for i in self._config[\"Intf\"] if i[\"Key\"] == key), None)\n        if i is None:\n            LmTools.error(f\"Internal error, unconsistent configuration - intf {key} not found\")\n            self.reject()\n        return key, i\n\n\n    def get_config(self):\n        self._config[\"Enable\"] = self._enable_checkbox.isChecked()\n        if self._mlo:\n            self._config[\"MLO\"] = self._mlo_checkbox.isChecked()\n        if self._guest:\n            self._config[\"Duration\"] = int(self._duration_edit.text()) * 3600\n        self.save_freq_config()\n        return self._config\n\n\n    def set_ok_button_state(self):\n        # Check if another frequency is in background with no passkey\n        disable = False\n        for i in self._config[\"Intf\"]:\n            if i[\"Key\"] == self._current_freq:\n                continue\n            if (i[\"Secu\"] != \"None\") and (len(i[\"KeyPass\"]) == 0):\n                disable = True\n                break\n\n        # Check current frequency\n        if not disable:\n            if (self._secu_combo.currentText() != \"None\") and (len(self._pass_edit.text()) == 0):\n                disable = True\n\n        self._ok_button.setDisabled(disable)\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/LmWifiGlobalStatus.py",
    "content": "### Livebox Monitor Wifi Global Status dialog ###\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.api.LmWifiApi import WifiKey, WifiStatus\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, CenteredIconsDelegate\nfrom LiveboxMonitor.lang.LmLanguages import get_wifi_global_label as lx\n\n\n# ################################ Wifi Global Status dialog ################################\nclass WifiGlobalStatusDialog(QtWidgets.QDialog):\n    def __init__(self, parent, status):\n        super().__init__(parent)\n\n        self._api = parent._api\n        self._status = status\n        self._status_table = LmTableWidget(objectName=\"statusTable\")\n        cols = {}\n        icon_cols = []\n        cols[0] = [lx(\"Interfaces\"), 200, None]\n        for i, s in enumerate(self._status, start=1):\n            cols[i] = [s[WifiKey.ACCESS_POINT], 125, None]\n            icon_cols.append(i)\n        self._status_table.set_columns(cols)\n        self._status_table.set_header_resize([0])\n        self._status_table.set_standard_setup(parent, allow_sel=False, allow_sort=False)\n        self._status_table.setItemDelegate(CenteredIconsDelegate(self, icon_cols))\n\n        hbox = QtWidgets.QHBoxLayout()\n        ok_button = QtWidgets.QPushButton(lx(\"OK\"), objectName=\"ok\")\n        ok_button.clicked.connect(self.accept)\n        ok_button.setDefault(True)\n        hbox.addWidget(ok_button, 1, QtCore.Qt.AlignmentFlag.AlignRight)\n\n        vbox = QtWidgets.QVBoxLayout(self)\n        vbox.addWidget(self._status_table, 0)\n        vbox.addLayout(hbox, 1)\n\n        i = self.load_status()\n        self.resize(550, 56 + LmConfig.dialog_height(i))\n\n        LmConfig.set_tooltips(self, \"wglobal\")\n\n        self.setWindowTitle(lx(\"Wifi Global Status\"))\n        self.setModal(True)\n        self.show()\n\n\n    def load_status(self):\n        i = 0\n        i = self.add_status_line(lx(\"{} Enabled\").format(\"Wifi\"), WifiKey.ENABLE, i)\n        i = self.add_status_line(lx(\"{} Active\").format(\"Wifi\"), WifiKey.STATUS, i)\n        i = self.add_status_line(lx(\"Wifi Scheduler\"), WifiKey.SCHEDULER, i)\n        if self._api._intf.has_radio_band_2():\n            i = self.add_status_line(lx(\"{} Enabled\").format(\"Wifi 2.4GHz\"), WifiKey.WIFI2_ENABLE, i)\n            i = self.add_status_line(lx(\"{} Active\").format(\"Wifi 2.4GHz\"), WifiKey.WIFI2_STATUS, i)\n            i = self.add_status_line(lx(\"{} VAP\").format(\"Wifi 2.4GHz\"), WifiKey.WIFI2_VAP, i)\n        if self._api._intf.has_radio_band_5():\n            i = self.add_status_line(lx(\"{} Enabled\").format(\"Wifi 5GHz\"), WifiKey.WIFI5_ENABLE, i)\n            i = self.add_status_line(lx(\"{} Active\").format(\"Wifi 5GHz\"), WifiKey.WIFI5_STATUS, i)\n            i = self.add_status_line(lx(\"{} VAP\").format(\"Wifi 5GHz\"), WifiKey.WIFI5_VAP, i)\n        if self._api._intf.has_radio_band_6():\n            i = self.add_status_line(lx(\"{} Enabled\").format(\"Wifi 6GHz\"), WifiKey.WIFI6_ENABLE, i)\n            i = self.add_status_line(lx(\"{} Active\").format(\"Wifi 6GHz\"), WifiKey.WIFI6_STATUS, i)\n            i = self.add_status_line(lx(\"{} VAP\").format(\"Wifi 6GHz\"), WifiKey.WIFI6_VAP, i)\n        i = self.add_status_line(lx(\"{} VAP\").format(lx(\"Guest 2.4GHz\")), WifiKey.GUEST2_VAP, i)\n        i = self.add_status_line(lx(\"{} VAP\").format(lx(\"Guest 5GHz\")), WifiKey.GUEST5_VAP, i)\n        return i\n\n\n    def add_status_line(self, title, key, index):\n        self._status_table.insertRow(index)\n        self._status_table.setItem(index, 0, QtWidgets.QTableWidgetItem(title))\n        for i, s in enumerate(self._status, start=1):\n            item = None\n            match s.get(key):\n                case WifiStatus.ENABLE:\n                    item = QtWidgets.QTableWidgetItem()\n                    item.setIcon(QtGui.QIcon(LmIcon.TickPixmap))\n                    item.setData(QtCore.Qt.ItemDataRole.UserRole, \"ON\")\n                case WifiStatus.DISABLE:\n                    item = QtWidgets.QTableWidgetItem()\n                    item.setIcon(QtGui.QIcon(LmIcon.CrossPixmap))\n                    item.setData(QtCore.Qt.ItemDataRole.UserRole, \"off\")\n                case WifiStatus.ERROR:\n                    item = QtWidgets.QTableWidgetItem(lx(\"Error\"))\n                    item.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n                case WifiStatus.INACTIVE:\n                    item = QtWidgets.QTableWidgetItem(lx(\"Inactive\"))\n                    item.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n                case WifiStatus.UNSIGNED:\n                    item = QtWidgets.QTableWidgetItem(lx(\"Not signed\"))\n                    item.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n            self._status_table.setItem(index, i, item)\n\n        return index + 1\n"
  },
  {
    "path": "src/LiveboxMonitor/dlg/__init__.py",
    "content": ""
  },
  {
    "path": "src/LiveboxMonitor/lang/LmLanguage_EN.py",
    "content": "### Livebox Monitor English Language module ###\n\n\n# ################################ LABELS ################################\n\n# No need - native application language\n\n\n# ################################ TOOLTIPS ################################\n\nTOOLTIPS = {\n    # Main window\n    \"main\": {\n        \"deviceListTab\": \"Manage the list of devices.\",\n        \"liveboxInfoTab\": \"Detailed information about the Livebox and traffic statistics.\",\n        \"graphTab\": \"Traffic curves per interface and per device.\",\n        \"deviceInfoTab\": \"Detailed information and settings for each device.\",\n        \"eventsTab\": \"Event log for each device.\",\n        \"dhcpTab\": \"Detailed DHCP information and settings.\",\n        \"netPatTab\": \"Port & protocol forwarding settings.\",\n        \"phoneTab\": \"Manage phone calls and contact list.\",\n        \"actionTab\": \"Various actions, settings, preferences, and information about the application.\",\n        \"repeaterTab\": \"Detailed information about the Wifi repeater and traffic statistics.\\n\"\n                       \"Connection status with the repeater:\\n\"\n                       \"- Red cross: the repeater is inactive or does not have an assigned IP address.\\n\"\n                       \"- Red barred: the repeater is active but no session is open.\\n\"\n                       \"If this state persists you can try to force session creation by clicking the \\\"Resign...\\\" button.\\n\"\n                       \"- Green: the repeater is active and a session has been created to communicate with it.\",\n        \"tvdecoderTab\": \"Manage the TV decoder.\\n\"\n                        \"Connection status with the decoder:\\n\"\n                       \"- Red cross: the decoder is inactive or does not have an assigned IP address.\\n\"\n                       \"- Green: the decoder is active.\"\n    },\n\n    # Export table dialog\n    \"export_table\": {\n        \"exportHeaderCheckbox\": \"Allows you to choose whether or not to export column headers.\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"dlist_Type\": \"Icon corresponding to the device type.\\n\"\n                      \"This type can be assigned or changed via the \\\"Assign Type...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"dlist_Name\": \"Local name of the device.\\n\"\n                      \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\\n\"\n                      \"It is normal that at the first launch of the application all devices are shown as UNKNOWN.\",\n        \"dlist_LBName\": \"Device name as set in the Livebox and visible in the Livebox web interface.\\n\"\n                        \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"dlist_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"dlist_IP\": \"IPv4 address of the device on the LAN.\\n\"\n                    \"This address appears in bold if it is reserved for this device\\n\"\n                    \"in the Livebox DHCP configuration.\\n\"\n                    \"And it appears in red if the address is unreachable on the network,\\n\"\n                    \"typically when the device is not active.\",\n        \"dlist_Link\": \"Device's access point on the network.\\nFirst, the device name, i.e., the Livebox itself or the name of one of \"\n                      \"the connected Orange Wifi repeaters, then the interface on this device.\\n\"\n                      \"\\\"Eth\\\" means one of the Ethernet ports followed by the port number.\\n\"\n                      \"\\\"Wifi\\\" means a Wifi connection followed by the connection band.\",\n        \"dlist_Active\": \"Indicates with an icon whether the device is active or not.\\n\"\n                        \"By default, the list is sorted to show active devices first.\",\n        \"dlist_Wifi\": \"Quality of the Wifi connection.\",\n        \"dlist_Event\": \"Indicates with an icon when an event is received for this device.\\n\"\n                       \"The detailed list of events, as well as the content of the events themselves,\\n\"\n                       \"can be viewed via the \\\"Events\\\" tab.\",\n        \"dlist_Rx\": \"Number of bytes received by the device since the last Livebox restart.\",\n        \"dlist_Tx\": \"Number of bytes sent by the device since the last Livebox restart.\",\n        \"dlist_RxRate\": \"Number of bytes received per second by the device in the last 30 seconds if shown in black,\\n\"\n                        \"in the last three seconds if shown in blue (frequency adjustable in preferences).\",\n        \"dlist_TxRate\": \"Number of bytes sent per second by the device in the last 30 seconds if shown in black,\\n\"\n                        \"in the last three seconds if shown in blue (frequency adjustable in preferences).\",\n        \"refresh\": \"Forces the refresh of the device list, in this tab but also in the \\\"Device Info\\\" and \\\"Events\\\" tabs.\\n\"\n                   \"Useful for example if the program is active while the computer wakes from sleep: \"\n                   \"events may have been missed by the program, a refresh will restore an up-to-date view.\",\n        \"assignNames\": \"Assigns to all unknown devices a local name equivalent to that known by the Livebox.\",\n        \"deviceInfo\": \"Switches to the \\\"Device Info\\\" tab for the selected device to view its information directly.\",\n        \"deviceEvents\": \"Switches to the \\\"Events\\\" tab for the selected device to view directly the events received about it.\",\n        \"ipv6\": \"Allows you to get the IPv6 activation status, the Livebox IPv6 address and its prefix,\\n\"\n                \"and the list of connected or non-connected devices with one or more assigned IPv6 addresses.\\n\"\n                \"Also allows you to view the connection mode and control the CGNat setting.\",\n        \"dns\": \"Allows you to get the list of DNS names assigned to devices\"\n    },\n\n    # Device list - IPv6 dialog\n    \"ipv6\": {\n        \"ipv6_Name\": \"Local name of the device.\\n\"\n                     \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"ipv6_LBName\": \"Device name as set in the Livebox and visible in the Livebox web interface.\\n\"\n                       \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"ipv6_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"ipv6_Active\": \"Indicates with an icon whether the device is active or not.\",\n        \"ipv6_IPv4\": \"IPv4 address of the device on the LAN.\\n\"\n                     \"This address appears in bold if it is reserved for this device\\n\"\n                     \"in the Livebox DHCP configuration.\\n\"\n                     \"And it appears in red if the address is unreachable on the network,\\n\"\n                     \"typically when the device is not active.\",\n        \"ipv6_IPv6\": \"IPv6 address(es) of the device on the LAN.\",\n        \"ipv6_Prefix\": \"IPv6 prefix(es) assigned to the device by the Livebox DHCPv6 server.\",\n        \"ipv6Enabled\": \"Indicates with an icon whether IPv6 connectivity is active or not.\",\n        \"cgNat\": \"If CGNat mode is active it is possible that the public IPv4 address you use\\n\"\n                 \"to browse the Internet is shared within Orange's network.\",\n        \"ipv6Mode\": \"Connection mode.\",\n        \"addr\": \"Livebox IPv6 address.\",\n        \"prefix\": \"Livebox IPv6 prefix.\",\n        \"gateway\": \"Livebox IPv6 gateway.\",\n        \"cgNatButton\": \"Allows you to enable or disable CGNat mode, i.e. sharing\\n\"\n                       \"the IPv4 address with other users.\"\n    },\n\n    # Device list - DNS dialog\n    \"dns\": {\n        \"dns_Name\": \"Local name of the device.\\n\"\n                    \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"dns_LBName\": \"Device name as set in the Livebox and visible in the Livebox web interface.\\n\"\n                      \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\",\n        \"dns_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"dns_Active\": \"Indicates with an icon whether the device is active or not.\",\n        \"dns_IP\": \"IP address of the device on the LAN.\\n\"\n                  \"This address appears in bold if it is reserved for this device\\n\"\n                  \"in the Livebox DHCP configuration.\\n\"\n                  \"And it appears in red if the address is unreachable on the network,\\n\"\n                  \"typically when the device is not active.\",\n        \"dns_DNS\": \"DNS name of the device.\\n\"\n                   \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button in the \\\"Device Info\\\" tab.\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"stats_Name\": \"Name of the network interface.\\n\"\n                      \"\\\"Fiber\\\" concerns all WAN traffic, that is, external traffic between the Livebox and the Internet.\\n\"\n                      \"\\\"LAN\\\" all internal traffic passing through the Livebox.\\n\"\n                      \"Then, there are statistics per specific interface.\\n\"\n                      \"\\\"Guest\\\" interfaces concern guest Wifi network traffic, if enabled.\",\n        \"stats_Rx\": \"Number of bytes received by the interface.\\n\"\n                    \"The time window for this total is unknown.\\n\"\n                    \"Displays in red if transmission errors are detected.\\n\"\n                    \"Note this counter is circular and does not exceed 4 GB for some interfaces.\",\n        \"stats_Tx\": \"Number of bytes sent by the interface.\\n\"\n                    \"The time window for this total is unknown.\\n\"\n                    \"Displays in red if transmission errors are detected.\\n\"\n                    \"Note this counter is circular and does not exceed 4 GB for some interfaces.\",\n        \"stats_RxRate\": \"Number of bytes received per second by the interface in the last three seconds.\\n\"\n                        \"The frequency is adjustable in preferences.\\n\"\n                        \"Displays in red if transmission errors are detected.\",\n        \"stats_TxRate\": \"Number of bytes sent per second by the interface in the last three seconds.\\n\"\n                        \"The frequency is adjustable in preferences.\\n\"\n                        \"Displays in red if transmission errors are detected.\",\n        \"liveboxInfo\": \"Displays the main information about the Livebox, such as software versions,\\n\"\n                       \"WAN IP address, active services, memory status, etc.\",\n        \"internetInfo\": \"Displays the type of internet access, connection identifiers, IPv4 & v6 addresses,\\n\"\n                        \"the date and time of the last connection, connection bandwidth, MTU, etc.\",\n        \"wifiInfo\": \"Displays general information about Wifi connectivity, and the status of each access including guest access.\\n\"\n                    \"For each access, detailed information such as channel, standard, bandwidth, quality, band,\\n\"\n                    \"number of connected devices, etc.\",\n        \"lanInfo\": \"Displays general information about LAN connectivity.\\n\"\n                   \"This is basic DHCP information and for each Ethernet interface\\n\"\n                   \"you can identify if it is active or not, the bandwidth, etc.\",\n        \"ontInfo\": \"Displays important information about the connection and the Fiber module (ONT), such as bandwidth,\\n\"\n                   \"signal quality, serial number, and software versions, etc.\\n\"\n                   \"The fields \\\"Signal RxPower\\\", \\\"Signal TxPower\\\", \\\"Temperature\\\", \\\"Voltage\\\" and \\\"BIAS\\\"\\n\"\n                   \"display green values if they are within acceptable quality standards for the connection,\\n\"\n                   \"in red if they represent a problem.\",\n        \"voipInfo\": \"Displays general information about telephony, such as protocol,\\n\"\n                    \"phone number, DECT interface software version, etc.\",\n        \"iptvInfo\": \"Displays general information related to television services.\",\n        \"usbInfo\": \"Displays information about the USB port(s).\\n\"\n                   \"If a USB key is inserted, or has been inserted since the last Livebox restart,\\n\"\n                   \"its information is displayed.\",\n        \"exportInfo\": \"Allows you to export all information displayed by each button into a text file.\\n\"\n                      \"Useful for sharing this information or for tracking changes.\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"graphList_Name\": \"Name of the network interface or device.\",\n        \"graphList_Type\": \"Type of object to display.\",\n        \"graphList_ID\": \"Internal identifier of the interface or device.\\n\"\n                        \"For interfaces, this is the internal name used by the Livebox.\\n\"\n                        \"For devices, this is the physical address (MAC).\",\n        \"graphList_Color\": \"Color to use to display the graph for each object.\",\n        \"addGraph\": \"Allows you to add an interface or device to the list of graphs to display.\",\n        \"delGraph\": \"Allows you to remove the selected interface or device from the list of graphs.\",\n        \"windowEdit\": \"Time window in hours for displaying graphs, from now.\\n\"\n                      \"A value of 0 will display all statistics available in the Livebox.\",\n        \"backColor\": \"Background color to use for reception and transmission graphs.\\n\"\n                     \"A right click removes any color.\",\n        \"apply\": \"Apply the configuration selected above and draw the graphs.\\n\"\n                 \"This action also saves the configuration, which will\\n\"\n                 \"be restored at the next program launch.\",\n        \"export\": \"Allows you to export data corresponding to the above configuration into\\n\"\n                  \"CSV files. One file per interface/device is generated.\\n\"\n                  \"The configuration must have been applied before export.\\n\"\n                  \"Exported times are in \\\"Unix Epoch\\\" format.\",\n        \"downGraph\": \"Graph of data received for each selected interface/device.\\n\"\n                     \"Volumes are in megabytes received per second, with a sampling rate\\n\"\n                     \"of 30 seconds. The graph updates automatically upon receiving\\n\"\n                     \"new samples.\\n\"\n                     \"It is possible to navigate and zoom with the mouse, then return to\\n\"\n                     \"the normal view by clicking in the bottom left corner.\",\n        \"upGraph\": \"Graph of data sent for each selected interface/device.\\n\"\n                   \"Volumes are in megabytes sent per second, with a sampling rate\\n\"\n                   \"of 30 seconds. The graph updates automatically upon receiving\\n\"\n                   \"new samples.\\n\"\n                   \"It is possible to navigate and zoom with the mouse, then return to\\n\"\n                   \"the normal view by clicking in the bottom left corner.\"\n    },\n\n    # Add graph dialog\n    \"addgraph\": {\n        \"typeCombo\": \"Selection of the type of object to add.\",\n        \"objectCombo\": \"Selection of the interface or device to add.\\n\"\n                       \"For devices, this is the local name (MacAddr table file), if no\\n\"\n                       \"local name has been assigned the physical address (MAC) will be used.\",\n        \"colorEdit\": \"Color to use to display the corresponding graph.\",\n        \"IDValue\": \"Internal identifier of the interface or device.\\n\"\n                   \"For interfaces, this is the internal name used by the Livebox.\\n\"\n                   \"For devices, this is the physical address (MAC).\",\n        \"measureValue\": \"Number of statistic measurements currently stored by the Livebox for\\n\"\n                        \"the interface or device. Generally, the sampling frequency is\\n\"\n                        \"30 seconds and the maximum number of stored measurements is 8680.\",\n        \"historyValue\": \"Total time window of statistics estimated from the number of\\n\"\n                        \"measurements and the sampling frequency.\"\n    },\n\n    # Device infos\n    \"dinfo\": {\n        \"dlist_Name\": \"Local device name.\\n\"\n                      \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button.\",\n        \"dlist_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"alist_Attribute\": \"The manufacturer of this device may be displayed, deduced from its MAC address.\\n\"\n                           \"The program uses the API from macaddress.io to determine it.\\n\"\n                           \"This is a free service, but you must create an account and enter the corresponding API Key\\n\"\n                           \"in the preferences to use this feature.\",\n        \"refresh\": \"Refreshes the displayed information for the selected device.\",\n        \"assignName\": \"Allows you to assign or erase the local name and/or the Livebox name of the selected device.\",\n        \"assignType\": \"Allows you to assign or erase the type of the selected device.\",\n        \"forget\": \"Allows you to ask the Livebox to permanently forget this device.\\n\"\n                  \"It will immediately disappear from all lists.\\n\"\n                  \"Warning: if the device in question is active, its connection will not be suspended,\\n\"\n                  \"however, all its activity will remain invisible until its next connection attempt.\",\n        \"wol\": \"Allows you to send a Wake-on-LAN (WOL) signal to the selected device.\",\n        \"block\": \"Allows you to block the connection of the selected device.\",\n        \"unblock\": \"Allows you to unblock the connection of the selected device.\\n\"\n                   \"The blocked or unblocked state is shown in the device information, \\\"Blocked\\\" field.\"\n    },\n\n    # Device infos - Assign name dialog\n    \"dname\": {\n        \"nameCheckBox\": \"Uncheck the box to erase the local name.\",\n        \"nameEdit\": \"This local name will be stored in the MacAddr Table file configured in the preferences.\",\n        \"liveboxNameCheckBox\": \"Uncheck the box to erase the Livebox name.\",\n        \"liveboxNameEdit\": \"This name will be stored by the Livebox.\",\n        \"dnsNameCheckBox\": \"Uncheck the box to erase the DNS name.\",\n        \"dnsNameEdit\": \"DNS name to assign to the device.\"\n    },\n\n    # Device infos - Assign type dialog\n    \"dtype\": {\n        \"typeNameCombo\": \"List of standard types known by the Livebox.\\n\"\n                         \"When a standard type is selected, its name as known by the Livebox is\\n\"\n                         \"automatically filled in the text area.\",\n        \"typeKeyEdit\": \"It is still possible to manually assign a type not known by the Livebox by typing it directly here.\"\n    },\n\n    # Events\n    \"events\": {\n        \"dlist_Name\": \"Local name of the device.\\n\"\n                      \"This name can be assigned, changed, or deleted via the \\\"Assign Name...\\\" button.\",\n        \"dlist_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"elist_Time\": \"Time the event was received.\",\n        \"elist_Reason\": \"The type of event generated by the Livebox.\",\n        \"elist_Attribute\": \"Preview of the raw data of the event itself, in JSON format.\",\n        \"notifications\": \"Displays the configuration window for automatic notifications to generate (for example by email)\\n\"\n                         \"upon detection of certain events.\",\n        \"displayEvent\": \"Displays a dialog containing the complete information for the selected event.\"\n    },\n\n    # Event Notification Rules\n    \"evnrules\" : {\n        \"rlist_Key\": \"Designation of devices for which to receive notifications.\",\n        \"rlist_Add\": \"Notification option when a device is added.\",\n        \"rlist_Delete\": \"Notification option when a device is deleted.\",\n        \"rlist_Active\": \"Notification option when a device connects.\",\n        \"rlist_Inactive\": \"Notification option when a device disconnects.\",\n        \"rlist_Link\": \"Notification option when a device changes its access point.\",\n        \"rlist_File\": \"Notification option in a CSV file.\",\n        \"rlist_Email\": \"Notification option by sending an email.\",\n        \"addRule\": \"Allows you to add a new notification rule.\",\n        \"delRule\": \"Allows you to delete the selected notification rule.\",\n        \"deviceCombo\": \"Allows you to select the device(s) for which to receive a notification.\\n\"\n                       \"\\\"Any device\\\" will apply the rule to all devices.\\n\"\n                       \"\\\"Any unknown device\\\" will apply the rule to any unknown device.\",\n        \"macEdit\": \"Physical address of the selected device.\",\n        \"eventsLabel\": \"Select the events for which to receive a notification.\",\n        \"addEvent\": \"Receive a notification when a matching device is added.\",\n        \"delEvent\": \"Receive a notification when a matching device is deleted.\",\n        \"actEvent\": \"Receive a notification when a matching device connects.\",\n        \"inaEvent\": \"Receive a notification when a matching device disconnects.\",\n        \"lnkEvent\": \"Receive a notification when a matching device changes access point (for example Wifi repeater).\",\n        \"actionsLabel\": \"Select the actions to perform for notification.\",\n        \"fileAction\": \"Log the events in a daily CSV file.\",\n        \"emailAction\": \"Send the information of each event by instant email.\\n\"\n                       \"This option requires configuring email sending via the \\\"Actions\\\" tab.\",\n        \"flushFrequencyEdit\": \"Events are detected instantly, however some events may cancel each other out\\n\"\n                              \"when generated within a short time window, such as disconnection\\n\"\n                              \"followed by reconnection within 15 seconds for a given device (happens frequently).\\n\"\n                              \"To avoid unnecessary notifications, a waiting time of 30 seconds is strongly recommended\\n\"\n                              \"to let the program identify these situations.\\n\"\n                              \"A time less than 5 seconds is strongly discouraged to prevent the program\\n\"\n                              \"from consuming too many resources.\",\n        \"eventFilePathEdit\": \"Directory in which to generate the daily CSV files.\",\n        \"eventFilePathSelectButton\": \"Allows you to select the directory in which to generate\\n\"\n                                     \"the daily CSV files.\",\n        \"defaultFilePath\": \"Check to generate the daily CSV files in the default directory,\\n\"\n                           \"which is the same as the configuration directory.\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"dlist_Name\": \"Local device name.\\n\"\n                      \"This name can be assigned, changed, or removed via the \\\"Assign Name...\\\" button.\",\n        \"dlist_Domain\": \"Assigned DHCP domain, \\\"Home\\\" or \\\"Guest\\\".\",\n        \"dlist_MAC\": \"MAC address, also called the physical address of the device.\",\n        \"dlist_IP\": \"IP address statically assigned to the device.\",\n        \"refreshBinding\": \"Refreshes the list of static leases.\",\n        \"addBinding\": \"Allows you to add a lease.\",\n        \"delBinding\": \"Deletes the selected lease.\",\n        \"refreshDhcpAttribute\": \"Refreshes the list of DHCP information.\",\n        \"dhcpSetup\": \"Allows you to configure the DHCP server.\"\n    },\n\n    # DHCP - Binding dialog\n    \"dbinding\": {\n        \"deviceCombo\": \"The list of suggested devices is sorted and consists of a mix of connected\\n\"\n                       \"devices and those referenced in the local MAC address file.\",\n        \"macEdit\": \"The MAC address is directly derived from the selected device\\n\"\n                   \"but you can also enter one manually.\",\n        \"domainCombo\": \"Choose the network domain between \\\"Home\\\" or \\\"Guest\\\".\\n\"\n                       \"A free IP address is automatically suggested.\",\n        \"ipEdit\": \"The address remains configurable.\\n\"\n                  \"Note that the same device can only be configured on a single domain,\\n\"\n                  \"and if it connects to a domain where a static lease is configured on the other,\\n\"\n                  \"that lease will be automatically deleted.\"\n    },\n\n    # DHCP - Setup dialog\n    \"dsetup\": {\n        \"enableCheckbox\": \"Enables or disables the DHCP server.\",\n        \"liveboxIpEdit\": \"Allows you to change the Livebox IP address.\",\n        \"maskEdit\": \"Allows you to change the DHCP server subnet mask.\",\n        \"minEdit\": \"Starting IP address for the \\\"Home\\\" domain.\",\n        \"maxEdit\": \"Ending IP address for the \\\"Home\\\" domain.\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"plist_Enabled\": \"Indicates with an icon whether the rule is active or not.\",\n        \"plist_Type\": \"Indicates the type of rule.\",\n        \"plist_ID\": \"Indicates the name of the rule.\",\n        \"plist_Description\": \"Description of the rule.\",\n        \"plist_Protocols\": \"List of protocols concerned by the rule.\",\n        \"plist_IntPort\": \"Internal port to which traffic is redirected.\",\n        \"plist_ExtPort\": \"External port to redirect.\",\n        \"plist_Device\": \"Device to which the traffic is redirected.\",\n        \"plist_ExtIPs\": \"List of external IP addresses concerned by the rule.\",\n        \"refreshPat\": \"Refreshes the list of port forwarding rules.\",\n        \"enablePat\": \"Enables/disables the selected rule.\",\n        \"addPat\": \"Allows you to add a port forwarding rule.\",\n        \"editPat\": \"Allows you to modify the selected port forwarding rule.\",\n        \"deletePat\": \"Allows you to delete the selected port forwarding rule.\",\n        \"deleteAllPat\": \"Allows you to delete all port forwarding rules\\n\"\n                        \"of one or more selected types.\",\n        \"exportPat\": \"Allows you to export to a file the port forwarding rules\\n\"\n                     \"of one or more selected types.\",\n        \"importPat\": \"Allows you to re-import previously exported port forwarding rules from a file.\\n\"\n                     \"If rules with the same name already exist, they will be overwritten by the imported ones.\",\n        \"tlist_Enabled\": \"Indicates with an icon whether the rule is active or not.\",\n        \"tlist_Type\": \"Indicates the type of rule.\",\n        \"tlist_ID\": \"Indicates the name of the rule.\",\n        \"tlist_Description\": \"Description of the rule.\",\n        \"tlist_Protocols\": \"List of protocols concerned by the rule.\",\n        \"tlist_Device\": \"Device to which the traffic is redirected.\",\n        \"tlist_ExtIPs\": \"List of external IP addresses concerned by the rule.\",\n        \"refreshPtf\": \"Refreshes the list of protocol forwarding rules.\",\n        \"enablePtf\": \"Enables/disables the selected rule.\",\n        \"addPtf\": \"Allows you to add a protocol forwarding rule.\",\n        \"editPtf\": \"Allows you to modify the selected protocol forwarding rule.\",\n        \"deletePtf\": \"Allows you to delete the selected protocol forwarding rule.\",\n        \"deleteAllPtf\": \"Allows you to delete all protocol forwarding rules.\",\n        \"exportPtf\": \"Allows you to export to a file the protocol forwarding rules\\n\"\n                     \"of one or more selected types.\",\n        \"importPtf\": \"Allows you to re-import previously exported protocol forwarding rules from a file.\\n\"\n                     \"If rules with the same name already exist, they will be overwritten by the imported ones.\"\n    },\n\n    # NAT/PAT - PAT rule dialog\n    \"patrule\": {\n        \"enableCheckbox\": \"Enables or disables the rule.\",\n        \"typeCombo\": \"Select the type of rule. UPnP is an internal type,\\n\"\n                     \"you should not need to create or modify a rule of this type.\",\n        \"nameEdit\": \"Unique name for the rule. If a rule with the same name already exists,\\n\"\n                    \"it will be overwritten.\",\n        \"descEdit\": \"Description of the rule.\",\n        \"tcpCheckbox\": \"Redirects TCP traffic or not.\",\n        \"udpCheckbox\": \"Redirects UDP traffic or not.\",\n        \"intPortEdit\": \"Internal port to which traffic should be redirected.\\n\"\n                       \"Use the - character between two ports to specify a range.\",\n        \"extPortEdit\": \"External port to redirect.\\n\"\n                       \"Does not work in IPv6.\\n\"\n                       \"Leave this field empty if it is the same as the internal port.\\n\"\n                       \"Use the - character between two ports to specify a range.\",\n        \"deviceCombo\": \"Device to which the traffic should be redirected.\",\n        \"ipEdit\": \"IP address (v4 or v6 depending on the type) to which the traffic\\n\"\n                  \"should be redirected.\",\n        \"extIPsEdit\": \"List of external IP addresses (v4 or v6 depending on the type) concerned by the rule.\\n\"\n                      \"Each address must be separated by a comma.\\n\"\n                      \"Leave empty if no external IP filtering is required.\"\n    },\n\n    # NAT/PAT - PTF rule dialog\n    \"ptfrule\": {\n        \"enableCheckbox\": \"Enables or disables the rule.\",\n        \"typeCombo\": \"Select the type of rule.\",\n        \"nameEdit\": \"Unique name for the rule. If a rule with the same name already exists,\\n\"\n                    \"it will be overwritten.\",\n        \"descEdit\": \"Description of the rule.\",\n        \"protocolsCombo\": \"Select the protocols to redirect.\",\n        \"deviceCombo\": \"Device to which the traffic should be redirected.\",\n        \"ipEdit\": \"IP address (v4 or v6 depending on the type) to which the traffic\\n\"\n                  \"should be redirected. It is also possible to specify a prefix.\",\n        \"extIPsEdit\": \"List of external IP addresses (v4 or v6 depending on the type) concerned by the rule.\\n\"\n                      \"Each address must be separated by a comma.\\n\"\n                      \"Leave empty if no external IP filtering is required.\"\n    },\n\n    # NAT/PAT - rule type selection dialog\n    \"nprtype\": {\n        \"ipV4Checkbox\": \"Selects or not IPv4 type rules.\",\n        \"ipV6Checkbox\": \"Selects or not IPv6 type rules.\",\n        \"upnpCheckbox\": \"Selects or not UPnP type rules.\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"calist_Type\": \"Icon corresponding to the type of call.\\n\"\n                       \"- Received call.\\n\"\n                       \"- Missed call. In this case, the entire line is shown in red.\\n\"\n                       \"- Outgoing call.\\n\"\n                       \"- Outgoing call but not connected.\",\n        \"calist_Time\": \"Date and time of the call.\",\n        \"calist_Number\": \"Phone number involved.\\n\"\n                         \"Double-clicking on a call allows you to easily create or edit the corresponding contact.\",\n        \"calist_Contact\": \"The name of the contact determined by the Livebox based on the contact list at the time of the call.\\n\"\n                          \"If the Livebox did not store any name, the program tries to find one dynamically from\\n\"\n                          \"the list of saved contacts by matching the phone number.\",\n        \"calist_Duration\": \"Duration of the call.\",\n        \"colist_Name\": \"Contact name, in the format last name + first name.\",\n        \"colist_Cell\": \"Mobile phone number.\",\n        \"colist_Home\": \"Home phone number.\",\n        \"colist_Work\": \"Work phone number.\",\n        \"colist_Ring\": \"Type of ringtone selected from the 7 supported by the Livebox.\",\n        \"refreshCall\": \"Refreshes the call list.\",\n        \"deleteCall\": \"Deletes the selected call.\",\n        \"deleteAllCalls\": \"Deletes all calls.\",\n        \"spamCallScan\": \"Scans all unidentified incoming calls and checks on the callfilter.app website\\n\"\n                        \"if these calls are spam or not. This feature requires a Call Filter API Key\\n\"\n                        \"and it must be configured in the preferences.\",\n        \"spamCallSites\": \"Opens two websites in your browser to check the origin\\n\"\n                         \"of the selected call.\",\n        \"setSpamCall\": \"Allows you to manually mark the selected call as spam or not.\",\n        \"refreshContact\": \"Refreshes the contact list.\",\n        \"addContact\": \"Allows you to add a contact.\\n\"\n                      \"Note: No duplicate check is performed.\",\n        \"editContact\": \"To edit the selected contact.\",\n        \"deleteContact\": \"Deletes the selected contact.\",\n        \"deleteAllContacts\": \"Deletes all contacts.\",\n        \"ringToneCombo\": \"Select one of the 7 types of ringtones offered by the Livebox.\\n\"\n                         \"If none is selected, the default ringtone is used.\",\n        \"phoneRing\": \"Allows you to test the phone with the selected ringtone.\",\n        \"exportContacts\": \"Allows you to export all contacts into a VCF file.\\n\"\n                          \"Very useful for backups.\",\n        \"importContacts\": \"Allows you to import one or more VCF files.\\n\"\n                          \"Note: No duplicate check is performed.\\n\"\n                          \"If the maximum supported number of contacts (255) is reached, the import is stopped.\"\n    },\n\n    # Phone - Contact edit\n    \"pcontact\": {\n        \"ringToneCombo\": \"Ringtone for this contact among the 7 supported by the Livebox.\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"wifiConfig\": \"Allows you to configure all radio bands of the Wifi network.\",\n        \"wifiGuestConfig\": \"Allows you to configure all radio bands of the Guest Wifi network.\",\n        \"wifiOn\": \"Allows you to enable the Wifi interface of the Livebox.\",\n        \"wifiOff\": \"Allows you to disable the Wifi interface of the Livebox.\",\n        \"guestWifiOn\": \"Allows you to enable the guest Wifi interface of the Livebox.\",\n        \"guestWifiOff\": \"Allows you to disable the guest Wifi interface of the Livebox.\",\n        \"schedulerOn\": \"Allows you to enable the Wifi scheduler of the Livebox.\\n\"\n                       \"This scheduler must be configured from the Livebox web interface.\",\n        \"schedulerOff\": \"Allows you to disable the Wifi scheduler of the Livebox.\",\n        \"wifiGlobalStatus\": \"Allows you to display the global status of Wifi, including the Wifi status of all\\n\"\n                            \"potentially connected Orange Wifi repeaters.\",\n        \"backupRestore\": \"Allows you to set up automatic backup of the Livebox configuration,\\n\"\n                         \"trigger a backup, or request a configuration restore.\",\n        \"screen\": \"Allows you to set the LED level and display the Wifi password\\n\"\n                  \"on the screen. Feature available only from Livebox 6 onwards.\",\n        \"rebootLivebox\": \"Allows you to force a reboot of the Livebox.\",\n        \"resetLivebox\": \"Allows you to reset the Livebox to factory settings.\\n\"\n                        \"If automatic configuration restoration is enabled, a dialog will allow you to disable it.\",\n        \"rebootHistory\": \"Allows you to display the history of the latest reboots.\\n\"\n                         \"Useful to detect reboots forced by Orange to update the Livebox software.\",\n        \"firewallLevel\": \"Allows you to set the levels of the IPv4 and IPv6 firewalls.\",\n        \"pingResponse\": \"Allows you to set responses to IPv4 and IPv6 ping requests.\",\n        \"dynDNS\": \"Allows you to assign a domain and fixed host name, easy to remember, to a static or dynamic IP address\\n\"\n                  \"or a long URL.\\n\"\n                  \"Useful, for example, if you host a website or FTP server behind your Livebox to\\n\"\n                  \"find it easily (name like myserver.dydns.org).\",\n        \"dmz\": \"Allows you to add a device to the DMZ.\\n\"\n               \"By adding a device to the DMZ, you make it accessible from the Internet.\\n\"\n               \"You must first assign a static IP address to this device in the DHCP tab.\",\n        \"routingTable\": \"Allows you to configure the static routing table.\\n\"\n                        \"This option is only available for Livebox Pro.\",\n        \"openSourceURL\": \"A click will open the application's web page in your browser.\",\n        \"prefs\": \"Allows you to display the program preferences screen.\",\n        \"changeProfile\": \"Allows you to change the current profile and restart the program.\",\n        \"emailSetup\": \"Allows you to configure automatic email sending, for example for notifications.\",\n        \"setLogLevel\": \"Allows you to change the log level in the console.\\n\"\n                       \"This level is stored in the program configuration and will be retained at the next launch.\",\n        \"callApis\": \"Allows you to call the REST/JSON Livebox APIs.\",\n        \"getApiDoc\": \"Allows you to export the available documentation on the Livebox REST/JSON APIs\\n\"\n                     \"into a set of files. This feature is blocked on Livebox W7 & S.\",\n        \"quit\": \"To quit the application. Strictly equivalent to closing the application window.\"\n    },\n\n    # Actions - Reboot history\n    \"rhistory\": {\n        \"reboot_BootDate\": \"Startup date and time.\",\n        \"reboot_BootReason\": \"The reason for this startup.\\n\"\n                             \"Typically \\\"NMC\\\" or \\\"POR\\\" indicates a software-forced startup and \\\"Unsupported chipset\\\"\\n\"\n                             \"a reboot caused by a power outage or the switch.\",\n        \"reboot_ShutdownDate\": \"Shutdown date and time.\",\n        \"reboot_ShutdownReason\": \"The reason for this shutdown.\\n\"\n                                 \"Typically empty for a power outage, \\\"Upgrade\\\" for a software update, and \\\"GUI_Reboot\\\" for\\n\"\n                                 \"a reboot requested from the Web interface or LiveboxMonitor.\",\n    },\n\n    # Actions - Wifi configuration\n    \"wconfig\": {\n        \"enableCheckbox\": \"Enables or disables all radio bands.\",\n        \"mloCheckbox\": \"Enables or disables Wifi 7 MLO technology (Multi-Link Operation).\",\n        \"durationEdit\": \"Duration in hours of Guest Wifi activation.\\n\"\n                        \"Enter 0 for unlimited duration.\",\n        \"freqCombo\": \"Allows you to select the radio band to configure.\",\n        \"ssidEdit\": \"Name of the network to broadcast for the selected radio band.\",\n        \"freqEnabledCheckbox\": \"Enables or disables the selected radio band.\",\n        \"broadcastCheckbox\": \"Allows you to broadcast the network name to make it discoverable.\",\n        \"wpsCheckbox\": \"Enables or disables WPS connection methods\\n\"\n                       \"(Wi-Fi Protected Setup) for the selected radio band.\",\n        \"macFilteringCombo\": \"Select 'Off' to disable MAC filtering.\\n\"\n                             \"'WhiteList' to enable MAC filtering and allow\\n\"\n                             \"connection only to listed devices.\\n\"\n                             \"'BlackList' to enable MAC filtering and allow\\n\"\n                             \"connection to all devices except those listed.\",\n        \"macFilteringEntriesCombo\": \"Select the devices to be filtered.\\n\"\n                                    \"The 'Add...' option allows you to enter a new physical address\\n\"\n                                    \"(MAC address) to the list.\",\n        \"secuCombo\": \"Type of security for the selected radio band.\\n\"\n                     \"Select 'None' for open access without a password.\",\n        \"passEdit\": \"Password for the selected radio band.\",\n        \"passShow\": \"Allows you to show/hide the password.\",\n        \"chanCombo\": \"Channel to use for the selected radio band.\\n\"\n                     \"Select 'Auto' for automatic selection.\",\n        \"modeCombo\": \"Connection mode for the selected radio band.\",\n        \"bandwidthCombo\": \"Bandwidth to use for the selected radio band.\\n\"\n                          \"Warning: changing the bandwidth is not guaranteed to work in all cases.\\n\"\n                          \"For example, on the 5 GHz radio band, the change is not recognized by\\n\"\n                          \"Livebox 4 and 5.\"\n    },\n\n    # Actions - Wifi global status\n    \"wglobal\": {},\n\n    # Actions - Backup & Restore\n    \"backrest\": {\n        \"autoBackEnabled\": \"Indicates whether automatic backup is enabled or not.\",\n        \"status\": \"Indicates the current backup status.\",\n        \"lastBackup\": \"Date and time of the last backup.\",\n        \"refresh\": \"Allows you to refresh the above information.\",\n        \"enaAutoBack\": \"Enables automatic backup of the Livebox configuration.\",\n        \"disAutoBack\": \"Disables automatic backup of the Livebox configuration.\",\n        \"forceBackup\": \"Forces a backup of the Livebox configuration.\",\n        \"forceRestore\": \"Forces a restoration of the Livebox configuration from\\n\"\n                        \"the last backup. A Livebox restart is triggered.\"\n    },\n\n    # Actions - Screen & LEDs\n    \"screen\" : {\n        \"orangeSlider\": \"Adjusts the brightness level of the Orange LED.\",\n        \"showWifiPasswordCheckbox\": \"Display the security key on the Livebox screen.\"\n    },\n\n    # Actions - Firewall level\n    \"fwlevel\": {\n        \"ipV4Combo\": \"IPv4 firewall level.\",\n        \"ipV6Combo\": \"IPv6 firewall level.\"\n    },\n\n    # Actions - Ping Response\n    \"pingr\": {\n        \"ipV4Checkbox\": \"Select to respond to IPv4 ping requests.\",\n        \"ipV6Checkbox\": \"Select to respond to IPv6 ping requests.\"\n    },\n\n    # Actions - DynDNS\n    \"dyndns\": {\n        \"hlist_Service\": \"Service type.\",\n        \"hlist_HostName\": \"Host or domain name.\",\n        \"hlist_UserName\": \"User email.\",\n        \"hlist_Password\": \"User password.\",\n        \"hlist_LastUpdate\": \"Date and time of the last update.\",\n        \"refresh\": \"Refreshes the list of hosts/domains.\",\n        \"showPassword\": \"Shows or hides passwords in the list.\",\n        \"delHost\": \"Deletes the selected host/domain.\",\n        \"serviceCombo\": \"Service selection.\",\n        \"hostNameEdit\": \"Host or domain name.\",\n        \"userNameEdit\": \"User email.\",\n        \"passwordEdit\": \"User password.\",\n        \"addHost\": \"Adds a host/domain.\",\n        \"disableAll\": \"Disables or enables all hosts/domains.\",\n        \"ok\": \"Closes this screen.\"\n    },\n\n    # Actions - DMZ\n    \"dmz\": {\n        \"zlist_ID\": \"Unique identifier of the DMZ rule. The Orange application only uses a single rule\\n\"\n                    \"with \\\"webui\\\" as the identifier.\",\n        \"zlist_IP\": \"IP address of the device in the DMZ.\",\n        \"zlist_Device\": \"Name of the device in the DMZ.\",\n        \"zlist_ExtIPs\": \"List of external IP addresses concerned by the rule.\",\n        \"refresh\": \"Refreshes the list of devices in the DMZ.\",\n        \"delDmz\": \"Deletes the selected rule.\",\n        \"id\": \"Unique identifier of the DMZ rule. The Orange application only uses a single rule\\n\"\n              \"with \\\"webui\\\" as the identifier.\",\n        \"deviceCombo\": \"Device to add to the DMZ.\",\n        \"ipEdit\": \"IP address of the device to add to the DMZ.\",\n        \"extIPsEdit\": \"List of external IP addresses concerned by the rule.\\n\"\n                      \"Each address must be separated by a comma.\\n\"\n                      \"Leave empty if no external IP filtering is required.\",\n        \"addDmz\": \"Adds the device to the DMZ. If a rule is already present with the same identifier,\\n\"\n                  \"it will be overwritten.\",\n        \"ok\": \"Closes this screen.\"\n    },\n\n    # Actions - Routing\n    \"routing\": {\n        \"rlist_DestMask\": \"Destination subnet mask.\",\n        \"rlist_Priority\": \"Priority given to each route.\",\n        \"rlist_Enabled\": \"Indicates whether you have requested to activate the route.\",\n        \"rlist_Status\": \"Current rule activation status.\",\n        \"refresh\": \"Refreshes the list of routes.\",\n        \"enableRule\": \"Enables/disables the selected route.\",\n        \"delRule\": \"Deletes the selected route.\",\n        \"destMaskEdit\": \"Destination subnet mask.\",\n        \"priorityEdit\": \"Priority to be given to the route.\",\n        \"addRule\": \"Adds a new route with the specified values.\",\n        \"editRule\": \"Modifies the selected route with the specified values.\",\n        \"ok\": \"Closes this screen.\"\n    },\n\n    # Actions - Call API\n    \"callapi\": {\n        \"presetCombo\": \"List of predefined calls.\",\n        \"service\": \"Service name, for example \\\"NMC\\\".\",\n        \"method\": \"Method name, for example \\\"get\\\".\",\n        \"parametersEdit\": \"Parameters to use, JSON format.\",\n        \"call\": \"Trigger the corresponding API call.\",\n        \"replyEdit\": \"Displays API call response, JSON format.\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"stats_Name\": \"Network interface name.\\n\"\n                      \"\\\"LAN\\\" concerns all traffic between the repeater and the Livebox.\\n\"\n                      \"Then, you have statistics for each specific interface (the Ethernet ports as well as the Wifi bands).\",\n        \"stats_Rx\": \"Number of bytes received by the interface.\\n\"\n                    \"The time window for this total is unknown.\\n\"\n                    \"Displays in red if transmission errors are detected.\\n\"\n                    \"Note: this counter is circular and does not exceed 4 GB.\",\n        \"stats_Tx\": \"Number of bytes sent by the interface.\\n\"\n                    \"The time window for this total is unknown.\\n\"\n                    \"Displays in red if transmission errors are detected.\\n\"\n                    \"Note: this counter is circular and does not exceed 4 GB.\",\n        \"stats_RxRate\": \"Rate of bytes received per second by the interface over the last three seconds.\\n\"\n                        \"The frequency can be set in the preferences.\",\n        \"stats_TxRate\": \"Rate of bytes sent per second by the interface over the last three seconds.\\n\"\n                        \"The frequency can be set in the preferences.\",\n        \"wifiOn\": \"Allows you to enable the repeater's Wifi interface.\",\n        \"wifiOff\": \"Allows you to disable the repeater's Wifi interface.\",\n        \"schedulerOn\": \"Allows you to enable the Wifi scheduler of the repeater.\\n\"\n                       \"This scheduler must be configured from the repeater's web interface.\",\n        \"schedulerOff\": \"Allows you to disable the Wifi scheduler of the repeater.\",\n        \"rebootRepeater\": \"Allows you to force a reboot of the repeater.\",\n        \"resetRepeater\": \"Allows you to reset the repeater to factory settings.\",\n        \"rebootHistory\": \"Allows you to display the history of the latest reboots.\\n\"\n                         \"Useful for detecting reboots forced by Orange to update the repeater's software.\",\n        \"callApis\": \"Allows you to call the REST/JSON repeater APIs.\",\n        \"resign\": \"To force the creation of a new session with the repeater.\\n\"\n                  \"If you leave the program running too long without viewing the repeater's statistics or\\n\"\n                  \"performing any action, the session will be automatically released by the repeater.\\n\"\n                  \"In this case, errors will occur when performing actions: this button will allow you to recreate\\n\"\n                  \"the session, enabling you to resume actions without errors.\",\n        \"repeaterInfo\": \"Displays the main information about the repeater, such as software versions,\\n\"\n                        \"model name, internal clock time, etc.\",\n        \"wifiInfo\": \"Displays general information about Wifi connectivity, and the status of each access.\\n\"\n                    \"For each access point, you get detailed information such as channel, standard, bandwidth,\\n\"\n                    \"quality, band, number of connected devices, etc.\",\n        \"lanInfo\": \"Displays general information about LAN connectivity.\\n\"\n                   \"For each Ethernet interface, you can identify if it is active or not, bandwidth, etc.\",\n        \"exportInfo\": \"Allows you to export all the information displayed by each button into a text file.\\n\"\n                      \"Useful for sharing this information or for tracking changes.\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"statusValue\": \"Decoder current status.\",\n        \"mediaTypeValue\": \"Current media type.\",\n        \"mediaStateValue\": \"Current media state.\",\n        \"vendorValue\": \"Decoder vendor as known by the Livebox.\",\n        \"modelValue\": \"Decoder model name as known by the Livebox.\",\n        \"macValue\": \"Decoder physical (MAC) address.\",\n        \"ipValue\": \"Decoder IP address.\",\n        \"nameValue\": \"Decoder name.\",\n        \"manufacturerValue\": \"Decoder manufacturer.\",\n        \"modelNameValue\": \"Decoder model name.\",\n        \"uniqueIdValue\": \"Decoder unique ID.\",\n        \"resetCache\": \"Allows you to erase and reload the cached TV channels information and icons.\",\n        \"channelValue\": \"Current channel number.\",\n        \"channelNameValue\": \"Current channel name.\",\n        \"mediaIdValue\": \"Current channel EPG ID (Electronic Program Guide).\",\n        \"channelIcon\": \"Current channel icon.\",\n        \"channelDesc\": \"Current channel description.\",\n        \"channelEdit\": \"You can enter either:\\n\"\n                       \"- A channel number.\\n\"\n                       \"- A channel name (even partial).\\n\"\n                       \"- A channel EPG ID (Electronic Program Guide) by typing 'epg' followed by the ID number.\",\n        \"channelSet\": \"Allows to change the current channel.\",\n        \"power\": \"Power ON/OFF.\",\n        \"mic\": \"Microphone.\",\n        \"back\": \"Back.\",\n        \"vol_up\": \"Volume up.\",\n        \"chan_up\": \"Channel up.\",\n        \"vol_down\": \"Volume down.\",\n        \"chan_down\": \"Channel down.\",\n        \"mute\": \"Mute.\",\n        \"fbwd\": \"Fast backward.\",\n        \"play\": \"Play/Pause.\",\n        \"ffwd\": \"Fast forward\",\n        \"admin\": \"Administration menu.\",\n        \"record\": \"Record.\"\n    },\n\n    # Config - Preferences\n    \"prefs\": {\n        \"profileList\": \"The program supports managing multiple Liveboxes using different profiles.\\n\"\n                       \"Each profile must have a unique name. By default, a main profile is created automatically.\\n\"\n                       \"If several profiles are configured, the name of the current profile is displayed in the main window title in brackets.\\n\"\n                       \"When the program starts, the default profile is used, but if no default profile is configured or\\n\"\n                       \"if the `Ctrl` key is pressed, the program displays a dialog to select the profile to use.\",\n        \"addProfile\": \"Allows you to add a profile.\",\n        \"delProfile\": \"Delete the selected profile.\",\n        \"profileNameEdit\": \"Profile name.\",\n        \"liveboxUrlEdit\": \"Livebox address. The default value is \\\"http://livebox.home/\\\".\",\n        \"liveboxUserEdit\": \"Login for session opening.\\n\"\n                           \"Default is \\\"admin\\\".\\n\"\n                           \"The password is requested automatically when using the profile\\n\"\n                           \"if it is not provided or if it is incorrect.\",\n        \"filterDevices\": \"Enables device filtering to avoid showing certain \\\"phantom\\\" devices detected by the Livebox.\\n\"\n                         \"When this setting is enabled, the program displays the same devices as the Livebox web interface.\\n\"\n                         \"This setting is disabled by default.\",\n        \"onlyActiveDevices\": \"Allows you to display only active devices in the main list.\\n\"\n                             \"This setting is disabled by default.\",\n        \"macAddrTableFileEdit\": \"Filename for storing device names associated with their MAC address.\\n\"\n                                \"Default is \\\"MacAddrTable.txt\\\".\\n\"\n                                \"Any detected device whose MAC address is not listed will be displayed as \\\"UNKNOWN\\\" in red.\\n\"\n                                \"This feature is mainly useful for detecting new devices or intrusion attempts.\",\n        \"defaultProfile\": \"Indicates that this is the default profile to use when the program starts.\\n\"\n                          \"There can only be one default profile.\",\n        \"languageCombo\": \"Language used by the application.\",\n        \"tooltips\": \"Enable or disable tooltips.\",\n        \"statsFrequencyEdit\": \"Refresh frequency, in seconds, for all statistics.\\n\"\n                              \"Default is 3 seconds.\",\n        \"macAddrApiKeyEdit\": \"The program uses the API from the macaddress.io website to determine the manufacturer of a device\\n\"\n                             \"from its MAC address (the \\\"Manufacturer\\\" field in the detailed device information).\\n\"\n                             \"It is a free service, but you must create an account and enter the corresponding API Key here\\n\"\n                             \"to use this feature.\",\n        \"callFilterApiKeyEdit\": \"The program uses the API from the callfilter.app website to determine if a phone call\\n\"\n                                \"is telemarketing or fraud based on its number.\\n\"\n                                \"It is a free service, but you must request a key by email in English (info@callfilter.app)\\n\"\n                                \"and enter the given API Key here to use this feature.\",\n        \"phoneCodeEdit\": \"Local telephone code, useful for matching phone calls with contact numbers.\\n\"\n                         \"By default, the code for France is used, which is 33.\",\n        \"listHeaderHeightEdit\": \"Height in pixels of list headers, default is 25.\",\n        \"listHeaderFontSizeEdit\": \"Font size of list headers.\\n\"\n                                  \"A value of zero means to use the system size.\\n\"\n                                  \"By default, this setting is zero.\",\n        \"listLineHeightEdit\": \"Height in pixels of list lines, default is 30.\",\n        \"listLineFontSize\": \"Font size of list lines.\\n\"\n                            \"A value of zero means to use the system size.\\n\"\n                            \"By default, this setting is zero.\",\n        \"timeoutMarginEdit\": \"Additional timeout value, to be used for example if you access a Livebox remotely\\n\"\n                             \"with high network latency.\",\n        \"csvDelimiterEdit\": \"List separator (delimiter) to use when exporting\\n\"\n                            \"data to CSV format files.\",\n        \"realtimeWifiStats\": \"Enable or disable real-time statistics for wifi devices.\\n\"\n                             \"These are displayed in blue in the \\\"Devices\\\" tab and overlay\\n\"\n                             \"the standard statistics, which are displayed in black every 30 seconds.\",\n        \"preventSleepMode\": \"Allows you to prevent your computer from going to sleep while this\\n\"\n                            \"program is running. Useful for keeping the application running continuously, for example for\\n\"\n                            \"statistics export or real-time notification generation.\",\n        \"nativeUIStyle\": \"By default, the \\\"Fusion\\\" style is used on all platforms.\\n\"\n                         \"This option allows Windows and MacOS platforms to use\\n\"\n                         \"a more native graphical style.\\n\"\n                         \"It has no effect on Linux platforms.\",\n        \"savePasswords\": \"Allows you to save passwords in the configuration (encrypted) to avoid\\n\"\n                         \"having to re-enter them each time the program starts.\"\n    },\n\n    # Config - Connection\n    \"cnx\": {\n        \"urlEdit\": \"You must use for the connection exactly the same information as for the Livebox Web Interface\\n\"\n                   \"For the URL try http://livebox.home/, http://livebox/ or http://192.168.1.1/.\"\n    },\n\n    # Config - Signin\n    \"signin\": {\n        \"userEdit\": \"You must use for the connection exactly the same information as for the Livebox Web Interface\\n\"\n                    \"User must remain set to the default \\\"admin\\\".\",\n        \"passwordEdit\": \"The password is either what you set up yourself or if you didn't change it, it is what is in\\n\"\n                        \"your Wifi card (corresponds to the first 8 characters, without spaces, of the security key visible\\n\"\n                        \"on the sticker at the back of your Livebox).\\n\"\n                        \"Read the documentation for more details.\",\n        \"savePasswords\": \"Allows you to save passwords in the configuration (encrypted) to avoid\\n\"\n                         \"having to re-enter them each time you start.\"\n    },\n\n    # Config - email\n    \"email\": {\n        \"fromAddrEdit\": \"Sender email address for messages.\",\n        \"toAddrEdit\": \"Recipient email address for messages.\",\n        \"subjectPrefixEdit\": \"Prefix added to the subjects of sent messages.\",\n        \"smtpServerEdit\": \"SMTP server of your email provider.\",\n        \"smtpPortEdit\": \"SMTP port to use. 465 is recommended for SSL & TLS,\\n\"\n                        \"587 for any other protocol.\",\n        \"useSTARTTLS\": \"Use the STARTTLS encryption protocol (recommended).\",\n        \"useTLS\": \"Use the TLS encryption protocol.\",\n        \"authentication\": \"Select if the server requires authentication.\",\n        \"test\": \"Allows you to send a test message with the current settings\\n\"\n                \"without saving them.\"\n    },\n\n    # Config - Select profile\n    \"sprofile\": {\n        \"assMacValue\": \"Physical address of the Livebox associated with the selected profile.\\n\"\n                       \"If no address is associated, the profile has never been used and can be associated\\n\"\n                       \"with any Livebox on the network.\",\n        \"detMacValue\": \"Physical address of the Livebox detected via the selected profile's URL.\\n\"\n                       \"If no Livebox is detected, it means the connection will fail and another\\n\"\n                       \"URL will be requested.\\n\"\n                       \"If the physical address is different from the one associated with the selected profile,\\n\"\n                       \"the old address will be replaced by the new one.\",\n        \"createProfile\": \"Allows you to create a new profile and use it directly.\"\n    },\n\n    # Config - Release warning\n    \"rwarn\": {\n        \"downloadURL\": \"Click here to open the application's web page in your browser.\\n\"\n                       \"You will be able to download the new version there.\",\n        \"nowarning\": \"Click here to no longer be notified about this version.\"\n    }\n}\n\n\n\n# ################################ MESSAGES ################################\n\n# No need - native application language\n"
  },
  {
    "path": "src/LiveboxMonitor/lang/LmLanguage_FR.py",
    "content": "### Livebox Monitor French Language module ###\n\n\n# ################################ LABELS ################################\n\nLABELS = {\n    # Main window\n    \"main\": {\n        \"Terminating threads...\": \"Fermeture des threads...\",\n        \"Signing in...\": \"Authentification...\"\n    },\n\n    # Export table dialog\n    \"export_table\": {\n        \"Export Header\": \"Exporter l'en-tête\",\n        \"Columns\": \"Colonnes\",\n        \"Cancel\": \"Annuler\",\n        \"Export Table\": \"Exporter le tableau\",\n        \"Save File\": \"Enregistrer le fichier\",\n        \"Exporting data...\": \"Exportation des données...\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"T\": \"T\",\n        \"Name\": \"Nom\",\n        \"Livebox Name\": \"Nom Livebox\",\n        \"Link\": \"Accès\",\n        \"RxRate\": \"TauxRx\",\n        \"TxRate\": \"TauxTx\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Assign Names...\": \"Assigner Noms...\",\n        \"Device Infos\": \"Infos Appareil\",\n        \"Device Events\": \"Événements Appareil\",\n        \"Device List\": \"Appareils\",\n        \"Getting IPv6 Information...\": \"Chargement des informations IPv6...\",\n        \"Getting DNS Information...\": \"Chargement des informations DNS...\",\n        \"Loading device list...\": \"Chargement de la liste d'appareils...\",\n        \"<None>\": \"<Aucun>\",\n        \"Unknown\": \"Inconnu\",\n        \"UNKNOWN\": \"INCONNU\",\n        \"Assigning names to unknown devices...\": \"Attribution de nom aux appareils inconnus...\",\n        \"Loading devices information...\": \"Chargement des informations sur les appareils...\",\n        \"Guest 2.4GHz\": \"Invité 2.4GHz\",\n        \"Guest 5GHz\": \"Invité 5GHz\"\n    },\n\n    # Device list - IPv6 dialog\n    \"ipv6\": {\n        \"IPv6 enabled:\": \"IPv6 activé :\",\n        \"CGNat:\": \"CGNat :\",\n        \"Mode:\": \"Mode :\",\n        \"IPv6 address:\": \"Adresse IPv6 :\",\n        \"IPv6 prefix:\": \"Préfixe IPv6 :\",\n        \"IPv6 gateway:\": \"Passerelle IPv6\",\n        \"Name\": \"Nom\",\n        \"Livebox Name\": \"Nom Livebox\",\n        \"Prefix\": \"Préfixe\",\n        \"IPv6 Devices\": \"Appareils IPv6\",\n        \"Disable CGNat\": \"Désactiver CGNat\",\n        \"Enable CGNat\": \"Activer CGNat\"\n    },\n\n    # Device list - DNS dialog\n    \"dns\": {\n        \"Name\": \"Nom\",\n        \"Livebox Name\": \"Nom Livebox\",\n        \"Devices DNS\": \"DNS des appareils\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"Name\": \"Nom\",\n        \"RxRate\": \"TauxRx\",\n        \"TxRate\": \"TauxTx\",\n        \"Fiber\": \"Fibre\",\n        \"Guest 2.4GHz\": \"Invité 2.4GHz\",\n        \"Guest 5GHz\": \"Invité 5GHz\",\n        \"Attribute\": \"Attribut\",\n        \"Value\": \"Valeur\",\n        \"Livebox Infos\": \"Infos Livebox\",\n        \"Internet Infos\": \"Infos Internet\",\n        \"Wifi Infos\": \"Infos Wifi\",\n        \"LAN Infos\": \"Infos LAN\",\n        \"ONT Infos\": \"Infos ONT\",\n        \"VoIP Infos\": \"Infos VoIP\",\n        \"IPTV Infos\": \"Infos IPTV\",\n        \"USB Infos\": \"Infos USB\",\n        \"Livebox Stats/Infos\": \"Stats/Infos Livebox\",\n        \"Getting Livebox information...\": \"Chargement des infos Livebox...\",\n        \"Getting Internet information...\": \"Chargement des infos Internet...\",\n        \"Getting Wifi information...\": \"Chargement des infos Wifi...\",\n        \"Getting LAN information...\": \"Chargement des infos LAN...\",\n        \"Getting ONT information...\": \"Chargement des infos ONT...\",\n        \"Getting VoIP information...\": \"Chargement des infos VoIP...\",\n        \"Getting IPTV information...\": \"Chargement des infos IPTV...\",\n        \"Getting USB information...\": \"Chargement des infos USB...\",\n        \"Save File\": \"Enregistrer le fichier\",\n        \"Exporting all information...\": \"Export de toutes les informations...\",\n        \"Livebox Information\": \"Informations Livebox\",\n        \"Provider\": \"Fournisseur\",\n        \"Model Number\": \"Numéro Modèle\",\n        \"Model Name\": \"Nom Modèle\",\n        \"Friendly Name\": \"Nom Familier\",\n        \"Allowed Host Headers\": \"Noms d'Hôtes\",\n        \"Model\": \"Modèle\",\n        \"Status\": \"Statut\",\n        \"Livebox Up Time\": \"Temps Fonctionnement\",\n        \"Manufacturer\": \"Marque\",\n        \"Manufacturer Model Name\": \"Modèle Fabricant\",\n        \"Serial Number\": \"Numéro de série\",\n        \"Hardware Version\": \"Version Matériel\",\n        \"Software Version\": \"Version Logiciel\",\n        \"Rescue Version\": \"Version de Secours\",\n        \"Modem Firmware Version\": \"Version Firmware Modem\",\n        \"Orange Firmware Version\": \"Version Firmware Orange\",\n        \"Spec Version\": \"Version Spec\",\n        \"Provisioning Code\": \"Code Provisioning\",\n        \"Country\": \"Pays\",\n        \"MAC Address\": \"Adresse MAC\",\n        \"External IP Address\": \"Adresse IP Externe\",\n        \"Total Number Of Reboots\": \"Nb Total de Redémarrages\",\n        \"Number Of Reboots\": \"Nb de Redémarrages\",\n        \"Upgrade Occurred\": \"Mise-à-jour Effectuée\",\n        \"Reset Occurred\": \"Reset Effectué\",\n        \"Restore Occurred\": \"Restauration Effectuée\",\n        \"Active\": \"Actif\",\n        \"First Boot\": \"Premier Démarrage\",\n        \"Boot Loader Version\": \"Version Boot Loader\",\n        \"Firewall Level\": \"Niveau Firewall\",\n        \"Internet Active\": \"Internet Actif\",\n        \"IPTV Active\": \"IPTV Actif\",\n        \"Telephony Active\": \"Téléphonie Active\",\n        \"Time\": \"Heure\",\n        \"Memory\": \"Mémoire\",\n        \"Total Memory\": \"Mémoire Totale\",\n        \"Free Memory\": \"Mémoire Libre\",\n        \"Internet Information\": \"Information Internet\",\n        \"Connection\": \"Connexion\",\n        \"Access Type\": \"Type Accès\",\n        \"Username\": \"Nom Utilisateur\",\n        \"Factory Reset Scheduled\": \"Réglages d'Usine Planifiés\",\n        \"Connection Error\": \"Erreur Connexion\",\n        \"Offer Type\": \"Type d'Offre\",\n        \"Offer Name\": \"Nom de l'Offre\",\n        \"IPTV Mode\": \"Mode IPTV\",\n        \"WAN Status\": \"Statut WAN\",\n        \"Link Status\": \"Statut Lien\",\n        \"Link Type\": \"Type de Lien\",\n        \"Protocol\": \"Protocole\",\n        \"GPON State\": \"État GPON\",\n        \"Connection Status\": \"Statut Connexion\",\n        \"Last Connection Error\": \"Dernière Erreur Connexion\",\n        \"IP Address\": \"Adresse IP\",\n        \"Remote Gateway\": \"Passerelle\",\n        \"DNS Servers\": \"Serveurs DNS\",\n        \"IPv6 Address\": \"Adresse IPv6\",\n        \"IPv6 Prefix\": \"Préfixe IPv6\",\n        \"Last Connection\": \"Dernière Connexion\",\n        \"Max Down Bit Rate\": \"Débit Max Réception\",\n        \"Max Up Bit Rate\": \"Débit Max Transmission\",\n        \"DHCP Status\": \"Statut DHCP\",\n        \"Subnet Mask\": \"Masque Sous-Réseau\",\n        \"IP Routers\": \"Routeurs IP\",\n        \"DHCP Server\": \"Serveur DHCP\",\n        \"Renew\": \"Renouvellement\",\n        \"Authentication\": \"Authentification\",\n        \"Authentication Information\": \"Information Authentification\",\n        \"Connection Up Time\": \"Durée Connexion\",\n        \"Lease Time\": \"Durée Bail\",\n        \"Lease Time Remaining\": \"Durée Bail Restante\",\n        \"VLAN ID\": \"ID VLAN\",\n        \"Wifi Information\": \"Informations Wifi\",\n        \"Enabled\": \"Disponible\",\n        \"BGN User Bandwidth\": \"Bande Passante BGN\",\n        \"Scheduler Enabled\": \"Planificateur Actif\",\n        \"Radio Status\": \"Statut Radio\",\n        \"VAP Status\": \"Statut VAP\",\n        \"Vendor Name\": \"Nom Vendeur\",\n        \"SSID Advertisement\": \"Diffusion SSID\",\n        \"Security Mode\": \"Mode Sécurité\",\n        \"WEP Key\": \"Clé WEP\",\n        \"PreShared Key\": \"Clé Pré-partagée\",\n        \"Key Pass Phrase\": \"Mot de Passe\",\n        \"WPS Enabled\": \"WPS Actif\",\n        \"WPS Methods\": \"Méthodes WPS\",\n        \"WPS Self PIN\": \"PIN WPS\",\n        \"WPS Pairing In Progress\": \"Appairage WPS En Cours\",\n        \"MAC Filtering\": \"Filtrage MAC\",\n        \"Max Bitrate\": \"Débit Max\",\n        \"AP Mode\": \"Mode AP\",\n        \"STA Mode\": \"Mode STA\",\n        \"WDS Mode\": \"Mode WDS\",\n        \"WET Mode\": \"Mode WET\",\n        \"Frequency Band\": \"Fréquence\",\n        \"Channel Bandwidth\": \"Bande Passante Canal\",\n        \"Channel\": \"Canal\",\n        \"Auto Channel Supported\": \"Canal Auto Supporté\",\n        \"Auto Channel Enabled\": \"Canal Auto Activé\",\n        \"Channel Change Reason\": \"Raison Changement Canal\",\n        \"Max Associated Devices\": \"Appareils Associés Max\",\n        \"Active Associated Devices\": \"Appareils Associés Actifs\",\n        \"Noise\": \"Bruit\",\n        \"Antenna Defect\": \"Défaut Antenne\",\n        \"LAN Information\": \"Informations LAN\",\n        \"DHCPv4 Enabled\": \"DHCPv4 Actif\",\n        \"DHCPv4 Status\": \"Statut DHCPv4\",\n        \"DHCPv4 Gateway\": \"Passerelle DHCPv4\",\n        \"DHCPv4 Start\": \"Début DHCPv4\",\n        \"DHCPv4 End\": \"Fin DHCPv4\",\n        \"DHCPv4 Lease Time\": \"Durée Bail DHCPv4\",\n        \"DHCPv6 Status\": \"Statut DHCPv6\",\n        \"Current Bit Rate\": \"Débit\",\n        \"Max Bit Rate Supported\": \"Débit Max Supporté\",\n        \"Current Duplex Mode\": \"Mode Duplex\",\n        \"Power Saving Supported\": \"Économie Énergie Supportée\",\n        \"Power Saving Enabled\": \"Économie Énergie Activée\",\n        \"ONT Information\": \"Informations ONT\",\n        \"Signal RxPower\": \"Puissance Signal Réception\",\n        \"Signal TxPower\": \"Puissance Signal Transmission\",\n        \"Temperature\": \"Température\",\n        \"Equipment ID\": \"ID Équipement\",\n        \"Vendor ID\": \"ID Vendeur\",\n        \"Vendor Product Code\": \"Code Produit Vendeur\",\n        \"Connection Status\": \"Status de la connexion\",\n        \"SFP Status\": \"Status du SFP\",\n        \"Operating State\": \"État Opérationnel\",\n        \"Firmware 1 Version\": \"Version Firmware 1\",\n        \"Firmware 1 State\": \"État Firmware 1\",\n        \"Firmware 2 Version\": \"Version Firmware 2\",\n        \"Firmware 2 State\": \"État Firmware 2\",\n        \"ONT Software Version 0\": \"Version 0 Logiciel ONT\",\n        \"ONT Software Version 1\": \"Version 1 Logiciel ONT\",\n        \"ONT Software Version Active\": \"Version Active Logiciel ONT\",\n        \"ONU State\": \"État ONU\",\n        \"Current Down Bit Rate\": \"Débit Descendant Actuel\",\n        \"Current Up Bit Rate\": \"Débit Montant Actuel\",\n        \"VoIP Information\": \"Informations VoIP\",\n        \"VoIP Enabled\": \"VoIP Actif\",\n        \"{} Enabled\": \"{} Actif\",\n        \"{} Status\": \"{} Statut\",\n        \"{} Status Info\": \"{} Info Statut\",\n        \"{} Number\": \"{} Numéro\",\n        \"DECT Information\": \"Informations DECT\",\n        \"CAT-iq Version\": \"Version CAT-iq\",\n        \"Pairing Status\": \"Statut Appairage\",\n        \"Radio State\": \"État Radio\",\n        \"Repeater Status\": \"Statut Répéteur\",\n        \"IPTV Information\": \"Informations IPTV\",\n        \"IPTV Status\": \"Statut IPTV\",\n        \"Multi Screens Status\": \"Statut Multi Écrans\",\n        \"Available\": \"Disponible\",\n        \"Disabled\": \"Désactivé\",\n        \"IPTV Config\": \"Config IPTV\",\n        \"USB Information\": \"Informations USB\",\n        \"Inactive\": \"Inactif\",\n        \"Unknown USB\": \"USB Inconnu\",\n        \"USB Device Storage\": \"Appareil Stockage USB\",\n        \"Key\": \"Clé\",\n        \"Device Type\": \"Type Appareil\",\n        \"First Seen\": \"Première Connexion\",\n        \"File System\": \"Système Fichier\",\n        \"Capacity\": \"Capacité\",\n        \"Used Space\": \"Espace Utilisé\",\n        \"Names\": \"Noms\",\n        \"USB Device\": \"Appareil USB\",\n        \"Location\": \"Localisation\",\n        \"Owner\": \"Propriétaire\",\n        \"USB Version\": \"Version USB\",\n        \"Device Version\": \"Version Appareil\",\n        \"Product ID\": \"ID Produit\",\n        \"Rate\": \"Taux\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"Graph\": \"Graphe\",\n        \"Interfaces and devices to display\": \"Interfaces et appareils à afficher\",\n        \"Name\": \"Nom\",\n        \"Color\": \"Couleur\",\n        \"Add...\": \"Ajouter...\",\n        \"Delete\": \"Supprimer\",\n        \"Window:\": \"Fenêtre :\",\n        \"hours (0 = max)\": \"heures (0 = max)\",\n        \"Background color:\": \"Couleur de fond :\",\n        \"Apply\": \"Appliquer\",\n        \"Download\": \"Réception\",\n        \"Traffic (MB/s)\": \"Trafic (Mo/s)\",\n        \"Time\": \"Heure\",\n        \"Upload\": \"Émission\",\n        \"Loading configuration...\": \"Chargement de la configuration...\",\n        \"Plotting graphes...\": \"Tracer des graphiques...\",\n        \"Device\": \"Appareil\",\n        \"Select Export Folder\": \"Sélectionnez le dossier d'export\",\n        \"Exporting statistics...\": \"Export des statistiques...\"\n    },\n\n    # Add graph dialog\n    \"addgraph\": {\n        \"Type\": \"Type\",\n        \"Device\": \"Appareil\",\n        \"Object\": \"Objet\",\n        \"Color\": \"Couleur\",\n        \"ID:\": \"ID :\",\n        \"Measures number:\": \"Nombre de mesures :\",\n        \"History:\": \"Historique :\",\n        \"Cancel\": \"Annuler\",\n        \"Add a graph\": \"Ajouter un graphique\",\n        \"{:.1f} hours\": \"{:.1f} heures\"\n    },\n\n    # Device infos\n    \"dinfo\": {\n        \"Name\": \"Nom\",\n        \"Attribute\": \"Attribut\",\n        \"Value\": \"Valeur\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Assign Name...\": \"Assigner Nom...\",\n        \"Assign Type...\": \"Assigner Type...\",\n        \"Forget...\": \"Oublier...\",\n        \"Block\": \"Bloquer\",\n        \"Unblock\": \"Débloquer\",\n        \"Device Infos\": \"Infos Appareil\",\n        \"Loading device icons...\": \"Chargement des icônes...\",\n        \"Getting device information...\": \"Chargement des informations appareil...\",\n        \"Key\": \"Identifiant\",\n        \"Active\": \"Actif\",\n        \"Authenticated\": \"Authentifié\",\n        \"Blocked\": \"Bloqué\",\n        \"First connection\": \"Première Connexion\",\n        \"Last connection\": \"Dernière Connexion\",\n        \"Last changed\": \"Dernier Changement\",\n        \"Livebox Name\": \"Nom Livebox\",\n        \"DNS Name\": \"Nom DNS\",\n        \"IPv4 Address\": \"Adresse IPv4\",\n        \"IPv6 Address\": \"Adresse IPv6\",\n        \"Manufacturer\": \"Fabricant\",\n        \"Vendor ID\": \"ID Vendeur\",\n        \"Serial Number\": \"Numéro de Série\",\n        \"Product Class\": \"Class Produit\",\n        \"Model Name\": \"Nom Modèle\",\n        \"Software Version\": \"Version Logiciel\",\n        \"Hardware Version\": \"Version Matériel\",\n        \"DHCP Option 55\": \"Option 55 DHCP\",\n        \"Full Software Version\": \"Version Logiciel Complète\",\n        \"State\": \"État\",\n        \"Protocol\": \"Protocole\",\n        \"Current Mode\": \"Mode Actuel\",\n        \"Pairing Time\": \"Heure Appairage\",\n        \"Uplink Type\": \"Type Lien\",\n        \"Wifi Signal Strength\": \"Force Signal Wifi\",\n        \"Wifi Signal Noise Ratio\": \"Taux Bruit Signal Wifi\",\n        \"Encryption Mode\": \"Mode Encryption\",\n        \"Security Mode\": \"Mode Sécurité\",\n        \"Link Bandwidth\": \"Bande Passante Lien\",\n        \"Operating Standard\": \"Standard Opérationnel\",\n        \"Operating Band\": \"Bande Opérationnelle\",\n        \"Supported Standards\": \"Standards Supportés\",\n        \"Supports 2.4GHz\": \"Supporte 2.4GHz\",\n        \"Supports 5GHz\": \"Supporte 5GHz\",\n        \"Supports 6GHz\": \"Supporte 6GHz\"\n    },\n\n    # Device infos - Assign name dialog\n    \"dname\": {\n        \"Names for [{}] device:\": \"Noms pour l'appareil [{}] :\",\n        \"Local Name\": \"Nom Local\",\n        \"Livebox Name\": \"Nom Livebox\",\n        \"DNS Name\": \"Nom DNS\",\n        \"Cancel\": \"Annuler\",\n        \"Assign device names\": \"Assigner des noms à l'appareil\"\n    },\n\n    # Device infos - Assign type dialog\n    \"dtype\": {\n        \"Type for [{}] device:\": \"Type pour l'appareil [{}] :\",\n        \"Cancel\": \"Annuler\",\n        \"Assign a device type\": \"Assigner un type à l'appareil\"\n    },\n\n    # Events\n    \"events\": {\n        \"Name\": \"Nom\",\n        \"Time\": \"Heure\",\n        \"Reason\": \"Raison\",\n        \"Attributes\": \"Attributs\",\n        \"Display Event...\": \"Afficher Événement...\",\n        \"Events\": \"Événements\",\n        \"Event Entry\": \"Entrée Événement\",\n        \"### UNKNOWN ###\": \"### INCONNU ###\",\n        \"Added\": \"Ajouté\",\n        \"Deleted\": \"Supprimé\",\n        \"Connected\": \"Connecté\",\n        \"Disconnected\": \"Déconnecté\",\n        \"Access change\": \"Changement d'accès\",\n        \"Date:\": \"Date :\",\n        \"Time:\": \"Heure :\",\n        \"Device:\": \"Appareil :\",\n        \"MAC:\": \"MAC :\",\n        \"Event:\": \"Événement :\",\n        \"Access link:\": \"Accès :\",\n        \"Old access link:\": \"Ancien accès :\",\n        \"New access link:\": \"Nouvel accès :\"\n    },\n\n    # Event Notification Rules\n    \"evnrules\" : {\n        \"Device\": \"Appareil\",\n        \"Added\": \"Ajouté\",\n        \"Deleted\": \"Supprimé\",\n        \"Connected\": \"Connecté\",\n        \"Disconnected\": \"Déconnecté\",\n        \"Link Changed\": \"Point d'Accès\",\n        \"File\": \"Fichier CSV\",\n        \"Add\": \"Ajouter\",\n        \"Delete\": \"Supprimer\",\n        \"Any device\": \"Tout appareil\",\n        \"Any unknown device\": \"Tout appareil inconnu\",\n        \"MAC address\": \"Adresse MAC\",\n        \"Events:\": \"Événements :\",\n        \"Device Added\": \"Appareil Ajouté\",\n        \"Device Deleted\": \"Appareil Supprimé\",\n        \"Device Connected\": \"Appareil Connecté\",\n        \"Device Disconnected\": \"Appareil Déconnecté\",\n        \"Device Access Link Changed\": \"Changement Point d'Accès\",\n        \"Actions:\": \"Actions :\",\n        \"Log in CSV file\": \"Logger dans Fichier CSV\",\n        \"Send Email\": \"Envoyer Email\",\n        \"Rules\": \"Règles\",\n        \"Event Resolution Frequency\": \"Fréquence Résolution des Événements\",\n        \"seconds\": \"secondes\",\n        \"CSV Files Path\": \"Répertoire des Fichiers CSV\",\n        \"Select\": \"Sélectionner\",\n        \"Default\": \"Défaut\",\n        \"Preferences\": \"Préférences\",\n        \"Cancel\": \"Annuler\",\n        \"Notification Rules Setup\": \"Configuration des Règles de Notification\",\n        \"-Unknown-\": \"-Inconnu-\",\n        \"Select Folder\": \"Sélectionnez le répertoire\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"Name\": \"Nom\",\n        \"Domain\": \"Domaine\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Add...\": \"Ajouter...\",\n        \"Delete\": \"Supprimer\",\n        \"Attribute\": \"Attribut\",\n        \"Value\": \"Valeur\",\n        \"DHCP Setup...\": \"Réglages DHCP...\",\n        \"Getting DHCP bindings...\": \"Chargement des baux DHCP...\",\n        \"Getting DHCP information...\": \"Chargement des informations DHCP...\",\n        \"DHCP Home Information\": \"Informations DHCP Home\",\n        \"DHCPv4 Enabled\": \"DHCPv4 Actif\",\n        \"DHCPv4 Status\": \"Statut DHCPv4\",\n        \"DHCPv4 Gateway\": \"Passerelle DHCPv4\",\n        \"Subnet Mask\": \"Masque Sous-Réseau\",\n        \"DHCPv4 Start\": \"Début DHCPv4\",\n        \"DHCPv4 End\": \"Fin DHCPv4\",\n        \"DHCPv4 Lease Time\": \"Durée Bail DHCPv4\",\n        \"DNS Servers\": \"Serveurs DNS\",\n        \"DHCPv6 Status\": \"Statut DHCPv6\",\n        \"DHCPv6 Prefix\": \"Préfixe DHCPv6\",\n        \"DHCP Guest Information\": \"Informations DHCP Guest (Invité)\",\n        \"Status\": \"Statut\",\n        \"Lease Time\": \"Durée Bail\",\n        \"Lease Time Remaining\": \"Durée Bail Restante\",\n        \"Check Authentication\": \"Vérifier Authentification\",\n        \"Authentication Information\": \"Informations Authentification\",\n        \"DHCPv4 Sent Options\": \"Options DHCPv4 Envoyées\",\n        \"DHCPv4 Received Options\": \"Options DHCPv4 Reçues\",\n        \"Request Addresses\": \"Demander Adresses\",\n        \"Request Prefixes\": \"Demander Préfixes\",\n        \"Requested Options\": \"Options Demandées\",\n        \"DHCPv6 Sent Options\": \"Options DHCPv6 Envoyées\",\n        \"DHCPv6 Received Options\": \"Options DHCPv6 Reçues\"\n    },\n\n    # DHCP - Binding dialog\n    \"dbinding\": {\n        \"Device\": \"Appareil\",\n        \"MAC address\": \"Adresse MAC\",\n        \"Domain\": \"Domaine\",\n        \"IP address\": \"Adresse IP\",\n        \"Cancel\": \"Annuler\",\n        \"Add DHCP binding\": \"Ajouter un Bail DHCP\",\n        \"-Unknown-\": \"-Inconnu-\"\n    },\n\n    # DHCP - Setup dialog\n    \"dsetup\": {\n        \"DHCP Enabled\": \"DHCP Actif\",\n        \"Livebox IP address\": \"Adresse IP Livebox\",\n        \"Subnet mask\": \"Masque sous-réseau\",\n        \"DHCP start IP\": \"Début DHCP\",\n        \"DHCP end IP\": \"Fin DHCP\",\n        \"Cancel\": \"Annuler\",\n        \"DHCP Setup\": \"Réglages DHCP\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"Name\": \"Nom\",\n        \"Port Forwarding Rule Description\": \"Description Redirection de Port\",\n        \"Protocols\": \"Protocoles\",\n        \"Internal Port\": \"Port Interne\",\n        \"External Port\": \"Port Externe\",\n        \"Device\": \"Appareil\",\n        \"External IPs\": \"IPs Externes\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Add...\": \"Ajouter...\",\n        \"Edit...\": \"Modifier...\",\n        \"Delete\": \"Supprimer\",\n        \"Delete All...\": \"Tout Supprimer...\",\n        \"Protocol Forwarding Rule Description\": \"Description Redirection de Protocole\",\n        \"Disable\": \"Désactiver\",\n        \"Enable\": \"Activer\",\n        \"Saving rule...\": \"Sauvegarde de la règle...\",\n        \"Deleting rule...\": \"Suppression de la règle...\",\n        \"Deleting rules...\": \"Suppression des règles...\",\n        \"Export File\": \"Fichier d'export\",\n        \"Port Forwarding Rules\": \"Règles de Redirection de Port\",\n        \"Exporting port forwarding rules...\": \"Export des règles de redirection de port...\",\n        \"Select file to import\": \"Sélectionnez le fichier à importer\",\n        \"Importing port forwarding rules...\": \"Import des règles de redirection de port...\",\n        \"Protocol Forwarding Rules\": \"Règles de Redirection de Protocole\",\n        \"Exporting protocol forwarding rules...\": \"Export des règles de redirection de protocole...\",\n        \"Importing protocol forwarding rules...\": \"Import des règles de redirection de protocole...\",\n        \"Loading port forwarding rules...\": \"Chargement des règles de redirection de port...\",\n        \"All\": \"Toutes\",\n        \"Loading protocol forwarding rules...\": \"Chargement des règles de redirection de protocole...\"\n    },\n\n    # NAT/PAT - PAT rule dialog\n    \"patrule\": {\n        \"Enabled\": \"Active\",\n        \"Type\": \"Type\",\n        \"Name\": \"Nom\",\n        \"Description\": \"Description\",\n        \"Protocols\": \"Protocoles\",\n        \"Internal Port\": \"Port Interne\",\n        \"External Port\": \"Port Externe\",\n        \"Device\": \"Appareil\",\n        \"IP Address\": \"Adresse IP\",\n        \"External IPs\": \"IPs Externes\",\n        \"Cancel\": \"Annuler\",\n        \"Port Forwarding Rule\": \"Règle de Redirection de Port\",\n        \"-Unknown-\": \"-Inconnu-\"\n    },\n\n    # NAT/PAT - PTF rule dialog\n    \"ptfrule\": {\n        \"Enabled\": \"Active\",\n        \"Type\": \"Type\",\n        \"Name\": \"Nom\",\n        \"Description\": \"Description\",\n        \"Protocols\": \"Protocoles\",\n        \"Device\": \"Appareil\",\n        \"IP Address\": \"Adresse IP\",\n        \"External IPs\": \"IPs Externes\",\n        \"Cancel\": \"Annuler\",\n        \"Protocol Forwarding Rule\": \"Règle de Redirection de Protocole\",\n        \"-Unknown-\": \"-Inconnu-\"\n    },\n\n    # NAT/PAT - rule type selection dialog\n    \"nprtype\": {\n        \"Cancel\": \"Annuler\",\n        \"Select rule types\": \"Sélectionnez les types de règle\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"Time\": \"Heure\",\n        \"Number\": \"Numéro\",\n        \"Duration\": \"Durée\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Delete\": \"Supprimer\",\n        \"Delete All...\": \"Tout Supprimer...\",\n        \"Spams scan\": \"Scanner spams\",\n        \"Spam sites\": \"Sites spam\",\n        \"Set as spam\": \"Marquer spam\",\n        \"Unset as spam\": \"Retirer spam\",\n        \"Name\": \"Nom\",\n        \"Mobile\": \"Portable\",\n        \"Home\": \"Domicile\",\n        \"Work\": \"Travail\",\n        \"Ring\": \"Sonnerie\",\n        \"Add...\": \"Ajouter...\",\n        \"Edit...\": \"Modifier...\",\n        \"Phone Ring\": \"Sonnerie\",\n        \"Phone\": \"Téléphone\",\n        \"Loading phone call list...\": \"Chargement des appels téléphoniques...\",\n        \"Export File\": \"Fichier d'export\",\n        \"Livebox Contacts\": \"Contacts Livebox\",\n        \"Exporting all contacts...\": \"Export de tous les contacts...\",\n        \"Select files to import\": \"Sélectionnez les fichiers à importer\",\n        \"Importing contacts...\": \"Import des contacts...\",\n        \"Cannot import file(s): \": \"Impossible d'importer le(s) fichier(s) : \",\n        \"Loading contact list...\": \"Chargement des contacts...\",\n        \"Deleting phone call list...\": \"Suppression de tous les appels téléphoniques...\",\n        \"Deleting contact list...\": \"Suppression de tous les contacts...\"\n    },\n\n    # Phone - Contact edit\n    \"pcontact\": {\n        \"First name\": \"Prénom\",\n        \"Name\": \"Nom\",\n        \"Mobile\": \"Portable\",\n        \"Home\": \"Domicile\",\n        \"Work\": \"Travail\",\n        \"Ring tone\": \"Sonnerie\",\n        \"Cancel\": \"Annuler\",\n        \"Contact edition\": \"Modification d'un contact\",\n        \"Contact creation\": \"Création d'un contact\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"Guest...\": \"Invité...\",\n        \"Guest ON\": \"Invité ON\",\n        \"Guest OFF\": \"Invité OFF\",\n        \"Wifi Scheduler ON\": \"Planificateur Wifi ON\",\n        \"Wifi Scheduler OFF\": \"Planificateur Wifi OFF\",\n        \"Show Global Status...\": \"État Global Wifi...\",\n        \"Backup and Restore...\": \"Sauvegarde et Restauration...\",\n        \"LEDs and Screen...\": \"LEDs et Écran...\",\n        \"Miscellaneous\": \"Divers\",\n        \"Reboot Livebox...\": \"Redémarrer la Livebox...\",\n        \"Factory Reset Livebox...\": \"Réinitialiser la Livebox...\",\n        \"Reboot History...\": \"Historique Redémarrages...\",\n        \"Reboots\": \"Redémarrages\",\n        \"Firewall Levels...\": \"Niveaux de pare-feu...\",\n        \"Ping Responses...\": \"Réponses aux pings...\",\n        \"Routing Table...\": \"Table de routage...\",\n        \"Network\": \"Réseau\",\n        \"An Open Source project\": \"Un projet Open Source\",\n        \"About\": \"À propos\",\n        \"Preferences...\": \"Préférences...\",\n        \"Change Profile...\": \"Changer de profil...\",\n        \"Email Setup...\": \"Réglages Email...\",\n        \"Setup\": \"Réglages\",\n        \"Set Log Level...\": \"Niveau de log...\",\n        \"Call APIs...\": \"Appel APIs...\",\n        \"Generate API Documentation...\": \"Générer documentation APIs...\",\n        \"Debug\": \"Débogage\",\n        \"Quit Application\": \"Quitter l'application\",\n        \"Getting Wifi Configuration...\": \"Chargement de la configuration Wifi...\",\n        \"Setting Wifi Configuration...\": \"Configuration du réseau Wifi...\",\n        \"Getting Guest Wifi Configuration...\": \"Chargement de la configuration Wifi Invité...\",\n        \"Setting Guest Wifi Configuration...\": \"Configuration du réseau Wifi Invité...\",\n        \"Getting Wifi Global Status...\": \"Chargement de l'état global du Wifi...\",\n        \"Getting Reboot History...\": \"Chargement de l'historique de redémarrages...\",\n        \"Setting LEDs & Screen Setup...\": \"Changement des réglages des LEDs et de l'écran...\",\n        \"Setting Firewall Levels...\": \"Changement des niveaux de pare-feu...\",\n        \"Set Ping Responses...\": \"Changement des réponses aux pings...\",\n        \"Log level selection\": \"Niveau de log\",\n        \"Please select a log level:\": \"Sélectionnez un niveau de log :\",\n        \"Select Export Folder\": \"Sélectionnez le dossier d'export\",\n        \"Generating API document files...\": \"Génération des fichiers de documentation des APIs...\",\n        \"Activating Wifi...\": \"Activation du Wifi...\",\n        \"Deactivating Wifi...\": \"Désactivation du Wifi...\",\n        \"Activating Guest Wifi...\": \"Activation du Wifi Invité...\",\n        \"Deactivating Guest Wifi...\": \"Désactivation du Wifi Invité...\",\n        \"Activating Wifi Scheduler...\": \"Activation du Planificateur Wifi...\",\n        \"Deactivating Wifi Scheduler...\": \"Désactivation du Planificateur Wifi...\",\n        \"Rebooting Livebox...\": \"Redémarrage de la Livebox...\",\n        \"Reseting Livebox...\": \"Réinitialisation de la Livebox...\"\n    },\n\n    # Actions - Reboot history\n    \"rhistory\": {\n        \"Boot Date\": \"Date Redémarrage\",\n        \"Boot Reason\": \"Raison Redémarrage\",\n        \"Shutdown Date\": \"Date Arrêt\",\n        \"Shutdown Reason\": \"Raison Arrêt\",\n        \"{} Reboot History\": \"Historique Redémarrages {}\",\n        \"Unknown\": \"Inconnu\"\n    },\n\n    # Actions - Wifi configuration\n    \"wconfig\": {\n        \"Enabled\": \"Activé\",\n        \"Duration\": \"Durée\",\n        \"hours (0 = unlimited).\": \"heures (0 = illimitée).\",\n        \"Radio Band\": \"Bande Radio\",\n        \"SSID Broadcast\": \"Diffuser SSID\",\n        \"MAC Filtering\": \"Filtrage MAC\",\n        \"Devices\": \"Appareils\",\n        \"Security\": \"Sécurité\",\n        \"Password\": \"Mot de passe\",\n        \"Channel\": \"Canal\",\n        \"Bandwidth\": \"Largeur de bande\",\n        \"Cancel\": \"Annuler\",\n        \"Guest Wifi Configuration\": \"Configuration du Wifi Invité\",\n        \"Wifi Configuration\": \"Configuration du Wifi\",\n        \"Enabled for {}\": \"Activé pour {}\",\n        \"Add...\": \"Ajouter...\",\n        \"Enter MAC address to filter:\": \"Entrez une adresse MAC à filter:\",\n        \"Already in the list: {}\": \"Déjà dans la liste : {}\",\n        \"Invalid MAC address: {}\": \"Adresse MAC invalide : {}\"\n    },\n\n    # Actions - Wifi global status\n    \"wglobal\": {\n        \"Wifi Global Status\": \"État Global Wifi\",\n        \"{} Enabled\": \"{} Disponible\",\n        \"{} Active\": \"{} Actif\",\n        \"Wifi Scheduler\": \"Planificateur Wifi\",\n        \"Guest 2.4GHz\": \"Invité 2.4GHz\",\n        \"Guest 5GHz\": \"Invité 5GHz\",\n        \"Error\": \"Erreur\",\n        \"Inactive\": \"Inactif\",\n        \"Not signed\": \"Non authentifié\"\n    },\n\n    # Actions - Backup & Restore\n    \"backrest\": {\n        \"Auto backup enabled:\": \"Sauvegarde automatique activée :\",\n        \"Status:\": \"Statut :\",\n        \"Last Backup:\": \"Dernière Sauvegarde :\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Enable Auto Backup\": \"Activer Sauvegarde Automatique\",\n        \"Disable Auto Backup\": \"Désactiver Sauvegarde Automatique\",\n        \"Force Backup\": \"Forcer Sauvegarde\",\n        \"Force Restore\": \"Forcer Restauration\",\n        \"Backup and Restore Setup\": \"Réglages Sauvegarde et Restauration\"\n    },\n\n    # Actions - Screen & LEDs\n    \"screen\" : {\n        \"LED Brightness\": \"Luminosité LED\",\n        \"Show Wifi Password\": \"Afficher le mot de passe Wifi sur l'écran\",\n        \"Cancel\": \"Annuler\",\n        \"LEDs & Screen Setup\": \"Réglages LEDs & Écran\"\n    },\n\n    # Actions - Firewall level\n    \"fwlevel\": {\n        \"IPv4 Firewall Level\": \"Niveau du pare-feu IPv4\",\n        \"IPv6 Firewall Level\": \"Niveau du pare-feu IPv6\",\n        \"High\": \"Élevé\",\n        \"Medium\": \"Moyen\",\n        \"Low\": \"Faible\",\n        \"Custom\": \"Personnalisé\",\n        \"Cancel\": \"Annuler\",\n        \"Firewall Levels\": \"Niveaux des pares-feux\"\n    },\n\n    # Actions - Ping Response\n    \"pingr\": {\n        \"Respond to IPv4 ping\": \"Répondre au ping IPv4\",\n        \"Respond to IPv6 ping\": \"Répondre au ping IPv6\",\n        \"Cancel\": \"Annuler\",\n        \"Ping Responses\": \"Réponses aux pings\"\n    },\n\n    # Actions - DynDNS\n    \"dyndns\": {\n        \"Host Name\": \"Nom de domaine\",\n        \"User Email\": \"Email utilisateur\",\n        \"Password\": \"Mot de passe\",\n        \"Last Update\": \"Mise à jour\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Delete\": \"Supprimer\",\n        \"Hosts\": \"Domaines\",\n        \"Add\": \"Ajouter\",\n        \"Add Host\": \"Ajouter Domaine\",\n        \"Loading DynDNS hosts...\": \"Chargement des domaines DynDNS...\",\n        \"Show Passwords\": \"Montrer mots de passe\",\n        \"Hide Passwords\": \"Cacher mots de passe\",\n        \"Disable All\": \"Tout Désactiver\",\n        \"Enable All\": \"Tout Activer\"\n    },\n\n    # Actions - DMZ\n    \"dmz\": {\n        \"Device\": \"Appareil\",\n        \"External IPs\": \"IPs Externes\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Delete\": \"Supprimer\",\n        \"DMZ Devices\": \"Appareils dans la DMZ\",\n        \"IP Address\": \"Adresse IP\",\n        \"Add\": \"Ajouter\",\n        \"Add DMZ\": \"Ajouter dans la DMZ\",\n        \"Loading DMZ devices...\": \"Chargement des appareils dans la DMZ...\",\n        \"All\": \"Toutes\",\n        \"-Unknown-\": \"-Inconnu-\"\n    },\n\n    # Actions - Routing\n    \"routing\": {\n        \"Destination Network\": \"Réseau de destination\",\n        \"Mask\": \"Masque\",\n        \"Gateway\": \"Passerelle\",\n        \"Priority\": \"Métrique\",\n        \"Status\": \"Statut\",\n        \"Refresh\": \"Rafraîchir\",\n        \"Enable\": \"Activer\",\n        \"Disable\": \"Désactiver\",\n        \"Delete\": \"Supprimer\",\n        \"Rules\": \"Routes\",\n        \"Destination network\": \"Réseau de destination\",\n        \"Destination mask\": \"Masque de destination\",\n        \"Add\": \"Ajouter\",\n        \"Edit\": \"Modifier\",\n        \"Enabled\": \"Activé\",\n        \"Add/Edit Rule\": \"Ajouter/Modifier Route\",\n        \"Routing Table\": \"Table de routage\",\n        \"Loading Routing Table Rules...\": \"Chargement de la table de routage...\"\n    },\n\n    # Actions - Call API - no translation required\n    \"callapi\": {},\n\n    # Repeater\n    \"repeater\": {\n        \"Name\": \"Nom\",\n        \"RxRate\": \"TauxRx\",\n        \"TxRate\": \"TauxTx\",\n        \"Wifi Scheduler ON\": \"Planificateur Wifi ON\",\n        \"Wifi Scheduler OFF\": \"Planificateur Wifi OFF\",\n        \"Reboot Repeater...\": \"Redémarrer le Répéteur...\",\n        \"Reset Repeater...\": \"Réinitialiser le Répéteur...\",\n        \"Reboot History...\": \"Historique Redémarrages...\",\n        \"Call APIs...\": \"Appel APIs...\",\n        \"Resign...\": \"Réauthentifier...\",\n        \"Attribute\": \"Attribut\",\n        \"Value\": \"Valeur\",\n        \"Repeater Infos\": \"Informations Répéteur\",\n        \"Wifi Infos\": \"Informations Wifi\",\n        \"LAN Infos\": \"Informations LAN\",\n        \"Signing in to repeaters...\": \"Authentification Répéteurs...\",\n        \"Wrong repeater password\": \"Mauvais mot de passe répéteur\",\n        \"Please enter password for repeater {0} ({1}):\": \"Mot de passe pour le répéteur {0} ({1}) :\",\n        \"Getting repeater information...\": \"Chargement des informations du répéteur...\",\n        \"Getting Wifi information...\": \"Chargement des informations Wifi...\",\n        \"Getting LAN information...\": \"Chargement des informations LAN...\",\n        \"Save File\": \"Enregistrer le fichier\",\n        \"{} Infos.txt\": \"Infos {}.txt\",\n        \"Exporting all information...\": \"Export de toutes les informations...\",\n        \"Repeater Information\": \"Informations Répéteurs\",\n        \"Model Name\": \"Nom Modèle\",\n        \"Repeater Up Time\": \"Temps Fonctionnement\",\n        \"Serial Number\": \"Numéro de série\",\n        \"Hardware Version\": \"Version Matériel\",\n        \"Software Version\": \"Version Logiciel\",\n        \"Orange Firmware Version\": \"Version Firmware Orange\",\n        \"Country\": \"Pays\",\n        \"Total Number Of Reboots\": \"Nb Total de Redémarrages\",\n        \"Time\": \"Heure\",\n        \"Wifi Information\": \"Informations Wifi\",\n        \"Enabled\": \"Disponible\",\n        \"Active\": \"Actif\",\n        \"WPS Mode\": \"Mode WPS\",\n        \"Link Type\": \"Type Lien\",\n        \"Read Only\": \"Lecture Seule\",\n        \"Pairing Status\": \"Statut Appairage\",\n        \"PIN Code\": \"Code PIN\",\n        \"Scheduler Enabled\": \"Planificateur Actif\",\n        \"Radio Status\": \"Statut Radio\",\n        \"VAP Status\": \"Statut VAP\",\n        \"Vendor Name\": \"Nom Vendeur\",\n        \"MAC Address\": \"Adresse MAC\",\n        \"SSID Advertisement\": \"Diffusion SSID\",\n        \"Security Mode\": \"Mode Sécurité\",\n        \"WEP Key\": \"Clé WEP\",\n        \"PreShared Key\": \"Clé Pré-partagée\",\n        \"Key Pass Phrase\": \"Mot de Passe\",\n        \"WPS Enabled\": \"WPS Actif\",\n        \"WPS Methods\": \"Méthodes WPS\",\n        \"WPS Self PIN\": \"PIN WPS\",\n        \"WPS Pairing In Progress\": \"Appairage WPS En Cours\",\n        \"MAC Filtering\": \"Filtrage MAC\",\n        \"Max Bitrate\": \"Débit Max\",\n        \"AP Mode\": \"Mode AP\",\n        \"STA Mode\": \"Mode STA\",\n        \"WDS Mode\": \"Mode WDS\",\n        \"WET Mode\": \"Mode WET\",\n        \"Frequency Band\": \"Fréquence\",\n        \"Channel Bandwidth\": \"Bande Passante Canal\",\n        \"Channel\": \"Canal\",\n        \"Auto Channel Supported\": \"Canal Auto Supporté\",\n        \"Auto Channel Enabled\": \"Canal Auto Activé\",\n        \"Channel Change Reason\": \"Raison Changement Canal\",\n        \"Max Associated Devices\": \"Appareils Associés Max\",\n        \"Active Associated Devices\": \"Appareils Associés Actifs\",\n        \"Noise\": \"Bruit\",\n        \"Antenna Defect\": \"Défaut Antenne\",\n        \"LAN Information\": \"Informations LAN\",\n        \"Link Status\": \"Statut Lien\",\n        \"Protocol\": \"Protocole\",\n        \"Connection Status\": \"Statut Connexion\",\n        \"Last Connection Error\": \"Dernière Erreur Connexion\",\n        \"IP Address\": \"Adresse IP\",\n        \"Remote Gateway\": \"Passerelle\",\n        \"DNS Servers\": \"Serveurs DNS\",\n        \"IPv6 Address\": \"Adresse IPv6\",\n        \"Link to the Livebox\": \"Lien à la Livebox\",\n        \"Livebox link Infos\": \"Infos Lien Livebox\",\n        \"Current Bit Rate\": \"Débit\",\n        \"Max Bit Rate Supported\": \"Débit Max Supporté\",\n        \"Current Duplex Mode\": \"Mode Duplex\",\n        \"Power Saving Supported\": \"Économie Énergie Supportée\",\n        \"Power Saving Enabled\": \"Économie Énergie Activée\",\n        \"Activating Repeater Wifi...\": \"Activation du Wifi du répéteur...\",\n        \"Deactivating Repeater Wifi...\": \"Désactivation du Wifi du répéteur...\",\n        \"Activating Repeater Scheduler...\": \"Activation du Planificateur Wifi du répéteur...\",\n        \"Deactivating Repeater Scheduler...\": \"Désactivation du Planificateur Wifi du répéteur...\",\n        \"Rebooting Repeater...\": \"Redémarrage du répéteur...\",\n        \"Reseting Repeater...\": \"Réinitialisation du répéteur...\",\n        \"Getting Reboot History...\": \"Chargement de l'historique de redémarrages...\",\n        \"Signing in to repeater...\": \"Authentification au répéteur...\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"Status:\": \"Statut :\",\n        \"Type:\": \"Type :\",\n        \"State:\": \"État :\",\n        \"Status\": \"Statut\",\n        \"Vendor:\": \"Vendeur :\",\n        \"Model:\": \"Modèle :\",\n        \"MAC:\": \"MAC :\",\n        \"IP:\": \"IP :\",\n        \"Name:\": \"Nom :\",\n        \"Maker:\": \"Manuf :\",\n        \"Model:\": \"Modèle :\",\n        \"ID:\": \"ID :\",\n        \"Reset Cache\": \"Recréer Cache\",\n        \"Number:\": \"Numéro :\",\n        \"EPG:\": \"EPG :\",\n        \"Channel\": \"Chaîne\",\n        \"Go\": \"Changer\",\n        \"Set Channel\": \"Changer Chaîne\",\n        \"Remote Control\": \"Télécommande\",\n        \"Getting Channel Information...\": \"Chargement des informations sur les chaînes...\",\n        \"Error\": \"Erreur\"\n    },\n\n    # Config - Preferences\n    \"prefs\": {\n        \"Main\": \"Principal\",\n        \"Add\": \"Ajouter\",\n        \"Delete\": \"Supprimer\",\n        \"Name\": \"Nom\",\n        \"Livebox URL\": \"URL Livebox\",\n        \"Livebox User\": \"Utilisateur\",\n        \"Filter Devices\": \"Filtrage Appareils\",\n        \"Display Only Active Devices\": \"Afficher Appareils Actifs Uniquement\",\n        \"MacAddr Table File\": \"Fichier Table MacAddr\",\n        \"Default\": \"Défaut\",\n        \"Profiles\": \"Profils\",\n        \"Language\": \"Langage\",\n        \"Stats Frequency\": \"Fréquence Stats\",\n        \"macaddress.io API Key\": \"API Key macaddress.io\",\n        \"CallFilter API Key\": \"API Key CallFilter\",\n        \"Intl Phone Code\": \"Indicatif Téléphonique\",\n        \"List Header Height\": \"Hauteur Entêtes\",\n        \"List Header Font Size\": \"Taille Police Entêtes\",\n        \"List Line Height\": \"Hauteur Lignes\",\n        \"List Line Font Size\": \"Taille Police Lignes\",\n        \"Timeout Margin\": \"Marge Timeout\",\n        \"CSV Delimiter\": \"Séparateur CSV\",\n        \"Realtime wifi device statistics\": \"Statistiques temps réel des appareils wifi\",\n        \"Prevent sleep mode\": \"Empêcher la mise en veille\",\n        \"Use native graphical interface style\": \"Utiliser le style d'interface graphique natif\",\n        \"Save passwords\": \"Sauver les mots de passe\",\n        \"Preferences\": \"Préférences\",\n        \"Cancel\": \"Annuler\",\n        \"Create Profile\": \"Créer un profil\",\n        \"Profile name:\": \"Nom du profil :\"\n    },\n\n    # Config - Connection\n    \"cnx\": {\n        \"Cannot connect to the Livebox.\": \"Impossible de se connecter à la Livebox.\",\n        \"It might be unreachable, in that case just wait.\": \"Peut-être temporaire, dans ce cas juste attendre.\",\n        \"Otherwise, try {0}, {1} or {2}.\": \"Sinon, essayer {0}, {1} ou {2}.\",\n        \"Livebox URL\": \"URL Livebox\",\n        \"Cancel\": \"Annuler\",\n        \"Livebox connection\": \"Connexion Livebox\"\n    },\n\n    # Config - Signin\n    \"signin\": {\n        \"User\": \"Utilisateur\",\n        \"Password\": \"Mot de passe\",\n        \"Save passwords\" : \"Sauver les mots de passe\",\n        \"Cancel\": \"Annuler\",\n        \"Enter password\": \"Entrez le mot de passe\"\n    },\n\n    # Config - email\n    \"email\": {\n        \"From Address\": \"Adresse Origine\",\n        \"To Address\": \"Adresse Destination\",\n        \"Subject Prefix\": \"Préfixe Sujet\",\n        \"SMTP Server\": \"Serveur SMTP\",\n        \"Use STARTTLS\": \"Utiliser STARTTLS\",\n        \"Use TLS\": \"Utiliser TLS\",\n        \"Authentication\": \"Authentification\",\n        \"User\": \"Utilisateur\",\n        \"Password\": \"Mot de passe\",\n        \"Test Sending\": \"Test Envoi\",\n        \"Cancel\": \"Annuler\",\n        \"Email Setup\": \"Réglages Email\",\n        \"Sending test email...\": \"Envoi email de test...\",\n        \"Test Message\": \"Message de test\",\n        \"This is a test email from LiveboxMonitor.\": \"Ceci est un email de test envoyé par LiveboxMonitor.\"     \n    },\n\n    # Config - Select profile\n    \"sprofile\": {\n        \"Profile selection\": \"Sélection d'un profil\",\n        \"Please select a profile to use:\": \"Sélectionnez un profil :\",\n        \"Associated Livebox MAC:\": \"MAC Livebox associée :\",\n        \"Detected Livebox MAC:\": \"MAC Livebox détectée :\",\n        \"New Profile...\": \"Nouveau Profil...\",\n        \"Cancel\": \"Annuler\",\n        \"<None>\": \"<Aucune>\",\n        \"No Livebox detected at profile's URL.\": \"Aucune Livebox détectée à l'URL du profil.\",\n        \"Detected MAC will be associated to this profile.\": \"La Livebox détectée sera associée à ce profil.\",\n        \"Warning: another Livebox is associated to this profile.\": \"Attention : une autre Livebox est déjà associée à ce profil.\"\n    },\n\n    # Config - Release warning\n    \"rwarn\": {\n        \"New release {0} has been published.\": \"Une nouvelle version {0} a été publiée.\",\n        \"You are using release {0}.\": \"Vous utilisez la version {0}.\",\n        \"Don't warn me again\": \"Ne plus m'avertir\",\n        \"You are not using the latest release\": \"Vous n'utilisez pas la dernière version\"\n    },\n\n    # Tools\n    \"tools\": {\n        \"Error\": \"Erreur\",\n        \"Status\": \"Statut\",\n        \"Please confirm\": \"Confirmez\",\n        \"True\": \"Vrai\",\n        \"False\": \"Faux\"\n    }\n}\n\n\n\n# ################################ TOOLTIPS ################################\n\nTOOLTIPS = {\n    # Main window\n    \"main\": {\n        \"deviceListTab\": \"Gérer la liste des appareils.\",\n        \"liveboxInfoTab\": \"Informations détaillées sur la Livebox et statistiques de trafic.\",\n        \"graphTab\": \"Courbes de trafic par interface et par appareil.\",\n        \"deviceInfoTab\": \"Informations détaillées et réglages pour chaque appareil.\",\n        \"eventsTab\": \"Journal d'événements pour chaque appareil.\",\n        \"dhcpTab\": \"Informations détaillées et réglages DHCP.\",\n        \"natPatTab\": \"Réglages de redirection de ports et de protocoles.\",\n        \"phoneTab\": \"Gérer les appels téléphoniques et la liste des contacts.\",\n        \"actionTab\": \"Actions variées, préférences et informations sur l'application.\",\n        \"repeaterTab\": \"Informations détaillées sur le répéteur Wifi et statistiques de trafic.\\n\"\n                       \"État de la connexion avec le répéteur :\\n\"\n                       \"- Croix rouge : le répéteur est inactif ou n'a pas d'adresse IP attribuée.\\n\"\n                       \"- Rouge barré : le répéteur est actif mais aucune session n'est ouverte.\\n\"\n                       \"Si cet état subsiste vous pouvez essayer de forcer la création d'une session en cliquant sur le bouton \\\"Réauthentifier...\\\".\\n\"\n                       \"- Vert : le répéteur est actif et une session a été créée pour communiquer avec lui.\",\n        \"tvdecoderTab\": \"Gérer le décodeur TV.\\n\"\n                        \"État de la connexion avec le décodeur :\\n\"\n                        \"- Croix rouge : le décodeur est inactif ou n'a pas d'adresse IP attribuée.\\n\"\n                        \"- Vert : le décodeur est actif.\"\n    },\n\n    # Export table dialog\n    \"export_table\": {\n        \"exportHeaderCheckbox\": \"Permet de choisir d'exporter les titres de colonnes ou non.\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"dlist_Type\": \"Icône correspondant au type de l'appareil.\\n\"\n                      \"Ce type peut être attribué ou changé via le bouton \\\"Assigner Type...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"dlist_Name\": \"Nom local de l'appareil.\\n\"\n                      \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\\n\"\n                      \"Il est normal que lors du premier lancement de l'application tous les appareils soient indiqués comme INCONNUS.\",\n        \"dlist_LBName\": \"Nom de l'appareil tel que paramétré dans la Livebox et visible dans l'interface Web de la Livebox.\\n\"\n                        \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"dlist_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"dlist_IP\": \"Adresse IP v4 de l'appareil sur le LAN.\\n\"\n                    \"Cette adresse s'affiche en caractères gras si cette adresse est réservée pour cet appareil\\n\"\n                    \"dans la configuration DHCP de la Livebox.\\n\"\n                    \"Et elle s'affiche en rouge si l'adresse n'est pas atteignable sur le réseau (unreacheable),\\n\"\n                    \"typiquement lorsque l'appareil n'est pas actif.\",\n        \"dlist_Link\": \"Point d'accès de l'appareil sur le réseau.\\nD'abord le nom de l'appareil, c'est-à-dire la Livebox elle-même ou le nom d'un des répéteurs\\n\"\n                      \"Wifi Orange connectés, et ensuite l'interface sur cet appareil.\\n\"\n                      \"\\\"Eth\\\" signifie une des prises Ethernet suivi du numéro de prise.\\n\"\n                      \"\\\"Wifi\\\" signifie une connexion Wifi suivi par la bande de connexion.\",\n        \"dlist_Active\": \"Indique par une icône si l'appareil est actif ou non.\\n\"\n                        \"Par défaut la liste est triée pour montrer d'abord les appareils actifs.\",\n        \"dlist_Wifi\": \"Qualité de la connexion Wifi.\",\n        \"dlist_Event\": \"Indique par une icône lorsqu'un événement est reçu pour cet appareil.\\n\"\n                       \"La liste détaillée des événements, ainsi que le contenu des événements eux-mêmes,\\n\"\n                       \"peuvent être consultés via l'onglet \\\"Événements\\\".\",\n        \"dlist_Rx\": \"Nombre d'octets reçus par l'appareil depuis le dernier démarrage de la Livebox.\",\n        \"dlist_Tx\": \"Nombre d'octets envoyés par l'appareil depuis le dernier démarrage de la Livebox.\",\n        \"dlist_RxRate\": \"Taux d'octets reçus par seconde par l'appareil dans les dernières 30 secondes si affiché en noir,\\n\"\n                        \"dans les trois dernières secondes si affiché en bleu (fréquence réglable dans les préférences).\",\n        \"dlist_TxRate\": \"Taux d'octets envoyés par seconde par l'appareil dans les dernières 30 secondes si affiché en noir,\\n\"\n                        \"dans les trois dernières secondes si affiché en bleu (fréquence réglable dans les préférences).\",\n        \"refresh\": \"Force le rafraîchissement de la liste des appareils, dans cet onglet mais aussi dans les onglets \\\"Infos Appareil\\\" et \\\"Événements\\\".\\n\"\n                   \"Utile par exemple si le programme est actif alors que l'ordinateur sort de veille : des événements ayant probablement\\n\"\n                   \"été raté par le programme, un rafraîchissement permettra de retrouver une vue à jour.\",\n        \"assignNames\": \"Assigne à tous les appareils inconnus un nom local équivalent à celui connu de la Livebox.\",\n        \"deviceInfo\": \"Bascule dans l'onglet \\\"Infos Appareil\\\" pour l'appareil sélectionné afin de voir directement ses informations.\",\n        \"deviceEvents\": \"Bascule dans l'onglet \\\"Événements\\\" pour l'appareil sélectionné afin de voir directement les événements reçus le concernant.\",\n        \"ipv6\": \"Permet d'avoir le statut d'activation de l'IPv6, l'adresse IPv6 de la Livebox ainsi que son préfixe,\\n\"\n                \"et la liste des appareils connectés ou non ayant une ou plusieurs IPv6 assignées.\\n\"\n                \"Permet également de visualiser le mode de connexion et de contrôler le réglage CGNat.\",\n        \"dns\": \"Permet d'avoir la liste des noms DNS assignés aux appareils.\"\n    },\n\n    # Device list - IPv6 dialog\n    \"ipv6\": {\n        \"ipv6_Name\": \"Nom local de l'appareil.\\n\"\n                     \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"ipv6_LBName\": \"Nom de l'appareil tel que paramétré dans la Livebox et visible dans l'interface Web de la Livebox.\\n\"\n                       \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"ipv6_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"ipv6_Active\": \"Indique par une icône si l'appareil est actif ou non.\",\n        \"ipv6_IPv4\": \"Adresse IPv4 de l'appareil sur le LAN.\\n\"\n                     \"Cette adresse s'affiche en caractères gras si cette adresse est réservée pour cet appareil\\n\"\n                     \"dans la configuration DHCP de la Livebox.\\n\"\n                     \"Et elle s'affiche en rouge si l'adresse n'est pas atteignable sur le réseau (unreacheable),\\n\"\n                     \"typiquement lorsque l'appareil n'est pas actif.\",\n        \"ipv6_IPv6\": \"Adresse(s) IPv6 de l'appareil sur le LAN.\",\n        \"ipv6_Prefix\": \"Préfixe(s) IPv6 attribué(s) à l'appareil par le serveur DHCPv6 de la Livebox.\",\n        \"ipv6Enabled\": \"Indique par une icône si la connectivité IPv6 est active ou non.\",\n        \"cgNat\": \"Si le mode CGNat est actif il est possible que l’adresse IPv4 publique que vous utilisez\\n\"\n                 \"pour naviguer sur Internet soit mutualisée au sein du réseau d’Orange.\",\n        \"ipv6Mode\": \"Mode de connexion.\",\n        \"addr\": \"Adresse IPv6 de la Livebox.\",\n        \"prefix\": \"Préfixe IPv6 de la Livebox.\",\n        \"gateway\": \"Passerelle IPv6 de la Livebox.\",\n        \"cgNatButton\": \"Permet d'activer ou de désactiver le mode CGNat, c'est à dire la\\n\"\n                       \"mutualisation de l'adresse IPv4 avec d'autres utilisateurs.\"\n    },\n\n    # Device list - DNS dialog\n    \"dns\": {\n        \"dns_Name\": \"Nom local de l'appareil.\\n\"\n                    \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"dns_LBName\": \"Nom de l'appareil tel que paramétré dans la Livebox et visible dans l'interface Web de la Livebox.\\n\"\n                      \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\",\n        \"dns_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"dns_Active\": \"Indique par une icône si l'appareil est actif ou non.\",\n        \"dns_IP\": \"Adresse IP de l'appareil sur le LAN.\\n\"\n                  \"Cette adresse s'affiche en caractères gras si cette adresse est réservée pour cet appareil\\n\"\n                  \"dans la configuration DHCP de la Livebox.\\n\"\n                  \"Et elle s'affiche en rouge si l'adresse n'est pas atteignable sur le réseau (unreacheable),\\n\"\n                  \"typiquement lorsque l'appareil n'est pas actif.\",\n        \"dns_DNS\": \"Nom DNS de l'appareil.\\n\"\n                   \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\" de l'onglet \\\"Infos Appareil\\\".\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"stats_Name\": \"Nom de l'interface réseau.\\n\"\n                      \"\\\"Fibre\\\" concerne tout le trafic WAN, c'est-à-dire externe entre la Livebox et internet.\\n\"\n                      \"\\\"LAN\\\" tout le trafic interne transitant à travers la Livebox.\\n\"\n                      \"Ensuite on dispose des statistiques par interface précise.\\n\"\n                      \"Les interfaces \\\"Guest\\\" concernent le trafic du réseau Wifi invité, s'il est activé.\",\n        \"stats_Rx\": \"Nombre d'octets reçus par l'interface.\\n\"\n                    \"La fenêtre de temps de ce total n'est pas connue.\\n\"\n                    \"S'affiche en rouge si des erreurs de transmission sont détectées.\\n\"\n                    \"Attention ce compteur est circulaire et ne dépasse pas les 4 Go pour certaines interfaces.\",\n        \"stats_Tx\": \"Nombre d'octets envoyés par l'interface.\\n\"\n                    \"La fenêtre de temps de ce total n'est pas connue.\\n\"\n                    \"S'affiche en rouge si des erreurs de transmission sont détectées.\\n\"\n                    \"Attention ce compteur est circulaire et ne dépasse pas les 4 Go pour certaines interfaces.\",\n        \"stats_RxRate\": \"Taux d'octets reçus par seconde par l'interface dans les trois dernières secondes.\\n\"\n                        \"La fréquence est réglable dans les préférences.\\n\"\n                        \"S'affiche en rouge si des erreurs de transmission sont détectées.\",\n        \"stats_TxRate\": \"Taux d'octets envoyés par seconde par l'interface dans les trois dernières secondes.\\n\"\n                        \"La fréquence est réglable dans les préférences.\\n\"\n                        \"S'affiche en rouge si des erreurs de transmission sont détectées.\",\n        \"liveboxInfo\": \"Affiche les informations principales concernant la Livebox, telles que les versions de logiciels,\\n\"\n                       \"l'adresse IP WAN, les services actifs, l'état de la mémoire, etc.\",\n        \"internetInfo\": \"Affiche le type d'accès internet, les identifiants de connexion, les adresses IPs v4 & v6,\\n\"\n                        \"la date et heure de la dernière connexion, la bande passante de la connexion, la MTU, etc\",\n        \"wifiInfo\": \"Affiche les informations générales sur la connectivité Wifi, et l'état de chaque accès y compris pour les accès invités.\\n\"\n                    \"Pour chaque accès on dispose d'informations détaillées telles que le canal, le standard, la bande passante,\\n\"\n                    \"la qualité, la bande, le nombre d'appareils connectés, etc.\",\n        \"lanInfo\": \"Affiche les informations générales sur la connectivité LAN.\\n\"\n                   \"Il s'agit des informations DHCP de base et pour chaque interface Ethernet\\n\"\n                   \"on peut identifier si elle est active ou non, la bande passante, etc.\",\n        \"ontInfo\": \"Affiche les informations importantes concernant la connexion et le module Fibre (ONT), telles que la bande passante,\\n\"\n                   \"la qualité du signal, le numéro de série et les versions logicielles, etc.\\n\"\n                   \"Les champs \\\"Puissance Signal Réception\\\", \\\"Puissance Signal Transmission\\\", \\\"Température\\\", \\\"Voltage\\\" et \\\"BIAS\\\"\\n\"\n                   \"affichent des valeurs vertes si elles correspondent aux normes de qualité acceptables pour la connexion,\\n\"\n                   \"en rouge si elles représentent un problème.\",\n        \"voipInfo\": \"Affiche les informations générales concernant la téléphonie, telles que le protocole,\\n\"\n                    \"le numéro de téléphone, la version logicielle de l'interface DECT, etc.\",\n        \"iptvInfo\": \"Affiche les informations générales relatives aux services de télévision.\",\n        \"usbInfo\": \"Affiche les informations concernant le ou les ports USBs.\\n\"\n                   \"Si une clef USB est insérée, ou a été insérée depuis le dernier démarrage de la Livebox,\\n\"\n                   \"ses informations sont affichées.\",\n        \"exportInfo\": \"Permet d'exporter l'ensemble des informations affichées par chacun des boutons dans un fichier texte.\\n\"\n                      \"Utile pour communiquer ces informations ou faire un suivi pour détecter les changements.\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"graphList_Name\": \"Nom de l'interface réseau ou de l'appareil.\",\n        \"graphList_Type\": \"Type de l'objet à afficher.\",\n        \"graphList_ID\": \"Identificateur interne de l'interface ou de l'appareil.\\n\"\n                        \"Pour les interfaces il s'agit du nom interne utilisé par la Livebox.\\n\"\n                        \"Pour les appareils il s'agit de l'adresse physique (MAC).\",\n        \"graphList_Color\": \"Couleur à utiliser pour afficher le graphique de chaque objet.\",\n        \"addGraph\": \"Permet d'ajouter une interface ou un appareil à la liste des graphiques à afficher.\",\n        \"delGraph\": \"Permet de supprimer l'interface ou l'appareil sélectionné de la liste des graphiques.\",\n        \"windowEdit\": \"Fenêtre en heures d'affichage des graphiques, à partir du présent.\\n\"\n                      \"Une valeur à 0 affichera l'ensemble des statistiques disponibles dans la Livebox.\",\n        \"backColor\": \"Couleur de fond à utiliser pour les graphiques de réception et d'émission.\\n\"\n                     \"Un clic droit supprime toute couleur.\",\n        \"apply\": \"Appliquer la configuration sélectionnée ci-dessus et dessiner les graphiques.\\n\"\n                 \"Cette action a aussi pour effet de sauvegarder la configuration, celle-ci sera\\n\"\n                 \"donc restaurée lors du prochain lancement du programme.\",\n        \"export\": \"Permet d'exporter les données correspondantes à la configuration ci-dessus dans\\n\"\n                  \"des fichiers au format CSV. Un fichier par interface / appareil est généré.\\n\"\n                  \"La configuration doit avoir été appliquée avant d'être exportée.\\n\"\n                  \"Les temps exportés sont au format \\\"Unix Epoch\\\".\",\n        \"downGraph\": \"Graphique des données reçues pour chaque interface / appareil sélectionné.\\n\"\n                     \"Les volumes sont en méga-octets reçus par seconde, avec un échantillonnage\\n\"\n                     \"toutes les 30 secondes. Le graphe se met à jour automatiquement à la réception\\n\"\n                     \"de nouveaux échantillons.\\n\"\n                     \"Il est possible de naviguer et de zoomer à la souris, puis de revenir à la\\n\"\n                     \"vue normale en cliquant dans le coin en bas à gauche.\",\n        \"upGraph\": \"Graphique des données émises pour chaque interface / appareil sélectionné.\\n\"\n                   \"Les volumes sont en méga-octets transmis par seconde, avec un échantillonnage\\n\"\n                   \"toutes les 30 secondes. Le graphe se met à jour automatiquement à la réception\\n\"\n                   \"de nouveaux échantillons.\\n\"\n                   \"Il est possible de naviguer et de zoomer à la souris, puis de revenir à la\\n\"\n                   \"vue normale en cliquant dans le coin en bas à gauche.\"\n    },\n\n    # Add graph dialog\n    \"addgraph\": {\n        \"typeCombo\": \"Sélection du type d'objet à rajouter.\",\n        \"objectCombo\": \"Sélection de l'interface ou de l'appareil à rajouter.\\n\"\n                       \"Pour les appareils il s'agit du nom local (fichier table MacAddr), si aucun\\n\"\n                       \"nom local n'a été assigné l'adresse physique (MAC) sera utilisée.\",\n        \"colorEdit\": \"Couleur à utiliser pour afficher le graphique correspondant.\",\n        \"IDValue\": \"Identificateur interne de l'interface ou de l'appareil.\\n\"\n                   \"Pour les interfaces il s'agit du nom interne utilisé par la Livebox.\\n\"\n                   \"Pour les appareils il s'agit de l'adresse physique (MAC).\",\n        \"measureValue\": \"Nombre de mesures de statistique actuellement stockées par la Livebox pour\\n\"\n                        \"l'interface ou l'appareil. Généralement la fréquence d'échantillonnage est\\n\"\n                        \"de 30 secondes et le nombre maximum de mesures stockées est de 8680.\",\n        \"historyValue\": \"Temps total de la fenêtre de statistiques estimé à partir du nombre de\\n\"\n                        \"mesures et de la fréquence d'échantillonnage.\"\n    },\n\n    # Device infos\n    \"dinfo\": {\n        \"dlist_Name\": \"Nom local de l'appareil.\\n\"\n                      \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\".\",\n        \"dlist_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"alist_Attribute\": \"Le fabricant de cet appareil peut s'afficher, déduit à partir de son adresse MAC.\\n\"\n                           \"Le programme utilise l'API du site macaddress.io pour le déterminer.\\n\"\n                           \"C'est un service gratuit, mais il faut créer un compte et indiquer l'API Key correspondante\\n\"\n                           \"dans les préférences pour bénéficier de cette fonctionnalité.\",\n        \"refresh\": \"Rafraîchit les informations affichées pour l'appareil sélectionné.\",\n        \"assignName\": \"Permet d'attribuer ou d'effacer le nom local et/ou le nom Livebox de l'appareil sélectionné.\",\n        \"assignType\": \"Permet d'attribuer ou d'effacer le type de l'appareil sélectionné.\",\n        \"forget\": \"Permet de demander à la Livebox d'oublier définitivement cet appareil.\\n\"\n                  \"Il disparaîtra donc immédiatement de toutes les listes.\\n\"\n                  \"Attention si l'appareil en question est actif, sa connexion ne sera nullement suspendue,\\n\"\n                  \"cependant toute son activité restera invisible et ce jusqu'à sa prochaine tentative de connexion.\",\n        \"wol\": \"Permet d'envoyer un signal de réveil sur réseau (WOL) à l'appareil sélectionné.\",\n        \"block\": \"Permet de bloquer la connexion de l'appareil sélectionné.\",\n        \"unblock\": \"Permet de débloquer la connexion de l'appareil sélectionné.\\n\"\n                   \"L'état bloqué ou non s'affiche dans les informations de l'appareil, champs \\\"Bloqué\\\".\"\n    },\n\n    # Device infos - Assign name dialog\n    \"dname\": {\n        \"nameCheckBox\": \"Décocher la boite pour effacer le nom local.\",\n        \"nameEdit\": \"Ce nom local sera stocké dans le fichier Table MacAddr configuré dans les préférences.\",\n        \"liveboxNameCheckBox\": \"Décocher la boite pour effacer le nom Livebox.\",\n        \"liveboxNameEdit\": \"Ce nom sera stocké par la Livebox.\",\n        \"dnsNameCheckBox\": \"Décocher la boite pour effacer le nom DNS.\",\n        \"dnsNameEdit\": \"Nom DNS à assigner à l'appareil.\"\n    },\n\n    # Device infos - Assign type dialog\n    \"dtype\": {\n        \"typeNameCombo\": \"Liste des types standards connus par la Livebox.\\n\"\n                         \"Lorsqu'un type standard est sélectionné, son nom connu par la Livebox est\\nautomatiquement rempli dans la zone de texte.\",\n        \"typeKeyEdit\": \"Il reste possible d'assigner manuellement un type non connu par la Livebox en le tapant directement ici.\"\n    },\n\n    # Events\n    \"events\": {\n        \"dlist_Name\": \"Nom local de l'appareil.\\n\"\n                      \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\".\",\n        \"dlist_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"elist_Time\": \"Heure de réception de l'événement.\",\n        \"elist_Reason\": \"Le type d'événement généré par la Livebox.\",\n        \"elist_Attribute\": \"Aperçu des données brutes de l'événement lui-même, au format JSON.\",\n        \"notifications\": \"Affiche la fenêtre de configuration des notifications automatiques à générer (par exemple par email)\\n\"\n                         \"à la détection de certains événements.\",\n        \"displayEvent\": \"Affiche un dialogue contenant les informations complètes pour l'événement sélectionné.\"\n    },\n\n    # Event Notification Rules\n    \"evnrules\" : {\n        \"rlist_Key\": \"Désignation des appareils pour lesquels recevoir des notifications.\",\n        \"rlist_Add\": \"Option de notification à l'ajout d'appareil.\",\n        \"rlist_Delete\": \"Option de notification à la suppression d'appareil.\",\n        \"rlist_Active\": \"Option de notification à la connexion d'appareil.\",\n        \"rlist_Inactive\": \"Option de notification à la déconnexion d'appareil.\",\n        \"rlist_Link\": \"Option de notification au changement de point d'accès de l'appareil.\",\n        \"rlist_File\": \"Option de notification dans un fichier CSV.\",\n        \"rlist_Email\": \"Option de notification par l'envoi d'un email.\",\n        \"addRule\": \"Permet de rajouter une nouvelle règle de notification.\",\n        \"delRule\": \"Permet de supprimer la règle de notification sélectionnée.\",\n        \"deviceCombo\": \"Permet de sélectionner le ou les appareils pour lesquels recevoir une notification.\\n\"\n                       \"\\\"Tout appareil\\\" appliquera la règle pour l'ensemble des appareils.\\n\"\n                       \"\\\"Tout appareil inconnu\\\" appliquera la règle à n'importe quel appareil inconnu.\",\n        \"macEdit\": \"Adresse physique de l'appareil sélectionné.\",\n        \"eventsLabel\": \"Sélection des événements pour lesquels recevoir une notification.\",\n        \"addEvent\": \"Recevoir une notification à l'ajout d'un appareil correspondant.\",\n        \"delEvent\": \"Recevoir une notification à la suppression d'un appareil correspondant.\",\n        \"actEvent\": \"Recevoir une notification à la connexion d'un appareil correspondant.\",\n        \"inaEvent\": \"Recevoir une notification à la déconnexion d'un appareil correspondant.\",\n        \"lnkEvent\": \"Recevoir une notification au changement de point d'accès (par exemple répéteur Wifi)\\n\"\n                    \"d'un appareil correspondant.\",\n        \"actionsLabel\": \"Sélection des actions à réaliser pour notifier.\",\n        \"fileAction\": \"Reporter les événements dans un fichier CSV journalier.\",\n        \"emailAction\": \"Envoyer les informations de chaque événement par email instantané.\\n\"\n                       \"Cette option nécessite le réglage de l'envoi d'email via l'onglet \\\"Actions\\\".\",\n        \"flushFrequencyEdit\": \"Les événements sont détectés instantanément, cependant certains événements peuvent\\n\"\n                              \"s'annuler lorsque générés dans une courte fenêtre de temps, tels que la déconnexion\\n\"\n                              \"suivie d'une reconnexion dans les 15 secondes d'un appareil donné (arrive fréquemment).\\n\"\n                              \"Pour éviter des notifications intempestives un temps d'attente de 30 secondes est\\n\"\n                              \"fortement recommandé pour laisser le programme identifier ces situations.\\n\"\n                              \"Un temps inférieur à 5 secondes est fortement déconseillé pour éviter que le programme\\n\"\n                              \"ne consomme trop de ressources.\",\n        \"eventFilePathEdit\": \"Répertoire dans lequel générer les fichiers CSV journaliers.\",\n        \"eventFilePathSelectButton\": \"Permet de sélectionner le répertoire dans lequel générer\\n\"\n                                     \"les fichiers CSV journaliers.\",\n        \"defaultFilePath\": \"Cocher pour générer les fichiers CSV journaliers dans le répertoire par défaut\\n\"\n                           \"qui est le même que le répertoire de configuration.\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"dlist_Name\": \"Nom local de l'appareil.\\n\"\n                      \"Ce nom peut être attribué, changé ou supprimé via le bouton \\\"Assigner Nom...\\\".\",\n        \"dlist_Domain\": \"Domaine DHCP d'assignation, \\\"Home\\\" ou \\\"Guest\\\" (invité).\",\n        \"dlist_MAC\": \"Adresse MAC, aussi appelée adresse physique de l'appareil.\",\n        \"dlist_IP\": \"Adresse IP assignée statiquement à l'appareil.\",\n        \"refreshBinding\": \"Rafraîchit la liste des baux statiques.\",\n        \"addBinding\": \"Permet d'ajouter un bail.\",\n        \"delBinding\": \"Supprime le bail sélectionné.\",\n        \"refreshDhcpAttribute\": \"Rafraîchit la liste des informations DHCP.\",\n        \"dhcpSetup\": \"Permet de configurer le serveur DHCP.\"\n    },\n\n    # DHCP - Binding dialog\n    \"dbinding\": {\n        \"deviceCombo\": \"La liste des appareils proposés est triée et est composée d'un mélange des appareils\\n\"\n                       \"connectés et ceux référencés dans le fichier local des adresses MAC.\",\n        \"macEdit\": \"L'adresse MAC est directement déduite de l'appareil sélectionné\\n\"\n                   \"mais on peut en taper une manuellement.\",\n        \"domainCombo\": \"Choisir le domaine réseau entre \\\"Home\\\" ou \\\"Guest\\\" (invité).\\n\"\n                       \"Une adresse IP libre est automatiquement proposée.\",\n        \"ipEdit\": \"L'adresse reste configurable.\\n\"\n                  \"Attention un même appareil ne peut être configuré que sur un seul domaine,\\n\"\n                  \"et s'il se connecte sur un domaine alors qu'un bail statique est configuré\\n\"\n                  \"sur l'autre ce bail sera automatiquement supprimé.\"\n    },\n\n    # DHCP - Setup dialog\n    \"dsetup\": {\n        \"enableCheckbox\": \"Active ou désactive le serveur DHCP.\",\n        \"liveboxIpEdit\": \"Permet de changer l'adresse IP de la Livebox.\",\n        \"maskEdit\": \"Permet de changer le masque de sous-réseau du serveur DHCP.\",\n        \"minEdit\": \"Adresse IP de départ pour le domaine \\\"Home\\\".\",\n        \"maxEdit\": \"Adresse IP de fin pour le domaine \\\"Home\\\".\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"plist_Enabled\": \"Indique par une icône si la règle est active ou non.\",\n        \"plist_Type\": \"Indique le type de la règle.\",\n        \"plist_ID\": \"Indique le nom de la règle.\",\n        \"plist_Description\": \"Description de la règle.\",\n        \"plist_Protocols\": \"Liste des protocoles concernés par la règle.\",\n        \"plist_IntPort\": \"Port interne sur lequel le trafic est redirigé.\",\n        \"plist_ExtPort\": \"Port externe à rediriger.\",\n        \"plist_Device\": \"Appareil sur lequel le trafic est redirigé.\",\n        \"plist_ExtIPs\": \"Liste des adresses IPs externes concernées par la règle.\",\n        \"refreshPat\": \"Rafraîchit la liste des règles de redirection de port.\",\n        \"enablePat\": \"Active/désactive la règle sélectionnée.\",\n        \"addPat\": \"Permet d'ajouter une règle de redirection de port.\",\n        \"editPat\": \"Permet de modifier la règle de redirection de port sélectionnée.\",\n        \"deletePat\": \"Permet de supprimer la règle de redirection de port sélectionnée.\",\n        \"deleteAllPat\": \"Permet de supprimer toutes les règles de redirection de port\\n\"\n                        \"d'un ou plusieurs types choisis.\",\n        \"exportPat\": \"Permet d'exporter dans un fichier les règles de redirection\\n\"\n                     \"de port d'un ou plusieurs types choisis.\",\n        \"importPat\": \"Permet de réimporter des règles de redirection de port précédemment\\n\"\n                     \"exportées dans un fichier. Si des règles de même nom existent déjà\\n\"\n                     \"elles seront écrasées par celles importées.\",\n        \"tlist_Enabled\": \"Indique par une icône si la règle est active ou non.\",\n        \"tlist_Type\": \"Indique le type de la règle.\",\n        \"tlist_ID\": \"Indique le nom de la règle.\",\n        \"tlist_Description\": \"Description de la règle.\",\n        \"tlist_Protocols\": \"Liste des protocoles concernés par la règle.\",\n        \"tlist_Device\": \"Appareil sur lequel le trafic est redirigé.\",\n        \"tlist_ExtIPs\": \"Liste des adresses IPs externes concernées par la règle.\",\n        \"refreshPtf\": \"Rafraîchit la liste des règles de redirection de protocole.\",\n        \"enablePtf\": \"Active/désactive la règle sélectionnée.\",\n        \"addPtf\": \"Permet d'ajouter une règle de redirection de protocole.\",\n        \"editPtf\": \"Permet de modifier la règle de redirection de protocole sélectionnée.\",\n        \"deletePtf\": \"Permet de supprimer la règle de redirection de protocole sélectionnée.\",\n        \"deleteAllPtf\": \"Permet de supprimer toutes les règles de redirection de protocole.\",\n        \"exportPtf\": \"Permet d'exporter dans un fichier les règles de redirection\\n\"\n                     \"de protocole d'un ou plusieurs types choisis.\",\n        \"importPtf\": \"Permet de réimporter des règles de redirection de protocole\\n\"\n                     \"précédemment exportées dans un fichier. Si des règles de même nom\\n\"\n                     \"existent déjà elles seront écrasées par celles importées.\"\n    },\n\n    # NAT/PAT - PAT rule dialog\n    \"patrule\": {\n        \"enableCheckbox\": \"Active ou désactive la règle.\",\n        \"typeCombo\": \"Sélectionnez le type de règle. UPnP est un type interne, vous ne\\n\"\n                     \"devriez pas avoir à créer ou modifier une règle de ce type.\",\n        \"nameEdit\": \"Nom unique de la règle. Si une règle du même nom existe déjà elle\\n\"\n                    \"sera écrasée.\",\n        \"descEdit\": \"Description de la règle.\",\n        \"tcpCheckbox\": \"Redirige ou pas le trafic TCP.\",\n        \"udpCheckbox\": \"Redirige ou pas le trafic UDP.\",\n        \"intPortEdit\": \"Port interne sur lequel le trafic doit être redirigé.\\n\"\n                       \"Utiliser le caractère - entre deux ports pour spécifier une plage.\",\n        \"extPortEdit\": \"Port externe à rediriger.\\n\"\n                       \"Ne fonctionne pas en IPv6.\\n\"\n                       \"Laisser ce champs vide s'il s'agit du même port que le port interne.\\n\"\n                       \"Utiliser le caractère - entre deux ports pour spécifier une plage.\",\n        \"deviceCombo\": \"Appareil sur lequel le trafic doit être redirigé.\",\n        \"ipEdit\": \"Addresse IP (v4 ou v6 en fonction du type) sur laquelle le trafic doit\\n\"\n                  \"être redirigé.\",\n        \"extIPsEdit\": \"Liste des adresses IPs (v4 ou v6 en fonction du type) externes concernées\\n\"\n                      \"par la règle. Chaque adresse doit être séparée par une virgule.\\n\"\n                      \"Laisser vide si aucun filtrage par IP externe n'est requis.\"\n    },\n\n    # NAT/PAT - PTF rule dialog\n    \"ptfrule\": {\n        \"enableCheckbox\": \"Active ou désactive la règle.\",\n        \"typeCombo\": \"Sélectionnez le type de règle.\",\n        \"nameEdit\": \"Nom unique de la règle. Si une règle du même nom existe déjà elle\\n\"\n                    \"sera écrasée.\",\n        \"descEdit\": \"Description de la règle.\",\n        \"protocolsCombo\": \"Sélectionnez les protocoles à rediriger.\",\n        \"deviceCombo\": \"Appareil sur lequel le trafic doit être redirigé.\",\n        \"ipEdit\": \"Addresse IP (v4 ou v6 en fonction du type) sur laquelle le trafic doit\\n\"\n                  \"être redirigé. Il est aussi possible d'indiquer un préfix.\",\n        \"extIPsEdit\": \"Liste des adresses IPs (v4 ou v6 en fonction du type) externes concernées\\n\"\n                      \"par la règle. Chaque adresse doit être séparée par une virgule.\\n\"\n                      \"Laisser vide si aucun filtrage par IP externe n'est requis.\"\n    },\n\n    # NAT/PAT - rule type selection dialog\n    \"nprtype\": {\n        \"ipV4Checkbox\": \"Sélectionne ou pas les règles de type IPv4.\",\n        \"ipV6Checkbox\": \"Sélectionne ou pas les règles de type IPv6.\",\n        \"upnpCheckbox\": \"Sélectionne ou pas les règles de type UPnP.\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"calist_Type\": \"Icône correspondant au type de l'appel.\\n\"\n                       \"- Appel reçu.\\n\"\n                       \"- Appel manqué. Dans ce cas toute la ligne est indiquée en rouge.\\n\"\n                       \"- Appel émis.\\n\"\n                       \"- Appel émis mais non abouti.\",\n        \"calist_Time\": \"Date et heure de l'appel.\",\n        \"calist_Number\": \"Numéro de téléphone concerné.\\n\"\n                         \"Un double clic sur un appel permet de facilement créer ou éditer le contact correspondant.\",\n        \"calist_Contact\": \"Le nom du contact déterminé par la Livebox en fonction de la liste des contacts au moment de l'appel.\\n\"\n                          \"Si la Livebox n'a mémorisé aucun nom, alors le programme essai d'en trouver un dynamiquement à partir de\\n\"\n                          \"la liste des contacts enregistrés par correspondance avec le numéro de téléphone.\",\n        \"calist_Duration\": \"Durée de l'appel.\",\n        \"colist_Name\": \"Nom du contact, au format nom + prénom.\",\n        \"colist_Cell\": \"Numéro de téléphone portable.\",\n        \"colist_Home\": \"Numéro de téléphone fixe.\",\n        \"colist_Work\": \"Numéro de téléphone professionnel.\",\n        \"colist_Ring\": \"Type de sonnerie sélectionné parmi les 7 supportés par la Livebox.\",\n        \"refreshCall\": \"Rafraîchit la liste des appels.\",\n        \"deleteCall\": \"Supprime l'appel sélectionné.\",\n        \"deleteAllCalls\": \"Supprime tous les appels.\",\n        \"spamCallScan\": \"Scanne tous les appels entrants non identifiés et vérifie sur le site callfilter.app\\n\"\n                        \"si ces appels sont des spams ou non. Cette fonctionnalité nécessite d'avoir une\\n\"\n                        \"API Key Call Filter et de l'avoir configurée dans les préférences.\",\n        \"spamCallSites\": \"Ouvre deux sites webs sur votre navigateur permettant de vérifier l'origine\\n\"\n                         \"de l'appel sélectionné.\",\n        \"setSpamCall\": \"Permet de marquer manuellement l'appel sélectionné comme étant un spam ou non.\",\n        \"refreshContact\": \"Rafraîchit la liste des contacts.\",\n        \"addContact\": \"Permet de rajouter un contact.\\n\"\n                      \"Attention aucun test de doublon n'est effectué.\",\n        \"editContact\": \"Pour éditer le contact sélectionné.\",\n        \"deleteContact\": \"Supprime le contact sélectionné.\",\n        \"deleteAllContacts\": \"Supprime tous les contacts.\",\n        \"ringToneCombo\": \"Sélectionnez un des 7 types de sonnerie proposés par la Livebox.\\n\"\n                         \"Si aucune sélection la sonnerie par défaut est utilisée.\",\n        \"phoneRing\": \"Permet de tester le téléphone avec la sonnerie sélectionnée.\",\n        \"exportContacts\": \"Permet d'exporter l'ensemble des contacts dans un fichier au format VCF.\\n\"\n                          \"Très utile pour les sauvegarder.\",\n        \"importContacts\": \"Permet d'importer un ou plusieurs fichiers au format VCF.\\n\"\n                          \"Attention aucun test de doublon n'est effectué.\\n\"\n                          \"Si la limite du nombre de contacts maximum supporté (255) est atteint l'import est interrompu.\"\n    },\n\n    # Phone - Contact edit\n    \"pcontact\": {\n        \"ringToneCombo\": \"Sonnerie pour ce contact parmi les 7 supportés par la Livebox.\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"wifiConfig\": \"Permet de configurer toutes les bandes radios du réseau Wifi.\",\n        \"wifiGuestConfig\": \"Permet de configurer toutes les bandes radios du réseau Wifi Invité.\",\n        \"wifiOn\": \"Permet d'activer l'interface Wifi de la Livebox.\",\n        \"wifiOff\": \"Permet de désactiver l'interface Wifi de la Livebox.\",\n        \"guestWifiOn\": \"Permet d'activer l'interface Wifi invité de la Livebox.\",\n        \"guestWifiOff\": \"Permet de désactiver l'interface Wifi invité de la Livebox.\",\n        \"schedulerOn\": \"Permet d'activer le planificateur Wifi de la Livebox.\\n\"\n                       \"Ce planificateur doit être configuré depuis l'interface Web de la Livebox.\",\n        \"schedulerOff\": \"Permet de désactiver le planificateur Wifi de la Livebox.\",\n        \"wifiGlobalStatus\": \"Permet d'afficher l'état global du Wifi, en incluant l'état Wifi de tous\\n\"\n                            \"les répéteurs Wifi Orange potentiellement connectés.\",\n        \"backupRestore\": \"Permet de régler la sauvegarde automatique de la configuration de la Livebox,\\n\"\n                         \"de déclencher une sauvegarde ou de demander une restauration de la configuration.\",\n        \"screen\": \"Permet de régler le niveau des LEDs et l'affichage du mot de passe\\n\"\n                  \"Wifi sur l'écran. Fonctionalité uniquement à partir de la Livebox 6.\",\n        \"rebootLivebox\": \"Permet de forcer un redémarrage de la Livebox.\",\n        \"resetLivebox\": \"Permet de réinitialiser la Livebox aux paramètres d'usine.\\n\"\n                        \"Si la restauration automatique de votre configuration est activée un dialogue\\n\"\n                        \"vous permettra de la désactiver.\",\n        \"rebootHistory\": \"Permet d'afficher l'historique des derniers redémarrages.\\n\"\n                         \"Utile pour détecter les redémarrages forcés par Orange pour mettre à jour le logiciel de la Livebox.\",\n        \"firewallLevel\": \"Permet de régler les niveaux des pares-feux IPv4 et IPv6.\",\n        \"pingResponse\": \"Permet de régler les réponses aux requêtes de ping IPv4 et IPv6.\",\n        \"dynDNS\": \"Permet d'attribuer un nom de domaine et d'hôte fixe, facile à mémoriser, à une adresse IP statique\\n\"\n                  \"ou dynamique ou à une longue URL.\\n\"\n                  \"Utile, par exemple, si vous hébergez un site web ou un serveur FTP derrière votre Livebox pour le\\n\"\n                  \"retrouver facilement (nom de type monserveur.dydns.org).\",\n        \"dmz\": \"Permet d'intégrer un appareil dans la DMZ.\\n\"\n               \"En intégrant un appareil à la DMZ vous rendez cet équipement accessible depuis Internet.\\n\"\n               \"Vous devez préalablement associer une adresse IP statique à cet équipement dans l’onglet DHCP.\",\n        \"routingTable\": \"Permet de configurer la table de routage statique.\\n\"\n                        \"Cette option est uniquement disponible pour les Livebox Pro.\",\n        \"openSourceURL\": \"Un clic ouvrira la page web de l'application sur votre navigateur.\",\n        \"prefs\": \"Permet d'afficher l'écran des préférences du programme.\",\n        \"changeProfile\": \"Permet de changer le profil en cours et de relancer le programme.\",\n        \"emailSetup\": \"Permet de configurer l'envoi d'emails automatique, par exemple pour les notifications.\",\n        \"setLogLevel\": \"Permet de changer le niveau de logs dans la console.\\n\"\n                       \"Ce niveau est stocké dans la configuration du programme et sera donc conservé au prochain lancement.\",\n        \"callApis\": \"Permet d'appeler les APIs REST/JSON de la Livebox.\",\n        \"getApiDoc\": \"Permet d'exporter dans un ensemble de fichiers la documentation disponible\\n\"\n                     \"sur les API REST/JSON de la Livebox. Fonctionalité bloquée sur les Livebox W7 et S.\",\n        \"quit\": \"Pour quitter l'application. Strictement équivalent à fermer la fenêtre de l'application.\"\n    },\n\n    # Actions - Reboot history\n    \"rhistory\": {\n        \"reboot_BootDate\": \"Date et heure du démarrage.\",\n        \"reboot_BootReason\": \"La raison de ce démarrage.\\n\"\n                             \"Typiquement \\\"NMC\\\" ou \\\"POR\\\" indique un démarrage forcé par logiciel et \\\"Unsupported chipset\\\"\\n\"\n                             \"un redémarrage causé par une coupure de courant ou l'interrupteur.\",\n        \"reboot_ShutdownDate\": \"La date et heure de l'arrêt.\",\n        \"reboot_ShutdownReason\": \"La raison de cet arrêt.\\n\"\n                                 \"Typiquement vide pour une coupure de courant, \\\"Upgrade\\\" pour une mise à jour logiciel et \\\"GUI_Reboot\\\" pour\\n\"\n                                 \"un redémarrage demandé depuis l'interface Web ou LiveboxMonitor.\",\n    },\n\n    # Actions - Wifi configuration\n    \"wconfig\": {\n        \"enableCheckbox\": \"Active ou désactive l'ensemble des bandes radios.\",\n        \"mloCheckbox\": \"Active ou désactive la technologie Wifi 7 MLO (Multi-Link Operation).\",\n        \"durationEdit\": \"Durée en heure de l'activation du Wifi Invité.\\n\"\n                        \"Indiquer 0 pour une durée illimitée.\",\n        \"freqCombo\": \"Permet de sélectionner la bande radio à configurer.\",\n        \"ssidEdit\": \"Nom du réseau à publier pour la bande radio sélectionnée.\",\n        \"freqEnabledCheckbox\": \"Active ou désactive la bande radio sélectionnée.\",\n        \"broadcastCheckbox\": \"Permet de diffuser le nom du réseau pour le rendre découvrable.\",\n        \"wpsCheckbox\": \"Active ou désactive les méthodes de connexion WPS\\n\"\n                       \"(Wi-Fi Protected Setup) pour la bande radio sélectionnée.\",\n        \"macFilteringCombo\": \"Sélectionner 'Off' pour désactiver le filtrage MAC.\\n\"\n                             \"'WhiteList' pour activer le filtrage MAC et ne permettre la\\n\"\n                             \"connexion uniquement qu'aux appareils listés.\\n\"\n                             \"'BlackList' pour activer le filtrage MAC et permettre la\\n\"\n                              \"connexion à tous les appareils sauf ceux listés.\",\n        \"macFilteringEntriesCombo\": \"Sélectionnez les appareils concernés par le filtrage.\\n\"\n                                    \"L'option 'Ajouter...' permet d'entrer une nouvelle adresse physique\\n\"\n                                    \"à la liste (adresse MAC).\",\n        \"secuCombo\": \"Type de sécurité pour la bande radio sélectionnée.\\n\"\n                     \"Sélectionner 'None' pour un accès libre sans mot de passe.\",\n        \"passEdit\": \"Mot de passe pour la bande radio sélectionnée.\",\n        \"passShow\": \"Permet d'afficher/masquer le mot de passe.\",\n        \"chanCombo\": \"Canal à utiliser pour la bande radio sélectionnée.\\n\"\n                     \"Sélectionner 'Auto' pour une sélection automatique.\",\n        \"modeCombo\": \"Mode de connexion pour la bande radio sélectionnée.\",\n        \"bandwidthCombo\": \"Largeur de bande à utiliser pour la bande radio sélectionnée.\\n\"\n                          \"Attention : le changement de largeur de bande n'est pas garanti de\\n\"\n                          \"fonctionner dans tous les cas. Par exemple sur la bande radio 5 GHz\\n\"\n                          \"le changement n'est pas pris en compte par les Livebox 4 et 5.\"\n    },\n\n    # Actions - Wifi global status\n    \"wglobal\": {},\n\n    # Actions - Backup & Restore\n    \"backrest\": {\n        \"autoBackEnabled\": \"Indique si la sauvegarde automatique est activée ou non.\",\n        \"status\": \"Indique le statut actuel de la sauvegarde.\",\n        \"lastBackup\": \"Date et heure de la dernière sauvegarde.\",\n        \"refresh\": \"Permet de rafraîchir les informations ci-dessus.\",\n        \"enaAutoBack\": \"Permet d'activer la sauvegarde automatique de la configuration de la Livebox.\",\n        \"disAutoBack\": \"Permet de désactiver la sauvegarde automatique de la configuration de la Livebox.\",\n        \"forceBackup\": \"Permet de forcer une sauvegarde de la configuration de la Livebox.\",\n        \"forceRestore\": \"Permet de forcer une restauration de la configuration de la Livebox à partir\\n\"\n                        \"de la dernière sauvegarde. Un redémarrage de la Livebox est déclenché.\"\n    },\n\n    # Actions - Screen & LEDs\n    \"screen\" : {\n        \"orangeSlider\": \"Réglage du niveau de luminosité de la LED Orange.\",\n        \"showWifiPasswordCheckbox\": \"Afficher la clef de sécurité sur l'écran de la Livebox.\"\n    },\n\n    # Actions - Firewall level\n    \"fwlevel\": {\n        \"ipV4Combo\": \"Niveau du pare-feu IPv4.\",\n        \"ipV6Combo\": \"Niveau du pare-feu IPv6.\"\n    },\n\n    # Actions - Ping Response\n    \"pingr\": {\n        \"ipV4Checkbox\": \"Sélectionnez pour répondre aux requêtes de ping IPv4.\",\n        \"ipV6Checkbox\": \"Sélectionnez pour répondre aux requêtes de ping IPv6.\"\n    },\n\n    # Actions - DynDNS\n    \"dyndns\": {\n        \"hlist_Service\": \"Type de service.\",\n        \"hlist_HostName\": \"Nom d'hôte ou de domaine.\",\n        \"hlist_UserName\": \"Email de l'utilisateur.\",\n        \"hlist_Password\": \"Mot de passe de l'utilisateur.\",\n        \"hlist_LastUpdate\": \"Date et heure de la dernière mise à jour.\",\n        \"refresh\": \"Rafraîchit la liste des hôtes/domaines.\",\n        \"showPassword\": \"Affiche ou masque les mots de passe dans la liste.\",\n        \"delHost\": \"Surpprime l'hôte/domaine sélectionné.\",\n        \"serviceCombo\": \"Sélection du service.\",\n        \"hostNameEdit\": \"Nom d'hôte ou de domaine.\",\n        \"userNameEdit\": \"Email de l'utilisateur.\",\n        \"passwordEdit\": \"Mot de passe de l'utilisateur.\",\n        \"addHost\": \"Ajoute un hôte/domaine.\",\n        \"disableAll\": \"Désactive ou active tous les hôtes/domaines.\",\n        \"ok\": \"Ferme cet écran.\"\n    },\n\n    # Actions - DMZ\n    \"dmz\": {\n        \"zlist_ID\": \"Identifiant unique de la règle DMZ. L'application Orange n'utilise qu'une seule règle\\n\"\n                    \"ayant \\\"webui\\\" comme identifiant.\",\n        \"zlist_IP\": \"Adresse IP de l'appareil présent dans la DMZ.\",\n        \"zlist_Device\": \"Nom de l'appareil présent dans la DMZ.\",\n        \"zlist_ExtIPs\": \"Liste des adresses IPs externes concernées par la règle.\",\n        \"refresh\": \"Rafraîchit la liste des appareils dans la DMZ.\",\n        \"delDmz\": \"Surpprime la règle sélectionnée.\",\n        \"id\": \"Identifiant unique de la règle DMZ. L'application Orange n'utilise qu'une seule règle\\n\"\n              \"ayant \\\"webui\\\" comme identifiant.\",\n        \"deviceCombo\": \"Appareil à ajouter dans la DMZ.\",\n        \"ipEdit\": \"Adresse IP de l'appareil à ajouter dans la DMZ.\",\n        \"extIPsEdit\": \"Liste des adresses IPs externes concernées par la règle.\\n\"\n                      \"Chaque adresse doit être séparée par une virgule.\\n\"\n                      \"Laisser vide si aucun filtrage par IP externe n'est requis.\",\n        \"addDmz\": \"Ajoute l'appareil dans la DMZ. Si une règle est déjà présente avec le même identifiant\\n\"\n                  \"celle-ci sera écrasée.\",\n        \"ok\": \"Ferme cet écran.\"\n    },\n\n    # Actions - Routing\n    \"routing\": {\n        \"rlist_DestMask\": \"Masque de sous-réseau de destination.\",\n        \"rlist_Priority\": \"Priorité donnée à chaque route.\",\n        \"rlist_Enabled\": \"Indique si vous avez demandé à activer la route.\",\n        \"rlist_Status\": \"Statut actuel d'activation de la règle.\",\n        \"refresh\": \"Rafraîchit la liste des routes.\",\n        \"enableRule\": \"Active/désactive la route sélectionnée.\",\n        \"delRule\": \"Supprime la route sélectionnée.\",\n        \"destMaskEdit\": \"Masque de sous-réseau de destination.\",\n        \"priorityEdit\": \"Priorité à donner à la route.\",\n        \"addRule\": \"Ajoute une nouvelle route avec les valeurs indiquées.\",\n        \"editRule\": \"Modifie la route sélectionnée avec les valeurs indiquées.\",\n        \"ok\": \"Ferme cet écran.\"\n    },\n\n    # Actions - Call API\n    \"callapi\": {\n        \"presetCombo\": \"Liste d'appels prédéfinis.\",\n        \"service\": \"Indiquer le nom du service, par exemple \\\"NMC\\\".\",\n        \"method\": \"Indiquer le nom de la méthode, par exemple \\\"get\\\".\",\n        \"parametersEdit\": \"Indiquer les paramètres à utiliser, au format JSON.\",\n        \"call\": \"Appelle l'API correspondante.\",\n        \"replyEdit\": \"Affiche la réponse de l'appel.\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"stats_Name\": \"Nom de l'interface réseau.\\n\"\n                      \"\\\"LAN\\\" concerne tout le trafic entre le répéteur et la Livebox.\\n\"\n                      \"Ensuite on dispose des statistiques par interface précise (les prises Ethernet ainsi que les bandes Wifi).\",\n        \"stats_Rx\": \"Nombre d'octets reçus par l'interface.\\n\"\n                    \"La fenêtre de temps de ce total n'est pas connue.\\n\"\n                    \"S'affiche en rouge si des erreurs de transmission sont détectées.\\n\"\n                    \"Attention ce compteur est circulaire et ne dépasse pas les 4 Go.\",\n        \"stats_Tx\": \"Nombre d'octets envoyés par l'interface.\\n\"\n                    \"La fenêtre de temps de ce total n'est pas connue.\\n\"\n                    \"S'affiche en rouge si des erreurs de transmission sont détectées.\\n\"\n                    \"Attention ce compteur est circulaire et ne dépasse pas les 4 Go.\",\n        \"stats_RxRate\": \"Taux d'octets reçus par seconde par l'interface dans les trois dernières secondes.\\n\"\n                        \"La fréquence est réglable dans les préférences.\",\n        \"stats_TxRate\": \"Taux d'octets envoyés par seconde par l'interface dans les trois dernières secondes.\\n\"\n                        \"La fréquence est réglable dans les préférences.\",\n        \"wifiOn\": \"Permet d'activer l'interface Wifi du répéteur.\",\n        \"wifiOff\": \"Permet de désactiver l'interface Wifi du répéteur.\",\n        \"schedulerOn\": \"Permet d'activer le planificateur Wifi du répéteur.\\n\"\n                       \"Ce planificateur doit être configuré depuis l'interface Web du répéteur.\",\n        \"schedulerOff\": \"Permet de désactiver le planificateur Wifi du répéteur.\",\n        \"rebootRepeater\": \"Permet de forcer un redémarrage du répéteur.\",\n        \"resetRepeater\": \"Permet de réinitialiser le répéteur aux paramètres d'usine.\",\n        \"rebootHistory\": \"Permet d'afficher l'historique des derniers redémarrages.\\n\"\n                         \"Utile pour détecter les redémarrages forcés par Orange pour mettre à jour le logiciel du répéteur.\",\n        \"callApis\": \"Permet d'appeler les APIs REST/JSON du répéteur.\",\n        \"resign\": \"Pour forcer la création d'une nouvelle session avec le répéteur.\\n\"\n                  \"Si vous laissez trop longtemps le programme tourner sans visualiser les statistiques du répéteur ni\\n\"\n                  \"effectuer la moindre action, la session sera automatiquement libérée par le répéteur.\\n\"\n                  \"Dans ce cas des erreurs vont se produire en effectuant des actions : ce bouton permettra de recréer\\n\"\n                  \"la session, permettant de reprendre les actions sans erreur.\",\n        \"repeaterInfo\": \"Affiche les informations principales concernant le répéteur, telles que les versions de logiciels,\\n\"\n                        \"le nom du modèle, l'heure de l'horloge interne, etc.\",\n        \"wifiInfo\": \"Affiche les informations générales sur la connectivité Wifi, et l'état de chaque accès.\\n\"\n                    \"Pour chaque accès on dispose d'informations détaillées telles que le canal, le standard, la bande passante,\\n\"\n                    \"la qualité, la bande, le nombre d'appareils connectés, etc.\",\n        \"lanInfo\": \"Affiche les informations générales sur la connectivité LAN.\\n\"\n                   \"Pour chaque interface Ethernet on peut identifier si elle est active ou non, la bande passante, etc.\",\n        \"exportInfo\": \"Permet d'exporter l'ensemble des informations affichées par chacun des boutons dans un fichier texte.\\n\"\n                      \"Utile pour communiquer ces informations ou faire un suivi pour détecter les changements.\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"statusValue\": \"État actuel du décodeur\",\n        \"mediaTypeValue\": \"Type de média actuel.\",\n        \"mediaStateValue\": \"État actuel du média.\",\n        \"vendorValue\": \"Vendeur du décodeur tel que connu par la Livebox.\",\n        \"modelValue\": \"Modèle du décodeur tel que connu par la Livebox.\",\n        \"macValue\": \"Adresse physique (MAC) du décodeur.\",\n        \"ipValue\": \"Adresse IP du décodeur.\",\n        \"nameValue\": \"Nom du décodeur.\",\n        \"manufacturerValue\": \"Fabricant du décodeur.\",\n        \"modelNameValue\": \"Nom du modèle du décodeur.\",\n        \"uniqueIdValue\": \"Identifiant unique du décodeur.\",\n        \"resetCache\": \"Permet d'effacer et de recharger les informations et les icônes\\n\"\n                      \"des chaînes de télévision mises en cache.\",\n        \"channelValue\": \"Numéro de chaîne actuel.\",\n        \"channelNameValue\": \"Nom de la chaîne actuelle.\",\n        \"mediaIdValue\": \"Identifiant EPG (Electronic Program Guide) de la chaîne actuelle.\",\n        \"channelIcon\": \"Icône de la chaîne actuelle.\",\n        \"channelDesc\": \"Description de la chaîne actuelle.\",\n        \"channelEdit\": \"Vous pouvez saisir soit :\\n\"\n                       \"- Un numéro de chaîne.\\n\"\n                       \"- Un nom de chaîne (même partiel).\\n\"\n                       \"- L'identifiant EPG (Electronic Program Guide) d'une chaîne en tapant 'epg' suivi du numéro d'identification.\",\n        \"channelSet\": \"Permet de changer de chaîne.\",\n        \"power\": \"Marche/Arrêt.\",\n        \"mic\": \"Microphone.\",\n        \"back\": \"Arrière.\",\n        \"vol_up\": \"Monter le volume.\",\n        \"chan_up\": \"Chaîne suivante.\",\n        \"vol_down\": \"Diminuer le volume.\",\n        \"chan_down\": \"Chaîne précédente.\",\n        \"mute\": \"Couper le son.\",\n        \"fbwd\": \"Retour rapide.\",\n        \"play\": \"Lecture/Pause.\",\n        \"ffwd\": \"Avance rapide\",\n        \"admin\": \"`Menu d'administration.\",\n        \"record\": \"Enregistrement.\"\n    },\n\n    # Config - Preferences\n    \"prefs\": {\n        \"profileList\": \"Le programme supporte de pouvoir gérer plusieurs Livebox à l'aide de profils différents.\\n\"\n                       \"Chaque profil doit avoir un nom unique. Par défaut un profil principal est créé automatiquement.\\n\"\n                       \"Si plusieurs profils sont configurés le nom du profil en cours est affiché dans le titre de la fenêtre principale entre crochets.\\n\"\n                       \"Au lancement du programme, le profil par défaut est utilisé, mais si aucun profil par défaut n'est configuré ou\\n\"\n                       \"si la touche `Ctrl` est enfoncée le programme affiche un dialogue pour sélectionner le profil à utiliser.\",\n        \"addProfile\": \"Permet d'ajouter un profil.\",\n        \"delProfile\": \"Supprimer le profil sélectionné.\",\n        \"profileNameEdit\": \"Nom du profil.\",\n        \"liveboxUrlEdit\": \"Adresse de la Livebox. La valeur par défaut est \\\"http://livebox.home/\\\".\",\n        \"liveboxUserEdit\": \"Login pour l'ouverture de session.\\n\"\n                           \"Par défaut \\\"admin\\\".\\n\"\n                           \"Le mot de passe est demandé automatiquement lors de l'utilisation du profil\\n\"\n                           \"s'il n'est pas renseigné ou s'il est erroné.\",\n        \"filterDevices\": \"Active le filtrage des appareils afin de ne pas montrer certains appareils \\\"fantômes\\\" détectés par la Livebox.\\n\"\n                         \"Quand ce paramètre est activé le programme affiche les mêmes appareils que l'interface Web de la Livebox.\\n\"\n                         \"Ce paramètre est désactivé par défaut.\",\n        \"onlyActiveDevices\": \"Permet de n'afficher que les appareils actifs dans la liste principale.\\n\"\n                             \"Ce paramètre est désactivé par défaut.\",\n        \"macAddrTableFileEdit\": \"Nom du fichier de stockage des noms d'appareils associés à leur adresse MAC.\\n\"\n                                \"Par défaut \\\"MacAddrTable.txt\\\".\\n\"\n                                \"Tout appareil détecté dont l'adresse MAC n'est pas répertoriée sera affiché comme \\\"INCONNU\\\" en rouge.\\n\"\n                                \"Cette fonctionnalité est surtout utile pour détecter les nouveaux appareils ou des tentatives d'intrusions.\",\n        \"defaultProfile\": \"Indique qu'il s'agit du profil par défaut à utiliser au lancement du programme.\\n\"\n                          \"Il ne peut y avoir qu'un seul profil par défaut.\",\n        \"languageCombo\": \"Langue utilisée par l'application.\",\n        \"tooltips\": \"Active ou non les tooltips.\",\n        \"statsFrequencyEdit\": \"Fréquence de rafraîchissement, en secondes, de toutes les statistiques.\\n\"\n                              \"Par défaut 3 secondes.\",\n        \"macAddrApiKeyEdit\": \"Le programme utilise l'API du site macaddress.io pour déterminer le fabricant d'un appareil\\n\"\n                             \"à partir de son adresse MAC (champ \\\"Fabricant\\\" dans les informations détaillées par appareil).\\n\"\n                             \"C'est un service gratuit, mais il faut créer un compte et indiquer ici l'API Key correspondante\\n\"\n                             \"pour bénéficier de cette fonctionnalité.\",\n        \"callFilterApiKeyEdit\": \"Le programme utilise l'API du site callfilter.app pour déterminer si un appel téléphonique\\n\"\n                                \"concerne du démarchage ou une fraude à partir de son numéro.\\n\"\n                                \"C'est un service gratuit, mais il faut demander une clé par mail en anglais (info@callfilter.app)\\n\"\n                                \"et indiquer ici l'API Key donnée pour bénéficier de cette fonctionnalité.\",\n        \"phoneCodeEdit\": \"Indicatif téléphonique local, utile pour faire correspondre les appels téléphoniques avec les numéros de contacts.\\n\"\n                         \"Par défaut le code de la France est utilisé, c'est-à-dire 33.\",\n        \"listHeaderHeightEdit\": \"Hauteur en pixels des entêtes de liste, par défaut 25.\",\n        \"listHeaderFontSizeEdit\": \"Taille de la police de caractères des entêtes de liste.\\n\"\n                                  \"Une valeur à zéro signifie d'utiliser la taille système.\\n\"\n                                  \"Par défaut ce paramètre est à zéro.\",\n        \"listLineHeightEdit\": \"Hauteur en pixels des lignes de liste, par défaut 30.\",\n        \"listLineFontSize\": \"Taille de la police de caractères des lignes de liste.\\n\"\n                            \"Une valeur à zéro signifie d'utiliser la taille système.\\n\"\n                            \"Par défaut ce paramètre est à zéro.\",\n        \"timeoutMarginEdit\": \"Valeur de timeout additionnelle, à utiliser par exemple si vous accédez à une Livebox à\\n\"\n                             \"distance avec une grande latence réseau.\",\n        \"csvDelimiterEdit\": \"Séparateur de liste (délimiteur) à utiliser lors de l'export\\n\"\n                            \"de données dans des fichiers au format CSV.\",\n        \"realtimeWifiStats\": \"Active ou non les statistiques en temps réel pour les appareils wifi.\\n\"\n                             \"Celles ci s'affichent en bleu dans l'onglet \\\"Appareils\\\" et viennent recouvrir\\n\"\n                             \"les statistiques standards qui s'affichent en noir toutes les 30 secondes.\",\n        \"preventSleepMode\": \"Permet d'empêcher votre ordinateur de se mettre en veille pendant l'exécution de ce\\n\"\n                            \"programme. Utile pour laisser tourner l'application en permanence, par exemple pour\\n\"\n                            \"l'export des statistiques ou pour la génération de notifications en temps réel.\",\n        \"nativeUIStyle\": \"Par défaut le style \\\"Fusion\\\" est utilisé sur toutes les plateformes.\\n\"\n                         \"Cette option permet sur les plateformes Windows et MacOS d'utiliser\\n\"\n                         \"un style graphique plus natif.\\n\"\n                         \"Elle n'a aucun effet sur les plateformes Linux.\",\n        \"savePasswords\": \"Permet de sauver les mots de passe dans la configuration (encryptés) pour éviter\\n\"\n                         \"d'avoir à les retaper à chaque lancement.\"\n    },\n\n    # Config - Connection\n    \"cnx\": {\n        \"urlEdit\": \"La connexion s'établit avec exactement les mêmes informations que pour accéder à l'interface Web\\n\"\n                   \"de configuration de la Livebox.\\n\"\n                   \"Pour l'URL il faut essayer http://livebox.home/, http://livebox/ ou http://192.168.1.1/.\"\n    },\n\n    # Config - Signin\n    \"signin\": {\n        \"userEdit\": \"La connexion s'établit avec exactement les mêmes informations que pour accéder à l'interface Web\\n\"\n                    \"de configuration de la Livebox.\\n\"\n                    \"Pour l'utilisateur il faut laisser à la valeur par défaut \\\"admin\\\".\",\n        \"passwordEdit\": \"Le mot de passe est soit ce que vous avez indiqué vous-même soit le mot de passe d'origine qui\\n\"\n                        \"se trouve sur la carte Wifi. Il est constitué des 8 premiers caractères (sans espace) de la clé de\\n\"\n                        \"sécurité visible sur l'étiquette située sous votre Livebox.\\n\"\n                        \"Lisez la documentation pour plus de détails.\",\n        \"savePasswords\": \"Permet de sauver les mots de passe dans la configuration (encryptés) pour éviter\\n\"\n                         \"d'avoir à les retaper à chaque lancement.\"\n    },\n\n    # Config - email\n    \"email\": {\n        \"fromAddrEdit\": \"Adresse email d'origine des messages.\",\n        \"toAddrEdit\": \"Adresse email de destination des messages.\",\n        \"subjectPrefixEdit\": \"Préfixe rajouté aux sujets des messages envoyés.\",\n        \"smtpServerEdit\": \"Serveur SMTP de votre fournisseur de messagerie.\",\n        \"smtpPortEdit\": \"Port SMTP à utiliser. 465 est recommandé pour SSL et TLS,\\n\"\n                        \"587 pour tout autre protocole.\",\n        \"useSTARTTLS\": \"Utilisation du protocole d'encryption STARTTLS (recommandé).\",\n        \"useTLS\": \"Utilisation du protocole d'encryption TLS.\",\n        \"authentication\": \"À sélectionner si le serveur nécessite de s'authentifier.\",\n        \"test\": \"Permet d'envoyer un message de test avec les réglages\\n\"\n                \"courants sans les sauvegarder.\"\n    },\n\n    # Config - Select profile\n    \"sprofile\": {\n        \"assMacValue\": \"Adresse physique de la Livebox associée au profil sélectionné.\\n\"\n                       \"Si aucune adresse n'est associée le profil n'a jamais été utilisé et peut être associé\\n\"\n                       \"à n'importe quelle Livebox sur le réseau.\",\n        \"detMacValue\": \"Adresse physique de la Livebox détectée via l'URL du profil sélectionné.\\n\"\n                       \"Si aucune Livebox n'est détectée cela veut dire que la connexion va échouer et qu'une autre\\n\"\n                       \"URL sera demandée.\\n\"\n                       \"Si l'adresse physique est différente de celle associée au profil sélectionné l'ancienne adresse\\n\"\n                       \"sera remplacée par la nouvelle.\",\n        \"createProfile\": \"Permet de créer un nouveau profil et de l'utiliser directement.\"\n    },\n\n    # Config - Release warning\n    \"rwarn\": {\n        \"downloadURL\": \"Cliquez ici pour ouvrir la page web de l'application sur votre navigateur.\\n\"\n                       \"Vous pourrez y télécharger la nouvelle version.\",\n        \"nowarning\": \"Cliquez ici pour ne plus être averti concernant cette version.\"\n    }\n}\n\n\n\n# ################################ MESSAGES ################################\n\nMESSAGES = {\n    # Main window\n    \"main\": {\n        \"cnx\": \"Impossible de se connecter à la Livebox.\",\n        \"auth\": \"L'authentification à la Livebox a échoué.\",\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"dlistErr\": \"Erreur lors du chargement de la liste des appareils.\",\n        \"topoErr\": \"Erreur lors du chargement de la topologie des appareils.\",\n        \"aName\": \"Cela attribuera à tous les appareils inconnus le même nom local que celui \"\n                 \"attribué dans la Livebox. Continuer ?\",\n        \"aNameStartup\": \"Faites-vous confiance à tous les appareils connectés et souhaitez-vous \"\n                        \"tous les nommer en fonction de leur nom attribué dans la Livebox ?\\n\"\n                        \"Vous pouvez toujours effectuer cette action plus tard.\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"lineSelect\": \"Vous devez sélectionner une ligne.\",\n        \"noGraph\": \"Aucun graphe à exporter.\",\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\"\n    },\n\n    # Device infos\n    \"dinfo\": {  \n        \"devSelect\": \"Vous devez sélectionner un appareil.\",\n        \"devWOL\": \"Signal de réveil sur réseau envoyé à l'appareil [{}].\",\n        \"devForget\": \"Êtes-vous sûr de vouloir oublier l'appareil [{}]?\",\n        \"devBlocked\": \"L'appareil [{}] est maintenant bloqué.\",\n        \"devUnblocked\": \"L'appareil [{}] est maintenant débloqué.\",\n        \"devNotBlocked\": \"L'appareil [{}] n'est pas bloqué.\",\n        \"devInfoErr\": \"Impossible d'obtenir les informations sur l'appareil.\"\n    },\n\n    # Events\n    \"events\": {\n        \"devSelect\": \"Vous devez sélectionner un appareil.\",\n        \"evtSelect\": \"Vous devez sélectionner un événement.\",\n        \"evtNotFound\": \"Entrée de l'événement non trouvée.\",\n        \"email\": \"Vous avez configuré au moins une règle avec l'envoi d'emails comme action \"\n                 \"mais vous n'avez pas configuré comment envoyer des e-mails. \"\n                 \"Voulez-vous configurer la façon d'envoyer des emails ?\",\n        \"macErr\": \"{} n'est pas une adresse MAC valide.\",\n        \"logDirExist\": \"Le répertoire des fichiers journaliers configuré n'existe pas. \"\n                       \"Voulez-vous le créer ?\",\n        \"logDirErr\": \"Impossible de créer le répertoire des fichiers journaliers. \"\n                     \"Erreur : {}.\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"dhcpSelect\": \"Vous devez sélectionner un bail DHCP.\",\n        \"dhcpLoad\": \"Impossible d'obtenir les informations DHCP.\",\n        \"deactiv\": \"La désactivation du serveur DHCP est susceptible de déconnecter vos appareils \"\n                   \"domestiques. Continuer ?\",\n        \"addrChange\": \"En modifiant l'adresse IP de votre Livebox et les autres paramètres du serveur DHCP, \"\n                      \"vous risquez de perdre tous vos services. Les adresses IP statiques devront être \"\n                      \"redéfinies selon le nouveau plan d'adressage et il faudra vous reconnecter. Continuer ?\",\n        \"dhcpValErr\": \"Mauvaises valeurs. Erreur : {}\",\n        \"bindLoad\": \"Impossible de charger les baux DHCP pour le domaine {}.\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"delAllPat\": \"Toutes les règles sélectionnées ont été supprimées.\",\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\",\n        \"ruleExport\": \"{} règles ont été exportées.\",\n        \"openFileErr\": \"Impossible d'ouvrir le fichier.\",\n        \"fileFormatErr\": \"Mauvais format de fichier.\",\n        \"fileTypeErr\": \"Mauvais type de fichier.\",\n        \"closeFileErr\": \"Impossible de fermer le fichier.\",\n        \"ruleImport\": \"{} règles ont été importées.\",\n        \"ruleDel\": \"{} règles ont été supprimées.\",\n        \"patLoadErr\": \"Impossible de charger les règles de redirection de port IPv4.\",\n        \"ptfLoadErr\": \"Impossible de charger les règles de redirection de protocole IPv4.\",\n        \"ipv6AddrPfixErr\": \"{} n'est pas une adresse ou préfix IPv6 valide.\",\n        \"ipv4AddrPfixErr\": \"{} n'est pas une adresse ou préfix IPv4 valide.\",\n        \"ipv6AddrErr\": \"{} n'est pas une adresse IPv6 valide.\",\n        \"ipv4AddrErr\": \"{} n'est pas une adresse IPv4 valide.\",\n        \"emptyAddr\": \"Adresse IP vide\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"callFilterAPIKeyErr\": \"Vous devez d'abord configurer une API Key CallFilter dans les préférences.\",\n        \"callSelect\": \"Vous devez sélectionner un appel téléphonique.\",\n        \"delAllCalls\": \"Êtes-vous sûr de vouloir supprimer tous les appels téléphoniques ?\",\n        \"callLoad\": \"Impossible de charger la liste des appels téléphoniques.\",\n        \"spamCount\": \"Nombre de numéros identifiés comme spams : {}.\",\n        \"contactSelect\": \"Vous devez sélectionner un contact.\",\n        \"delAllContacts\": \"Êtes-vous sûr de vouloir supprimer tous les contacts ?\",\n        \"ring\": \"Le téléphone devrait sonner.\",\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\",\n        \"contactLoad\": \"Imposible de charger la liste des contacts.\",\n        \"contactMax\": \"Le nombre maximum de contacts a été atteint.\",\n        \"contactGet\": \"Impossible de charger le contact.\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"wifiGetConfErr\": \"Une erreur s'est produite lors du chargement de la configuration Wifi.\",\n        \"wifiSetConfErr\": \"Une erreur s'est produite lors de la configuration du réseau Wifi.\",\n        \"wifiOn\": \"Wifi activé.\",\n        \"wifiOff\": \"Wifi désactivé.\",\n        \"gwifiOn\": \"Wifi invité activé. Réactivez le Planificateur si requis.\",\n        \"gwifiOff\": \"Wifi invité désactivé.\",\n        \"schedOn\": \"Planificateur activé.\",\n        \"schedOff\": \"Planificateur désactivé.\",\n        \"backRestSvcErr\" : \"Impossible de charger le statut de la sauvegarde et de la restauration.\",\n        \"backEnableSvcErr\" : \"Impossible d'activer la sauvegarde automatique.\",\n        \"backDisableSvcErr\" : \"Impossible de désactiver la sauvegarde automatique.\",\n        \"backupSvcOk\" : \"La sauvegarde a été demandée.\",\n        \"backupSvcErr\" : \"La demande de sauvegarde a échoué.\",\n        \"restoreSvcOk\" : \"La restauration a été demandée. La Livebox va redémarrer.\",\n        \"restoreSvcErr\" : \"La demande de restauration a échoué.\",\n        \"lbReboot\": \"Êtes-vous sûr de vouloir redémarrer la Livebox ?\",\n        \"lbReset\": \"Êtes-vous sûr de vouloir réinitialiser la Livebox ?\",\n        \"autoRestore\": \"Voulez-vous désactiver la restauration automatique de votre configuration ?\",\n        \"appQuit\": \"L'application va maintenant se fermer.\",\n        \"dynDnsLoadErr\": \"Impossible de charger la liste des domaines DynDNS.\",\n        \"dynDnsSvcErr\": \"Impossible de charger la liste des services DynDNS.\",\n        \"dynDnsDelErr\": \"Impossible de supprimer ce domaine DynDNS.\",\n        \"dynDnsHostName\": \"Le nom de domaine {} est déjà utilisé\",\n        \"dynDnsEnableErr\": \"Impossible d'obtenir l'état d'activation global du DynDNS.\",\n        \"dmzLoadErr\": \"Impossible de charger la liste des appareils dans la DMZ.\",\n        \"dmzDelErr\": \"Impossible de supprimer cet appareil de la DMZ.\",\n        \"routingLoadErr\": \"Impossible de charger la table de routage.\",\n        \"addrErr\": \"{} n'est pas une adresse valide.\",\n        \"maskErr\": \"{} n'est pas un masque valide.\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"cnxErr\": \"Impossible de se connecter au répéteur {} ({}).\",\n        \"noSign\": \"Non connecté au répéteur.\",\n        \"createFileErr\": \"Impossible de créer le fichier.\",\n        \"saveFileErr\": \"Impossible d'enregistrer le fichier.\",\n        \"wifiOn\": \"Wifi activé.\",\n        \"wifiOff\": \"Wifi désactivé.\",\n        \"schedOn\": \"Planificateur activé.\",\n        \"schedOff\": \"Planificateur désactivé.\",\n        \"reboot\": \"Êtes-vous sûr de vouloir redémarrer le répéteur ?\",\n        \"rebooting\": \"Le répéteur est maintenant en train de redémarrer.\",\n        \"reset\": \"Êtes-vous sûr de vouloir réinitialiser le répéteur ?\",\n        \"reseting\": \"Le répéteur est en cours de réinitialisation.\",\n        \"resign\": \"Êtes-vous sûr de vouloir vous reconnecter au répéteur ?\",\n        \"forceResign\": \"Le répéteur est inactif. Voulez-vous forcer la connexion ?\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"channelInfoErr\": \"Impossible de charger les informations de la chaîne. Erreur : {}\",\n        \"changeChannelErr\": \"Échec du changement de chaîne. Erreur : {}\",\n        \"keyPressErr\": \"La pression sur la touche a échoué. Erreur : {}\"\n    },\n\n    # Config\n    \"prefs\": {\n        \"wrongFile\": \"Le fichier de configuration {} est corrompu. Réinitialiser ?\",\n        \"configVersion\": \"Cette version de l'application est plus ancienne que le fichier \"\n                         \"de configuration. Si vous continuez, vous risquez de perdre une \"\n                         \"partie de la configuration. Êtes-vous sûr de vouloir continuer ?\",\n        \"keyFileErr\": \"Impossible de lire le fichier contenant la clef d'encryption.\",\n        \"configFolderErr\": \"Impossible de créer le répertoire de configuration.\",\n        \"profileNameErr\": \"Ce nom est déjà utilisé.\",\n        \"wrongMacFile\": \"Le fichier {} est corrompu, impossible de charger les noms d'appareils.\",\n        \"wrongSpamCallsFile\": \"Le fichier {} est corrompu, impossible de charger la liste des appels \"\n                              \"téléphoniques à indiquer comme spams.\",\n        \"profileName\": \"Veuillez définir le nom du profil.\",\n        \"profileDup\": \"Ce nom existe déjà.\",\n        \"profileOne\": \"Vous devez avoir au moins un profil.\",\n        \"emailSuccess\": \"Message envoyé avec succès.\",\n        \"emailFail\": \"Échec de l'envoi du message. Vérifiez votre configuration.\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/lang/LmLanguage_XX.py",
    "content": "### Livebox Monitor XXXXX Language module ###\n\n\n# ################################ LABELS ################################\n\nLABELS = {\n    # Main window\n    \"main\": {\n        \"Terminating threads...\": \"\",\n        \"Signing in...\": \"\",\n        \"Export...\"\n    },\n\n    # Export table dialog\n    \"export_table\": {\n        \"Options\": \"\",\n        \"Export Header\": \"\",\n        \"Columns\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Export Table\": \"\",\n        \"Save File\": \"\",\n        \"Exporting data...\": \"\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"T\": \"\",\n        \"Name\": \"\",\n        \"Livebox Name\": \"\",\n        \"MAC\": \"\",\n        \"IP\": \"\",\n        \"Link\": \"\",\n        \"A\": \"\",\n        \"Wifi\": \"\",\n        \"E\": \"\",\n        \"Rx\": \"\",\n        \"Tx\": \"\",\n        \"RxRate\": \"\",\n        \"TxRate\": \"\",\n        \"Refresh\": \"\",\n        \"Assign Names...\": \"\",\n        \"Device Infos\": \"\",\n        \"Device Events\": \"\",\n        \"IPv6...\": \"\",\n        \"DNS...\": \"\",\n        \"Device List\": \"\",\n        \"Getting IPv6 Information...\": \"\",\n        \"Getting DNS Information...\": \"\",\n        \"Loading device list...\": \"\",\n        \"<None>\": \"\",\n        \"Unknown\": \"\",\n        \"UNKNOWN\": \"\",\n        \"Assigning names to unknown devices...\": \"\",\n        \"Loading devices information...\": \"\",\n        \"Guest 2.4GHz\": \"\",\n        \"Guest 5GHz\": \"\"\n    },\n\n    # Device list - IPv6 dialog\n    \"ipv6\": {\n        \"IPv6 enabled:\": \"\",\n        \"CGNat:\": \"\",\n        \"Mode:\": \"\",\n        \"IPv6 address:\": \"\",\n        \"IPv6 prefix:\": \"\",\n        \"IPv6 gateway:\": \"\",\n        \"Name\": \"\",\n        \"Livebox Name\": \"\",\n        \"MAC\": \"\",\n        \"A\": \"\",\n        \"IPv4\": \"\",\n        \"IPv6\": \"\",\n        \"Prefix\": \"\",\n        \"OK\": \"\",\n        \"IPv6 Devices\": \"\",\n        \"Disable CGNat\": \"\",\n        \"Enable CGNat\": \"\"\n    },\n\n    # Device list - DNS dialog\n    \"dns\": {\n        \"Name\": \"\",\n        \"Livebox Name\": \"\",\n        \"MAC\": \"\",\n        \"A\": \"\",\n        \"IP\": \"\",\n        \"DNS\": \"\",\n        \"OK\": \"\",\n        \"Devices DNS\": \"\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"Name\": \"\",\n        \"Rx\": \"\",\n        \"Tx\": \"\",\n        \"RxRate\": \"\",\n        \"TxRate\": \"\",\n        \"Fiber\": \"\",\n        \"Guest 2.4GHz\": \"\",\n        \"Guest 5GHz\": \"\",\n        \"Attribute\": \"\",\n        \"Value\": \"\",\n        \"Livebox Infos\": \"\",\n        \"Internet Infos\": \"\",\n        \"Wifi Infos\": \"\",\n        \"LAN Infos\": \"\",\n        \"ONT Infos\": \"\",\n        \"VoIP Infos\": \"\",\n        \"IPTV Infos\": \"\",\n        \"USB Infos\": \"\",\n        \"Export...\": \"\",\n        \"Livebox Stats/Infos\": \"\",\n        \"Getting Livebox information...\": \"\",\n        \"Getting Internet information...\": \"\",\n        \"Getting Wifi information...\": \"\",\n        \"Getting LAN information...\": \"\",\n        \"Getting ONT information...\": \"\",\n        \"Getting VoIP information...\": \"\",\n        \"Getting IPTV information...\": \"\",\n        \"Getting USB information...\": \"\",\n        \"Save File\": \"\",\n        \"Exporting all information...\": \"\",\n        \"Livebox Information\": \"\",\n        \"Provider\": \"\",\n        \"Model Number\": \"\",\n        \"Model Name\": \"\",\n        \"Friendly Name\": \"\",\n        \"Allowed Host Headers\": \"\",\n        \"Model\": \"\",\n        \"Status\": \"\",\n        \"Livebox Up Time\": \"\",\n        \"Manufacturer\": \"\",\n        \"Manufacturer Model Name\": \"\",\n        \"Description\": \"\",\n        \"Serial Number\": \"\",\n        \"Hardware Version\": \"\",\n        \"Software Version\": \"\",\n        \"Rescue Version\": \"\",\n        \"Modem Firmware Version\": \"\",\n        \"Orange Firmware Version\": \"\",\n        \"Spec Version\": \"\",\n        \"Provisioning Code\": \"\",\n        \"Country\": \"\",\n        \"MAC Address\": \"\",\n        \"External IP Address\": \"\",\n        \"Total Number Of Reboots\": \"\",\n        \"Number Of Reboots\": \"\",\n        \"Upgrade Occurred\": \"\",\n        \"Reset Occurred\": \"\",\n        \"Restore Occurred\": \"\",\n        \"Active\": \"\",\n        \"First Boot\": \"\",\n        \"Boot Loader Version\": \"\",\n        \"Firewall Level\": \"\",\n        \"Internet Active\": \"\",\n        \"IPTV Active\": \"\",\n        \"Telephony Active\": \"\",\n        \"Time\": \"\",\n        \"Memory\": \"\",\n        \"Total Memory\": \"\",\n        \"Free Memory\": \"\",\n        \"Internet Information\": \"\",\n        \"Connection\": \"\",\n        \"Access Type\": \"\",\n        \"Username\": \"\",\n        \"Factory Reset Scheduled\": \"\",\n        \"Connection Error\": \"\",\n        \"Offer Type\": \"\",\n        \"Offer Name\": \"\",\n        \"IPTV Mode\": \"\",\n        \"WAN Status\": \"\",\n        \"Link Status\": \"\",\n        \"Link Type\": \"\",\n        \"Protocol\": \"\",\n        \"GPON State\": \"\",\n        \"Connection Status\": \"\",\n        \"Last Connection Error\": \"\",\n        \"IP Address\": \"\",\n        \"Remote Gateway\": \"\",\n        \"DNS Servers\": \"\",\n        \"IPv6 Address\": \"\",\n        \"IPv6 Prefix\": \"\",\n        \"Last Connection\": \"\",\n        \"Max Down Bit Rate\": \"\",\n        \"Max Up Bit Rate\": \"\",\n        \"DHCP Status\": \"\",\n        \"Subnet Mask\": \"\",\n        \"IP Routers\": \"\",\n        \"DHCP Server\": \"\",\n        \"Renew\": \"\",\n        \"Authentication\": \"\",\n        \"Authentication Information\": \"\",\n        \"Connection Up Time\": \"\",\n        \"Lease Time\": \"\",\n        \"Lease Time Remaining\": \"\",\n        \"VLAN ID\": \"\",\n        \"MTU\": \"\",\n        \"Wifi Information\": \"\",\n        \"Wifi\": \"\",\n        \"Enabled\": \"\",\n        \"BGN User Bandwidth\": \"\",\n        \"Scheduler Enabled\": \"\",\n        \"Radio Status\": \"\",\n        \"VAP Status\": \"\",\n        \"Vendor Name\": \"\",\n        \"SSID\": \"\",\n        \"SSID Advertisement\": \"\",\n        \"Security Mode\": \"\",\n        \"WEP Key\": \"\",\n        \"PreShared Key\": \"\",\n        \"Key Pass Phrase\": \"\",\n        \"WPS Enabled\": \"\",\n        \"WPS Methods\": \"\",\n        \"WPS Self PIN\": \"\",\n        \"WPS Pairing In Progress\": \"\",\n        \"MAC Filtering\": \"\",\n        \"Max Bitrate\": \"\",\n        \"AP Mode\": \"\",\n        \"STA Mode\": \"\",\n        \"WDS Mode\": \"\",\n        \"WET Mode\": \"\",\n        \"Frequency Band\": \"\",\n        \"Channel Bandwidth\": \"\",\n        \"Standard\": \"\",\n        \"Channel\": \"\",\n        \"Auto Channel Supported\": \"\",\n        \"Auto Channel Enabled\": \"\",\n        \"Channel Change Reason\": \"\",\n        \"Max Associated Devices\": \"\",\n        \"Active Associated Devices\": \"\",\n        \"Noise\": \"\",\n        \"Antenna Defect\": \"\",\n        \"LAN Information\": \"\",\n        \"DHCPv4\": \"\",\n        \"DHCPv4 Enabled\": \"\",\n        \"DHCPv4 Status\": \"\",\n        \"DHCPv4 Gateway\": \"\",\n        \"DHCPv4 Start\": \"\",\n        \"DHCPv4 End\": \"\",\n        \"DHCPv4 Lease Time\": \"\",\n        \"DHCPv6\": \"\",\n        \"DHCPv6 Status\": \"\",\n        \"LAN\": \"\",\n        \"Current Bit Rate\": \"\",\n        \"Max Bit Rate Supported\": \"\",\n        \"Current Duplex Mode\": \"\",\n        \"Power Saving Supported\": \"\",\n        \"Power Saving Enabled\": \"\",\n        \"ONT Information\": \"\",\n        \"ONT\": \"\",\n        \"SFP Status\": \"\",\n        \"Connection Status\": \"\",\n        \"Operating State\": \"\",\n        \"Orange\": \"\",\n        \"Firmware 1 Version\": \"\",\n        \"Firmware 1 State\": \"\",\n        \"Firmware 2 Version\": \"\",\n        \"Firmware 2 State\": \"\",\n        \"VEIP PPTP UNI\": \"\",\n        \"OMCI Is Tm Owner\": \"\",\n        \"Signal RxPower\": \"\",\n        \"Signal TxPower\": \"\",\n        \"Temperature\": \"\",\n        \"Voltage\": \"\",\n        \"BIAS\": \"\",\n        \"Equipment ID\": \"\",\n        \"Vendor ID\": \"\",\n        \"Vendor Product Code\": \"\",\n        \"Pon ID\": \"\",\n        \"Registration ID\": \"\",\n        \"Local Registration ID\": \"\",\n        \"ONT Software Version 0\": \"\",\n        \"ONT Software Version 1\": \"\",\n        \"ONT Software Version Active\": \"\",\n        \"ONU State\": \"\",\n        \"Current Down Bit Rate\": \"\",\n        \"Current Up Bit Rate\": \"\",\n        \"VoIP Information\": \"\",\n        \"VoIP\": \"\",\n        \"VoIP Enabled\": \"\",\n        \"{} Enabled\": \"\",\n        \"{} Status\": \"\",\n        \"{} Status Info\": \"\",\n        \"{} Number\": \"\",\n        \"DECT Information\": \"\",\n        \"PIN\": \"\",\n        \"RFPI\": \"\",\n        \"CAT-iq Version\": \"\",\n        \"Pairing Status\": \"\",\n        \"Radio State\": \"\",\n        \"Repeater Status\": \"\",\n        \"IPTV Information\": \"\",\n        \"IPTV Status\": \"\",\n        \"Multi Screens Status\": \"\",\n        \"Available\": \"\",\n        \"Disabled\": \"\",\n        \"IPTV Config\": \"\",\n        \"USB Information\": \"\",\n        \"USB\": \"\",\n        \"Inactive\": \"\",\n        \"Unknown USB\": \"\",\n        \"USB Device Storage\": \"\",\n        \"Key\": \"\",\n        \"Device Type\": \"\",\n        \"First Seen\": \"\",\n        \"File System\": \"\",\n        \"Capacity\": \"\",\n        \"Used Space\": \"\",\n        \"Names\": \"\",\n        \"USB Device\": \"\",\n        \"Location\": \"\",\n        \"Owner\": \"\",\n        \"USB Version\": \"\",\n        \"Device Version\": \"\",\n        \"Product ID\": \"\",\n        \"Port\": \"\",\n        \"Rate\": \"\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"Graph\": \"\",\n        \"Interfaces and devices to display\": \"\",\n        \"Name\": \"\",\n        \"Type\": \"\",\n        \"ID\": \"\",\n        \"Color\": \"\",\n        \"Add...\": \"\",\n        \"Delete\": \"\",\n        \"Window:\": \"\",\n        \"hours (0 = max)\": \"\",\n        \"Background color:\": \"\",\n        \"Apply\": \"\",\n        \"Export...\": \"\",\n        \"Download\": \"\",\n        \"Traffic (MB/s)\": \"\",\n        \"Time\": \"\",\n        \"Upload\": \"\",\n        \"Graph\": \"\",\n        \"Loading configuration...\": \"\",\n        \"Plotting graphes...\": \"\",\n        \"Interface\": \"\",\n        \"Device\": \"\",\n        \"Plotting graphes...\": \"\",\n        \"Select Export Folder\": \"\",\n        \"Exporting statistics...\": \"\"\n    },\n\n    # Add graph dialog\n    \"addgraph\": {\n        \"Type\": \"\",\n        \"Interface\": \"\",\n        \"Device\": \"\",\n        \"Object\": \"\",\n        \"Color\": \"\",\n        \"ID:\": \"\",\n        \"Measures number:\": \"\",\n        \"History:\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Add a graph\": \"\",\n        \"{:.1f} hours\": \"\"\n    },\n\n    # Device infos\n    \"dinfo\": {\n        \"Name\": \"\",\n        \"MAC\": \"\",\n        \"Attribute\": \"\",\n        \"Value\": \"\",\n        \"Refresh\": \"\",\n        \"Assign Name...\": \"\",\n        \"Assign Type...\": \"\",\n        \"Forget...\": \"\",\n        \"WakeOnLAN\": \"\",\n        \"Block\": \"\",\n        \"Unblock\": \"\",\n        \"Device Infos\": \"\",\n        \"Loading device icons...\": \"\",\n        \"Getting device information...\": \"\",\n        \"Key\": \"\",\n        \"Active\": \"\",\n        \"Authenticated\": \"\",\n        \"Blocked\": \"\",\n        \"First connection\": \"\",\n        \"Last connection\": \"\",\n        \"Last changed\": \"\",\n        \"Source\": \"\",\n        \"Livebox Name\": \"\",\n        \"DNS Name\": \"\",\n        \"Type\": \"\",\n        \"IPv4 Address\": \"\",\n        \"IPv6 Address\": \"\",\n        \"Manufacturer\": \"\",\n        \"Vendor ID\": \"\",\n        \"Serial Number\": \"\",\n        \"Product Class\": \"\",\n        \"Model Name\": \"\",\n        \"Software Version\": \"\",\n        \"Hardware Version\": \"\",\n        \"DHCP Option 55\": \"\",\n        \"Full Software Version\": \"\",\n        \"State\": \"\",\n        \"Protocol\": \"\",\n        \"Current Mode\": \"\",\n        \"Pairing Time\": \"\",\n        \"Uplink Type\": \"\",\n        \"Wifi Signal Strength\": \"\",\n        \"Wifi Signal Noise Ratio\": \"\",\n        \"Encryption Mode\": \"\",\n        \"Security Mode\": \"\",\n        \"Link Bandwidth\": \"\",\n        \"Operating Standard\": \"\",\n        \"Operating Band\": \"\",\n        \"Supported Standards\": \"\",\n        \"Supports 2.4GHz\": \"\",\n        \"Supports 5GHz\": \"\",\n        \"Supports 6GHz\": \"\"\n    },\n\n    # Device infos - Assign name dialog\n    \"dname\": {\n        \"Names for [{}] device:\": \"\",\n        \"Local Name\": \"\",\n        \"Livebox Name\": \"\",\n        \"DNS Name\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Assign device names\": \"\"\n    },\n\n    # Device infos - Assign type dialog\n    \"dtype\": {\n        \"Type for [{}] device:\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Assign a device type\": \"\"\n    },\n\n    # Events\n    \"events\": {\n        \"Name\": \"\",\n        \"MAC\": \"\",\n        \"Time\": \"\",\n        \"Reason\": \"\",\n        \"Attributes\": \"\",\n        \"Notifications...\": \"\",\n        \"Display Event...\": \"\",\n        \"Events\": \"\",\n        \"Event Entry\": \"\",\n        \"### UNKNOWN ###\": \"\",\n        \"Added\": \"\",\n        \"Deleted\": \"\",\n        \"Connected\": \"\",\n        \"Disconnected\": \"\",\n        \"Access change\": \"\",\n        \"Date:\": \"\",\n        \"Time:\": \"\",\n        \"Device:\": \"\",\n        \"MAC:\": \"\",\n        \"Event:\": \"\",\n        \"Access link:\": \"\",\n        \"Old access link:\": \"\",\n        \"New access link:\": \"\"\n    },\n\n    # Event Notification Rules\n    \"evnrules\" : {\n        \"Device\": \"\",\n        \"Added\": \"\",\n        \"Deleted\": \"\",\n        \"Connected\": \"\",\n        \"Disconnected\": \"\",\n        \"Link Changed\": \"\",\n        \"File\": \"\",\n        \"Email\": \"\",\n        \"Add\": \"\",\n        \"Delete\": \"\",\n        \"Any device\": \"\",\n        \"Any unknown device\": \"\",\n        \"MAC address\": \"\",\n        \"Events:\": \"\",\n        \"Device Added\": \"\",\n        \"Device Deleted\": \"\",\n        \"Device Connected\": \"\",\n        \"Device Disconnected\": \"\",\n        \"Device Access Link Changed\": \"\",\n        \"Actions:\": \"\",\n        \"Log in CSV file\": \"\",\n        \"Send Email\": \"\",\n        \"Rules\": \"\",\n        \"Event Resolution Frequency\": \"\",\n        \"seconds\": \"\",\n        \"CSV Files Path\": \"\",\n        \"Select\": \"\",\n        \"Default\": \"\",\n        \"Preferences\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Notification Rules Setup\": \"\",\n        \"-Unknown-\": \"\",\n        \"Select Folder\": \"\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"Name\": \"\",\n        \"Domain\": \"\",\n        \"MAC\": \"\",\n        \"IP\": \"\",\n        \"Refresh\": \"\",\n        \"Add...\": \"\",\n        \"Delete\": \"\",\n        \"Attribute\": \"\",\n        \"Value\": \"\",\n        \"DHCP Setup...\": \"\",\n        \"DHCP\": \"\",\n        \"Getting DHCP bindings...\": \"\",\n        \"Getting DHCP information...\": \"\",\n        \"DHCP Home Information\": \"\",\n        \"DHCPv4\": \"\",\n        \"DHCPv4 Enabled\": \"\",\n        \"DHCPv4 Status\": \"\",\n        \"DHCPv4 Gateway\": \"\",\n        \"Subnet Mask\": \"\",\n        \"DHCPv4 Start\": \"\",\n        \"DHCPv4 End\": \"\",\n        \"DHCPv4 Lease Time\": \"\",\n        \"DNS Servers\": \"\",\n        \"DHCPv6\": \"\",\n        \"DHCPv6 Status\": \"\",\n        \"DHCPv6 Prefix\": \"\",\n        \"DHCP Guest Information\": \"\",\n        \"Status\": \"\",\n        \"Lease Time\": \"\",\n        \"Lease Time Remaining\": \"\",\n        \"Check Authentication\": \"\",\n        \"Authentication Information\": \"\",\n        \"DHCPv4 Sent Options\": \"\",\n        \"DHCPv4 Received Options\": \"\",\n        \"DUID\": \"\",\n        \"Request Addresses\": \"\",\n        \"Request Prefixes\": \"\",\n        \"Requested Options\": \"\",\n        \"DHCPv6 Sent Options\": \"\",\n        \"DHCPv6 Received Options\": \"\"\n    },\n\n    # DHCP - Binding dialog\n    \"dbinding\": {\n        \"Device\": \"\",\n        \"MAC address\": \"\",\n        \"Domain\": \"\",\n        \"IP address\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Add DHCP binding\": \"\",\n        \"-Unknown-\": \"\"\n    },\n\n    # DHCP - Setup dialog\n    \"dsetup\": {\n        \"DHCP Enabled\": \"\",\n        \"Livebox IP address\": \"\",\n        \"Subnet mask\": \"\",\n        \"DHCP start IP\": \"\",\n        \"DHCP end IP\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"DHCP Setup\": \"\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"A\": \"\",\n        \"Type\": \"\",\n        \"Name\": \"\",\n        \"Port Forwarding Rule Description\": \"\",\n        \"Protocols\": \"\",\n        \"Internal Port\": \"\",\n        \"External Port\": \"\",\n        \"Device\": \"\",\n        \"External IPs\": \"\",\n        \"Refresh\": \"\",\n        \"Add...\": \"\",\n        \"Edit...\": \"\",\n        \"Delete\": \"\",\n        \"Delete All...\": \"\",\n        \"Export...\": \"\",\n        \"Import...\": \"\",\n        \"Protocol Forwarding Rule Description\": \"\",\n        \"NAT/PAT\": \"\",\n        \"Disable\": \"\",\n        \"Enable\": \"\",\n        \"Saving rule...\": \"\",\n        \"Deleting rule...\": \"\",\n        \"Deleting rules...\": \"\",\n        \"Export File\": \"\",\n        \"Port Forwarding Rules\": \"\",\n        \"Exporting port forwarding rules...\": \"\",\n        \"Select file to import\": \"\",\n        \"Importing port forwarding rules...\": \"\",\n        \"Protocol Forwarding Rules\": \"\",\n        \"Exporting protocol forwarding rules...\": \"\",\n        \"Importing protocol forwarding rules...\": \"\",\n        \"Loading port forwarding rules...\": \"\",\n        \"All\": \"\",\n        \"Loading protocol forwarding rules...\": \"\"\n    },\n\n    # NAT/PAT - PAT rule dialog\n    \"patrule\": {\n        \"Enabled\": \"\",\n        \"Type\": \"\",\n        \"Name\": \"\",\n        \"Description\": \"\",\n        \"Protocols\": \"\",\n        \"TCP\": \"\",\n        \"UDP\": \"\",\n        \"Internal Port\": \"\",\n        \"External Port\": \"\",\n        \"Device\": \"\",\n        \"IP Address\": \"\",\n        \"External IPs\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Port Forwarding Rule\": \"\",\n        \"-Unknown-\": \"\"\n    },\n\n    # NAT/PAT - PTF rule dialog\n    \"ptfrule\": {\n        \"Enabled\": \"\",\n        \"Type\": \"\",\n        \"Name\": \"\",\n        \"Description\": \"\",\n        \"Protocols\": \"\",\n        \"Device\": \"\",\n        \"IP Address\": \"\",\n        \"External IPs\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Protocol Forwarding Rule\": \"\",\n        \"-Unknown-\": \"\"\n    },\n\n    # NAT/PAT - rule type selection dialog\n    \"nprtype\": {\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Select rule types\": \"\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"T\": \"\",\n        \"Time\": \"\",\n        \"Number\": \"\",\n        \"Contact\": \"\",\n        \"Duration\": \"\",\n        \"Refresh\": \"\",\n        \"Delete\": \"\",\n        \"Delete All...\": \"\",\n        \"Spams scan\": \"\",\n        \"Spam sites\": \"\",\n        \"Set as spam\": \"\",\n        \"Unset as spam\": \"\",\n        \"Name\": \"\",\n        \"Mobile\": \"\",\n        \"Home\": \"\",\n        \"Work\": \"\",\n        \"Ring\": \"\",\n        \"Add...\": \"\",\n        \"Edit...\": \"\",\n        \"Phone Ring\": \"\",\n        \"Export...\": \"\",\n        \"Import...\": \"\",\n        \"Phone\": \"\",\n        \"Loading phone call list...\": \"\",\n        \"Export File\": \"\",\n        \"Livebox Contacts\": \"\",\n        \"Exporting all contacts...\": \"\",\n        \"Select files to import\": \"\",\n        \"Importing contacts...\": \"\",\n        \"Cannot import file(s): \": \"\",\n        \"Loading contact list...\": \"\",\n        \"Deleting phone call list...\": \"\",\n        \"Deleting contact list...\": \"\"\n    },\n\n    # Phone - Contact edit\n    \"pcontact\": {\n        \"First name\": \"\",\n        \"Name\": \"\",\n        \"Mobile\": \"\",\n        \"Home\": \"\",\n        \"Work\": \"\",\n        \"Ring tone\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Contact edition\": \"\",\n        \"Contact creation\": \"\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"Configuration...\": \"\",\n        \"Guest...\": \"\",\n        \"Wifi ON\": \"\",\n        \"Wifi OFF\": \"\",\n        \"Guest ON\": \"\",\n        \"Guest OFF\": \"\",\n        \"Wifi Scheduler ON\": \"\",\n        \"Wifi Scheduler OFF\": \"\",\n        \"Show Global Status...\": \"\",\n        \"Wifi\": \"\",\n        \"Backup and Restore...\": \"\",\n        \"LEDs and Screen...\": \"\",\n        \"Miscellaneous\": \"\",\n        \"Reboot Livebox...\": \"\",\n        \"Factory Reset Livebox...\": \"\",\n        \"Reboot History...\": \"\",\n        \"Reboots\": \"\",\n        \"Firewall Levels...\": \"\",\n        \"Ping Responses...\": \"\",\n        \"DynDNS...\": \"\",\n        \"DMZ...\": \"\",\n        \"Routing Table...\": \"\",\n        \"Network\": \"\",\n        \"An Open Source project\": \"\",\n        \"About\": \"\",\n        \"Preferences...\": \"\",\n        \"Change Profile...\": \"\",\n        \"Email Setup...\": \"\",\n        \"Setup\": \"\",\n        \"Set Log Level...\": \"\",\n        \"Call APIs...\": \"\",\n        \"Generate API Documentation...\": \"\",\n        \"Debug\": \"\",\n        \"Quit Application\": \"\",\n        \"Actions\": \"\",\n        \"Getting Wifi Configuration...\": \"\",\n        \"Setting Wifi Configuration...\": \"\",\n        \"Getting Guest Wifi Configuration...\": \"\",\n        \"Setting Guest Wifi Configuration...\": \"\",\n        \"Getting Wifi Global Status...\": \"\",\n        \"Getting Reboot History...\": \"\",\n        \"Setting LEDs & Screen Setup...\": \"\",\n        \"Setting Firewall Levels...\": \"\",\n        \"Set Ping Responses...\": \"\",\n        \"Log level selection\": \"\",\n        \"Please select a log level:\": \"\",\n        \"Select Export Folder\": \"\",\n        \"Generating API document files...\": \"\",\n        \"Activating Wifi...\": \"\",\n        \"Deactivating Wifi...\": \"\",\n        \"Activating Guest Wifi...\": \"\",\n        \"Deactivating Guest Wifi...\": \"\",\n        \"Activating Wifi Scheduler...\": \"\",\n        \"Deactivating Wifi Scheduler...\": \"\",\n        \"Rebooting Livebox...\": \"\",\n        \"Reseting Livebox...\": \"\"\n    },\n\n    # Actions - Reboot history\n    \"rhistory\": {\n        \"Boot Date\": \"\",\n        \"Boot Reason\": \"\",\n        \"Shutdown Date\": \"\",\n        \"Shutdown Reason\": \"\",\n        \"OK\": \"\",\n        \"{} Reboot History\": \"\",\n        \"Unknown\": \"\"\n    },\n\n    # Actions - Wifi configuration\n    \"wconfig\": {\n        \"Enabled\": \"\",\n        \"Duration\": \"\",\n        \"hours (0 = unlimited).\": \"\",\n        \"Radio Band\": \"\",\n        \"SSID\": \"\",\n        \"Options\": \"\",\n        \"SSID Broadcast\": \"\",\n        \"WPS\": \"\",\n        \"MAC Filtering\": \"\",\n        \"Devices\": \"\",\n        \"Security\": \"\",\n        \"Password\": \"\",\n        \"Channel\": \"\",\n        \"Mode\": \"\",\n        \"Bandwidth\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Guest Wifi Configuration\": \"\",\n        \"Wifi Configuration\": \"\",\n        \"Enabled for {}\": \"\",\n        \"Add...\": \"\",\n        \"Enter MAC address to filter:\": \"\",\n        \"Already in the list: {}\": \"\",\n        \"Invalid MAC address: {}\": \"\"\n    },\n\n    # Actions - Wifi global status\n    \"wglobal\": {\n        \"Interfaces\": \"\",\n        \"OK\": \"\",\n        \"Wifi Global Status\": \"\",\n        \"{} Enabled\": \"\",\n        \"{} Active\": \"\",\n        \"Wifi Scheduler\": \"\",\n        \"{} VAP\": \"\",\n        \"Guest 2.4GHz\": \"\",\n        \"Guest 5GHz\": \"\",\n        \"Error\": \"\",\n        \"Inactive\": \"\",\n        \"Not signed\": \"\"\n    },\n\n    # Actions - Backup & Restore\n    \"backrest\": {\n        \"Auto backup enabled:\": \"\",\n        \"Status:\": \"\",\n        \"Last Backup:\": \"\",\n        \"Refresh\": \"\",\n        \"Enable Auto Backup\": \"\",\n        \"Disable Auto Backup\": \"\",\n        \"Force Backup\": \"\",\n        \"Force Restore\": \"\",\n        \"OK\": \"\",\n        \"Backup and Restore Setup\": \"\"\n    },\n\n    # Actions - Screen & LEDs\n    \"screen\" : {\n        \"LED Brightness\": \"\",\n        \"Show Wifi Password\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"LEDs & Screen Setup\": \"\"\n    },\n\n    # Actions - Firewall level\n    \"fwlevel\": {\n        \"IPv4 Firewall Level\": \"\",\n        \"IPv6 Firewall Level\": \"\",\n        \"High\": \"\",\n        \"Medium\": \"\",\n        \"Low\": \"\",\n        \"Custom\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Firewall Levels\": \"\"\n    },\n\n    # Actions - Ping Response\n    \"pingr\": {\n        \"Respond to IPv4 ping\": \"\",\n        \"Respond to IPv6 ping\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Ping Responses\": \"\"\n    },\n\n    # Actions - DynDNS\n    \"dyndns\": {\n        \"Service\": \"\",\n        \"Host Name\": \"\",\n        \"User Email\": \"\",\n        \"Password\": \"\",\n        \"Last Update\": \"\",\n        \"Status\": \"\",\n        \"Refresh\": \"\",\n        \"Delete\": \"\",\n        \"Hosts\": \"\",\n        \"Add\": \"\",\n        \"Add Host\": \"\",\n        \"OK\": \"\",\n        \"DynDNS\": \"\",\n        \"Loading DynDNS hosts...\": \"\",\n        \"Show Passwords\": \"\",\n        \"Hide Passwords\": \"\",\n        \"Disable All\": \"\",\n        \"Enable All\": \"\"\n    },\n\n    # Actions - DMZ\n    \"dmz\": {\n        \"ID\": \"\",\n        \"IP\": \"\",\n        \"Device\": \"\",\n        \"External IPs\": \"\",\n        \"Refresh\": \"\",\n        \"Delete\": \"\",\n        \"DMZ Devices\": \"\",\n        \"IP Address\": \"\",\n        \"Add\": \"\",\n        \"Add DMZ\": \"\",\n        \"OK\": \"\",\n        \"DMZ\": \"\",\n        \"Loading DMZ devices...\": \"\",\n        \"All\": \"\",\n        \"-Unknown-\": \"\"\n    },\n\n    # Actions - Routing\n    \"routing\": {\n        \"Destination Network\": \"\",\n        \"Mask\": \"\",\n        \"Gateway\": \"\",\n        \"Priority\": \"\",\n        \"A\": \"\",\n        \"Status\": \"\",\n        \"Refresh\": \"\",\n        \"Enable\": \"\",\n        \"Disable\": \"\",\n        \"Delete\": \"\",\n        \"Rules\": \"\",\n        \"Destination network\": \"\",\n        \"Destination mask\": \"\",\n        \"Add\": \"\",\n        \"Edit\": \"\",\n        \"Enabled\": \"\",\n        \"Add/Edit Rule\": \"\",\n        \"OK\": \"\",\n        \"Routing Table\": \"\",\n        \"Loading Routing Table Rules...\": \"\"\n    },\n\n    # Actions - Call API\n    \"callapi\": {\n        \"Preset\": \"\",\n        \"Service\": \"\",\n        \"Method\": \"\",\n        \"Parameters (JSON):\": \"\",\n        \"Call\": \"\",\n        \"OK\": \"\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"Name\": \"\",\n        \"Rx\": \"\",\n        \"Tx\": \"\",\n        \"RxRate\": \"\",\n        \"TxRate\": \"\",\n        \"Wifi ON\": \"\",\n        \"Wifi OFF\": \"\",\n        \"Wifi Scheduler ON\": \"\",\n        \"Wifi Scheduler OFF\": \"\",\n        \"Reboot Repeater...\": \"\",\n        \"Reset Repeater...\": \"\",\n        \"Reboot History...\": \"\",\n        \"Call APIs...\": \"\",\n        \"Resign...\": \"\",\n        \"Actions\": \"\",\n        \"Attribute\": \"\",\n        \"Value\": \"\",\n        \"Repeater Infos\": \"\",\n        \"Wifi Infos\": \"\",\n        \"LAN Infos\": \"\",\n        \"Export...\": \"\",\n        \"Signing in to repeaters...\": \"\",\n        \"Wrong repeater password\": \"\",\n        \"Please enter password for repeater {0} ({1}):\": \"\",\n        \"Getting repeater information...\": \"\",\n        \"Getting Wifi information...\": \"\",\n        \"Getting LAN information...\": \"\",\n        \"Save File\": \"\",\n        \"{} Infos.txt\": \"\",\n        \"Exporting all information...\": \"\",\n        \"Repeater Information\": \"\",\n        \"Model Name\": \"\",\n        \"Repeater Up Time\": \"\",\n        \"Serial Number\": \"\",\n        \"Hardware Version\": \"\",\n        \"Software Version\": \"\",\n        \"Orange Firmware Version\": \"\",\n        \"Country\": \"\",\n        \"Total Number Of Reboots\": \"\",\n        \"Time\": \"\",\n        \"Wifi Information\": \"\",\n        \"Wifi\": \"\",\n        \"Enabled\": \"\",\n        \"Active\": \"\",\n        \"Mode\": \"\",\n        \"WPS Mode\": \"\",\n        \"Link Type\": \"\",\n        \"Read Only\": \"\",\n        \"Pairing Status\": \"\",\n        \"PIN Code\": \"\",\n        \"Scheduler Enabled\": \"\",\n        \"Radio Status\": \"\",\n        \"VAP Status\": \"\",\n        \"Vendor Name\": \"\",\n        \"MAC Address\": \"\",\n        \"SSID\": \"\",\n        \"SSID Advertisement\": \"\",\n        \"Security Mode\": \"\",\n        \"WEP Key\": \"\",\n        \"PreShared Key\": \"\",\n        \"Key Pass Phrase\": \"\",\n        \"WPS Enabled\": \"\",\n        \"WPS Methods\": \"\",\n        \"WPS Self PIN\": \"\",\n        \"WPS Pairing In Progress\": \"\",\n        \"MAC Filtering\": \"\",\n        \"Max Bitrate\": \"\",\n        \"AP Mode\": \"\",\n        \"STA Mode\": \"\",\n        \"WDS Mode\": \"\",\n        \"WET Mode\": \"\",\n        \"Frequency Band\": \"\",\n        \"Channel Bandwidth\": \"\",\n        \"Standard\": \"\",\n        \"Channel\": \"\",\n        \"Auto Channel Supported\": \"\",\n        \"Auto Channel Enabled\": \"\",\n        \"Channel Change Reason\": \"\",\n        \"Max Associated Devices\": \"\",\n        \"Active Associated Devices\": \"\",\n        \"Noise\": \"\",\n        \"Antenna Defect\": \"\",\n        \"LAN Information\": \"\",\n        \"Link Status\": \"\",\n        \"Protocol\": \"\",\n        \"Connection Status\": \"\",\n        \"Last Connection Error\": \"\",\n        \"IP Address\": \"\",\n        \"Remote Gateway\": \"\",\n        \"DNS Servers\": \"\",\n        \"IPv6 Address\": \"\",\n        \"MTU\": \"\",\n        \"Link to the Livebox\": \"\",\n        \"Livebox link Infos\": \"\",\n        \"Interface\": \"\",\n        \"LAN\": \"\",\n        \"Current Bit Rate\": \"\",\n        \"Max Bit Rate Supported\": \"\",\n        \"Current Duplex Mode\": \"\",\n        \"Power Saving Supported\": \"\",\n        \"Power Saving Enabled\": \"\",\n        \"Activating Repeater Wifi...\": \"\",\n        \"Deactivating Repeater Wifi...\": \"\",\n        \"Activating Repeater Scheduler...\": \"\",\n        \"Deactivating Repeater Scheduler...\": \"\",\n        \"Rebooting Repeater...\": \"\",\n        \"Reseting Repeater...\": \"\",\n        \"Getting Reboot History...\": \"\",\n        \"Signing in to repeater...\": \"\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"Status:\": \"\",\n        \"Type:\": \"\",\n        \"State:\": \"\",\n        \"Status\": \"\",\n        \"Vendor:\": \"\",\n        \"Model:\": \"\",\n        \"MAC:\": \"\",\n        \"IP:\": \"\",\n        \"Infos\": \"\",\n        \"Name:\": \"\",\n        \"Maker:\": \"\",\n        \"Model:\": \"\",\n        \"ID:\": \"\",\n        \"Description\": \"\",\n        \"Reset Cache\": \"\",\n        \"Actions\": \"\",\n        \"Number:\": \"\",\n        \"EPG:\": \"\",\n        \"Channel\": \"\",\n        \"Go\": \"\",\n        \"Set Channel\": \"\",\n        \"Remote Control\": \"\",\n        \"Getting Channel Information...\": \"\",\n        \"Error\": \"\"\n    },\n\n    # Config - Preferences\n    \"prefs\": {\n        \"Main\": \"\",\n        \"Add\": \"\",\n        \"Delete\": \"\",\n        \"Name\": \"\",\n        \"Livebox URL\": \"\",\n        \"Livebox User\": \"\",\n        \"Filter Devices\": \"\",\n        \"Only Active Devices\": \"\",\n        \"MacAddr Table File\": \"\",\n        \"Default\": \"\",\n        \"Profiles\": \"\",\n        \"macaddress.io API Key\": \"\",\n        \"CallFilter API Key\": \"\",\n        \"Language\": \"\",\n        \"Tooltips\": \"\",\n        \"Intl Phone Code\": \"\",\n        \"List Header Height\": \"\",\n        \"List Header Font Size\": \"\",\n        \"List Line Height\": \"\",\n        \"List Line Font Size\": \"\",\n        \"Timeout Margin\": \"\",\n        \"CSV Delimiter\": \"\",\n        \"Realtime wifi device statistics\": \"\",\n        \"Prevent sleep mode\": \"\",\n        \"Use native graphical interface style\": \"\",\n        \"Save passwords\": \"\",\n        \"Preferences\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Create Profile\": \"\",\n        \"Profile name:\": \"\"\n    },\n\n    # Config - Connection\n    \"cnx\": {\n        \"Cannot connect to the Livebox.\": \"\",\n        \"It might be unreachable, in that case just wait.\": \"\",\n        \"Otherwise, try {0}, {1} or {2}.\": \"\",\n        \"Livebox URL\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Livebox connection\": \"\"\n    },\n\n    # Config - Signin\n    \"signin\": {\n        \"User\": \"\",\n        \"Password\": \"\",\n        \"Save passwords\" : \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Enter password\": \"\"\n    },\n\n    # Config - email\n    \"email\": {\n        \"From Address\": \"\",\n        \"To Address\": \"\",\n        \"Subject Prefix\": \"\",\n        \"SMTP Server\": \"\",\n        \"Port\": \"\",\n        \"Options\": \"\",\n        \"Use STARTTLS\": \"\",\n        \"Use TLS\": \"\",\n        \"Authentication\": \"\",\n        \"User\": \"\",\n        \"Password\": \"\",\n        \"Test Sending\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"Email Setup\": \"\",\n        \"Sending test email...\": \"\",\n        \"Test Message\": \"\",\n        \"This is a test email from LiveboxMonitor.\": \"\"\n    },\n\n    # Config - Select profile\n    \"sprofile\": {\n        \"Profile selection\": \"\",\n        \"Please select a profile to use:\": \"\",\n        \"Associated Livebox MAC:\": \"\",\n        \"Detected Livebox MAC:\": \"\",\n        \"New Profile...\": \"\",\n        \"OK\": \"\",\n        \"Cancel\": \"\",\n        \"<None>\": \"\",\n        \"No Livebox detected at profile's URL.\": \"\",\n        \"Detected MAC will be associated to this profile.\": \"\",\n        \"Warning: another Livebox is associated to this profile.\": \"\"\n    },\n\n    # Config - Release warning\n    \"rwarn\": {\n        \"New release {0} has been published.\": \"\",\n        \"You are using release {0}.\": \"\",\n        \"OK\": \"\",\n        \"Don't warn me again\": \"\",\n        \"You are not using the latest release\": \"\"\n    },\n\n    # Tools\n    \"tools\": {\n        \"Error\": \"\",\n        \"Status\": \"\",\n        \"Please confirm\": \"\",\n        \"True\": \"\",\n        \"False\": \"\",\n        \"OK\": \"\"\n    }\n}\n\n\n\n# ################################ TOOLTIPS ################################\n\nTOOLTIPS = {\n    # Main window\n    \"main\": {\n        \"deviceListTab\": \"\",\n        \"liveboxInfoTab\": \"\",\n        \"graphTab\": \"\",\n        \"deviceInfoTab\": \"\",\n        \"eventsTab\": \"\",\n        \"dhcpTab\": \"\",\n        \"natPatTab\": \"\",\n        \"phoneTab\": \"\",\n        \"actionTab\": \"\",\n        \"repeaterTab\": \"\",\n        \"tvdecoderTab\": \"\"\n    },\n\n    # Export table dialog\n    \"export_table\": {\n        \"optionsLabel\": \"\",\n        \"exportHeaderCheckbox\": \"\",\n        \"columnsLabel\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"dlist_Type\": \"\",\n        \"dlist_Name\": \"\",\n        \"dlist_LBName\": \"\",\n        \"dlist_MAC\": \"\",\n        \"dlist_IP\": \"\",\n        \"dlist_Link\": \"\",\n        \"dlist_Active\": \"\",\n        \"dlist_Wifi\": \"\",\n        \"dlist_Event\": \"\",\n        \"dlist_Rx\": \"\",\n        \"dlist_Tx\": \"\",\n        \"dlist_RxRate\": \"\",\n        \"dlist_TxRate\": \"\",\n        \"refresh\": \"\",\n        \"assignNames\": \"\",\n        \"deviceInfo\": \"\",\n        \"deviceEvents\": \"\",\n        \"ipv6\": \"\",\n        \"dns\": \"\"\n    },\n\n    # Device list - IPv6 dialog\n    \"ipv6\": {\n        \"ipv6_Name\": \"\",\n        \"ipv6_LBName\": \"\",\n        \"ipv6_MAC\": \"\",\n        \"ipv6_Active\": \"\",\n        \"ipv6_IPv4\": \"\",\n        \"ipv6_IPv6\": \"\",\n        \"ipv6_Prefix\": \"\",\n        \"ipv6EnabledLabel\": \"\",\n        \"ipv6Enabled\": \"\",\n        \"cgNatLabel\": \"\",\n        \"cgNat\": \"\",\n        \"ipv6ModeLabel\": \"\",\n        \"ipv6Mode\": \"\",\n        \"addrLabel\": \"\",\n        \"addr\": \"\",\n        \"prefixLabel\": \"\",\n        \"prefix\": \"\",\n        \"gatewayLabel\": \"\",\n        \"gateway\": \"\",\n        \"ipv6Table\": \"\",\n        \"cgNatButton\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Device list - DNS dialog\n    \"dns\": {\n        \"dns_Name\": \"\",\n        \"dns_LBName\": \"\",\n        \"dns_MAC\": \"\",\n        \"dns_Active\": \"\",\n        \"dns_IP\": \"\",\n        \"dns_DNS\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"stats_Name\": \"\",\n        \"stats_Rx\": \"\",\n        \"stats_Tx\": \"\",\n        \"stats_RxRate\": \"\",\n        \"stats_TxRate\": \"\",\n        \"alist_Attribute\": \"\",\n        \"alist_Value\": \"\",\n        \"liveboxInfo\": \"\",\n        \"internetInfo\": \"\",\n        \"wifiInfo\": \"\",\n        \"lanInfo\": \"\",\n        \"ontInfo\": \"\",\n        \"voipInfo\": \"\",\n        \"iptvInfo\": \"\",\n        \"usbInfo\": \"\",\n        \"exportInfo\": \"\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"graphList_Name\": \"\",\n        \"graphList_Type\": \"\",\n        \"graphList_ID\": \"\",\n        \"graphList_Color\": \"\",\n        \"selectLabel\": \"\",\n        \"graphList\": \"\",\n        \"addGraph\": \"\",\n        \"delGraph\": \"\",\n        \"windowLabel\": \"\",\n        \"windowEdit\": \"\",\n        \"windowUnit\": \"\",\n        \"backColorLabel\": \"\",\n        \"backColor\": \"\",\n        \"apply\": \"\",\n        \"export\": \"\",\n        \"downGraph\": \"\",\n        \"upGraph\": \"\"\n    },\n\n    # Add graph dialog\n    \"addgraph\": {\n        \"typeLabel\": \"\",\n        \"typeCombo\": \"\",\n        \"objectLabel\": \"\",\n        \"objectCombo\": \"\",\n        \"colorLabel\": \"\",\n        \"colorEdit\": \"\",\n        \"IDLabel\": \"\",\n        \"IDValue\": \"\",\n        \"measureLabel\": \"\",\n        \"measureValue\": \"\",\n        \"historyLabel\": \"\",\n        \"historyValue\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Device infos\n    \"dinfo\": {\n        \"dlist_Name\": \"\",\n        \"dlist_MAC\": \"\",\n        \"alist_Attribute\": \"\",\n        \"alist_Value\": \"\",\n        \"refresh\": \"\",\n        \"assignName\": \"\",\n        \"assignType\": \"\",\n        \"forget\": \"\",\n        \"wol\": \"\",\n        \"block\": \"\",\n        \"unblock\": \"\"\n    },\n\n    # Device infos - Assign name dialog\n    \"dname\": {\n        \"mainLabel\": \"\",\n        \"nameCheckBox\": \"\",\n        \"nameEdit\": \"\",\n        \"liveboxNameCheckBox\": \"\",\n        \"liveboxNameEdit\": \"\",\n        \"dnsNameCheckBox\": \"\",\n        \"dnsNameEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Device infos - Assign type dialog\n    \"dtype\": {\n        \"mainLabel\": \"\",\n        \"typeNameCombo\": \"\",\n        \"typeKeyEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Events\n    \"events\": {\n        \"dlist_Name\": \"\",\n        \"dlist_MAC\": \"\",\n        \"elist_Time\": \"\",\n        \"elist_Reason\": \"\",\n        \"elist_Attribute\": \"\",\n        \"notifications\": \"\",\n        \"displayEvent\": \"\"\n    },\n\n    # Event Notification Rules\n    \"evnrules\" : {\n        \"rlist_Key\": \"\",\n        \"rlist_Add\": \"\",\n        \"rlist_Delete\": \"\",\n        \"rlist_Active\": \"\",\n        \"rlist_Inactive\": \"\",\n        \"rlist_Link\": \"\",\n        \"rlist_File\": \"\",\n        \"rlist_Email\": \"\",\n        \"addRule\": \"\",\n        \"delRule\": \"\",\n        \"deviceLabel\": \"\",\n        \"deviceCombo\": \"\",\n        \"macLabel\": \"\",\n        \"macEdit\": \"\",\n        \"eventsLabel\": \"\",\n        \"addEvent\": \"\",\n        \"delEvent\": \"\",\n        \"actEvent\": \"\",\n        \"inaEvent\": \"\",\n        \"lnkEvent\": \"\",\n        \"actionsLabel\": \"\",\n        \"fileAction\": \"\",\n        \"emailAction\": \"\",\n        \"ruleGroup\": \"\",\n        \"flushFrequencyLabel\": \"\",\n        \"flushFrequencyEdit\": \"\",\n        \"flushFrequencySecLabel\": \"\",\n        \"eventFilePathLabel\": \"\",\n        \"eventFilePathEdit\": \"\",\n        \"eventFilePathSelectButton\": \"\",\n        \"defaultFilePath\": \"\",\n        \"prefsGroup\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"dlist_Name\": \"\",\n        \"dlist_Domain\": \"\",\n        \"dlist_MAC\": \"\",\n        \"dlist_IP\": \"\",\n        \"alist_Attribute\": \"\",\n        \"alist_Value\": \"\",\n        \"refreshBinding\": \"\",\n        \"addBinding\": \"\",\n        \"delBinding\": \"\",\n        \"refreshDhcpAttribute\": \"\",\n        \"dhcpSetup\": \"\"\n    },\n\n    # DHCP - Binding dialog\n    \"dbinding\": {\n        \"deviceLabel\": \"\",\n        \"deviceCombo\": \"\",\n        \"macLabel\": \"\",\n        \"macEdit\": \"\",\n        \"domainLabel\": \"\",\n        \"domainCombo\": \"\",\n        \"ipLabel\": \"\",\n        \"ipEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # DHCP - Setup dialog\n    \"dsetup\": {\n        \"enableCheckbox\": \"\",\n        \"liveboxIpLabel\": \"\",\n        \"liveboxIpEdit\": \"\",\n        \"maskLabel\": \"\",\n        \"maskEdit\": \"\",\n        \"minLabel\": \"\",\n        \"minEdit\": \"\",\n        \"maxLabel\": \"\",\n        \"maxEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"patList\": \"\",\n        \"plist_Enabled\": \"\",\n        \"plist_Type\": \"\",\n        \"plist_ID\": \"\",\n        \"plist_Description\": \"\",\n        \"plist_Protocols\": \"\",\n        \"plist_IntPort\": \"\",\n        \"plist_ExtPort\": \"\",\n        \"plist_Device\": \"\",\n        \"plist_ExtIPs\": \"\",\n        \"refreshPat\": \"\",\n        \"enablePat\": \"\",\n        \"addPat\": \"\",\n        \"editPat\": \"\",\n        \"deletePat\": \"\",\n        \"deleteAllPat\": \"\",\n        \"exportPat\": \"\",\n        \"importPat\": \"\",\n        \"ptfList\": \"\",\n        \"tlist_Enabled\": \"\",\n        \"tlist_Type\": \"\",\n        \"tlist_ID\": \"\",\n        \"tlist_Description\": \"\",\n        \"tlist_Protocols\": \"\",\n        \"tlist_Device\": \"\",\n        \"tlist_ExtIPs\": \"\",\n        \"refreshPtf\": \"\",\n        \"enablePtf\": \"\",\n        \"addPtf\": \"\",\n        \"editPtf\": \"\",\n        \"deletePtf\": \"\",\n        \"deleteAllPtf\": \"\",\n        \"exportPtf\": \"\",\n        \"importPtf\": \"\"\n    },\n\n    # NAT/PAT - PAT rule dialog\n    \"patrule\": {\n        \"enableCheckbox\": \"\",\n        \"typeLabel\": \"\",\n        \"typeCombo\": \"\",\n        \"nameLabel\": \"\",\n        \"nameEdit\": \"\",\n        \"descLabel\": \"\",\n        \"descEdit\": \"\",\n        \"protocolsLabel\": \"\",\n        \"tcpCheckbox\": \"\",\n        \"udpCheckbox\": \"\",\n        \"intPortLabel\": \"\",\n        \"intPortEdit\": \"\",\n        \"extPortLabel\": \"\",\n        \"extPortEdit\": \"\",\n        \"deviceLabel\": \"\",\n        \"deviceCombo\": \"\",\n        \"ipLabel\": \"\",\n        \"ipEdit\": \"\",\n        \"extIPsLabel\": \"\",\n        \"extIPsEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # NAT/PAT - PTF rule dialog\n    \"ptfrule\": {\n        \"enableCheckbox\": \"\",\n        \"typeLabel\": \"\",\n        \"typeCombo\": \"\",\n        \"nameLabel\": \"\",\n        \"nameEdit\": \"\",\n        \"descLabel\": \"\",\n        \"descEdit\": \"\",\n        \"protocolsLabel\": \"\",\n        \"protocolsCombo\": \"\",\n        \"deviceLabel\": \"\",\n        \"deviceCombo\": \"\",\n        \"ipLabel\": \"\",\n        \"ipEdit\": \"\",\n        \"extIPsLabel\": \"\",\n        \"extIPsEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # NAT/PAT - rule type selection dialog\n    \"nprtype\": {\n        \"ipV4Checkbox\": \"\",\n        \"ipV6Checkbox\": \"\",\n        \"upnpCheckbox\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"calist_Type\": \"\",\n        \"calist_Time\": \"\",\n        \"calist_Number\": \"\",\n        \"calist_Contact\": \"\",\n        \"calist_Duration\": \"\",\n        \"colist_Name\": \"\",\n        \"colist_Cell\": \"\",\n        \"colist_Home\": \"\",\n        \"colist_Work\": \"\",\n        \"colist_Ring\": \"\",\n        \"refreshCall\": \"\",\n        \"deleteCall\": \"\",\n        \"deleteAllCalls\": \"\",\n        \"spamCallScan\": \"\",\n        \"spamCallSites\": \"\",\n        \"setSpamCall\": \"\",\n        \"refreshContact\": \"\",\n        \"addContact\": \"\",\n        \"editContact\": \"\",\n        \"deleteContact\": \"\",\n        \"deleteAllContacts\": \"\",\n        \"ringToneCombo\": \"\",\n        \"phoneRing\": \"\",\n        \"exportContacts\": \"\",\n        \"importContacts\": \"\"\n    },\n\n    # Phone - Contact edit\n    \"pcontact\": {\n        \"firstNameLabel\": \"\",\n        \"firstNameEdit\": \"\",\n        \"nameLabel\": \"\",\n        \"nameEdit\": \"\",\n        \"cellLabel\": \"\",\n        \"cellEdit\": \"\",\n        \"homeLabel\": \"\",\n        \"homeEdit\": \"\",\n        \"workLabel\": \"\",\n        \"workEdit\": \"\",\n        \"ringToneLabel\": \"\",\n        \"ringToneCombo\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"wifiConfig\": \"\",\n        \"wifiGuestConfig\": \"\",\n        \"wifiOn\": \"\",\n        \"wifiOff\": \"\",\n        \"guestWifiOn\": \"\",\n        \"guestWifiOff\": \"\",\n        \"schedulerOn\": \"\",\n        \"schedulerOff\": \"\",\n        \"wifiGlobalStatus\": \"\",\n        \"wifiGroup\": \"\",\n        \"backupRestore\": \"\",\n        \"screen\": \"\",\n        \"miscGroup\": \"\",\n        \"rebootLivebox\": \"\",\n        \"resetLivebox\": \"\",\n        \"rebootHistory\": \"\",\n        \"rebootGroup\": \"\",\n        \"firewallLevel\": \"\",\n        \"pingResponse\": \"\",\n        \"dynDNS\": \"\",\n        \"dmz\": \"\",\n        \"routingTable\": \"\",\n        \"networkGroup\": \"\",\n        \"appIcon\": \"\",\n        \"appName\": \"\",\n        \"openSourceURL\": \"\",\n        \"aboutGroup\": \"\",\n        \"prefs\": \"\",\n        \"changeProfile\": \"\",\n        \"emailSetup\": \"\",\n        \"setupGroup\": \"\",\n        \"setLogLevel\": \"\",\n        \"callApis\": \"\",\n        \"getApiDoc\": \"\",\n        \"debugGroup\": \"\",\n        \"quit\": \"\"\n    },\n\n    # Actions - Reboot history\n    \"rhistory\": {\n        \"reboot_BootDate\": \"\",\n        \"reboot_BootReason\": \"\",\n        \"reboot_ShutdownDate\": \"\",\n        \"reboot_ShutdownReason\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Actions - Wifi configuration\n    \"wconfig\": {\n        \"enableCheckbox\": \"\",\n        \"mloCheckbox\": \"\",\n        \"durationLabel\": \"\",\n        \"durationEdit\": \"\",\n        \"durationUnit\": \"\",\n        \"freqLabel\": \"\",\n        \"freqCombo\": \"\",\n        \"ssidLabel\": \"\",\n        \"ssidEdit\": \"\",\n        \"optionsLabel\": \"\",\n        \"freqEnabledCheckbox\": \"\",\n        \"broadcastCheckbox\": \"\",\n        \"wpsCheckbox\": \"\",\n        \"macFilteringLabel\": \"\",\n        \"macFilteringCombo\": \"\",\n        \"macFilteringEntriesCombo\": \"\",\n        \"secuLabel\": \"\",\n        \"secuCombo\": \"\",\n        \"passLabel\": \"\",\n        \"passEdit\": \"\",\n        \"passShow\": \"\",\n        \"chanLabel\": \"\",\n        \"chanCombo\": \"\",\n        \"modeLabel\": \"\",\n        \"modeCombo\": \"\",\n        \"bandwidthLabel\": \"\",\n        \"bandwidthCombo\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Actions - Wifi global status\n    \"wglobal\": {\n        \"ok\": \"\"\n    },\n\n    # Actions - Backup & Restore\n    \"backrest\": {\n        \"autoBackEnabledLabel\": \"\",\n        \"autoBackEnabled\": \"\",\n        \"statusLabel\": \"\",\n        \"status\": \"\",\n        \"lastBackupLabel\": \"\",\n        \"lastBackup\": \"\",\n        \"refresh\": \"\",\n        \"enaAutoBack\": \"\",\n        \"disAutoBack\": \"\",\n        \"forceBackup\": \"\",\n        \"forceRestore\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Actions - Screen & LEDs\n    \"screen\" : {\n        \"orangeLabel\": \"\",\n        \"orangeSlider\": \"\",\n        \"orangeValue\": \"\",\n        \"showWifiPasswordCheckbox\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Actions - Firewall level\n    \"fwlevel\": {\n        \"ipV4Label\": \"\",\n        \"ipV4Combo\": \"\",\n        \"ipV6Label\": \"\",\n        \"ipV6Combo\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Actions - Ping Response\n    \"pingr\": {\n        \"ipV4Checkbox\": \"\",\n        \"ipV6Checkbox\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Actions - DynDNS\n    \"dyndns\": {\n        \"hostList\": \"\",\n        \"hlist_Service\": \"\",\n        \"hlist_HostName\": \"\",\n        \"hlist_UserName\": \"\",\n        \"hlist_Password\": \"\",\n        \"hlist_LastUpdate\": \"\",\n        \"hlist_Status\": \"\",\n        \"refresh\": \"\",\n        \"showPassword\": \"\",\n        \"delHost\": \"\",\n        \"hostGroup\": \"\",\n        \"serviceLabel\": \"\",\n        \"serviceCombo\": \"\",\n        \"hostNameLabel\": \"\",\n        \"hostNameEdit\": \"\",\n        \"userNameLabel\": \"\",\n        \"userNameEdit\": \"\",\n        \"passwordLabel\": \"\",\n        \"passwordEdit\": \"\",\n        \"addHost\": \"\",\n        \"addHostGroup\": \"\",\n        \"disableAll\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Actions - DMZ\n    \"dmz\": {\n        \"dmzList\": \"\",\n        \"zlist_ID\": \"\",\n        \"zlist_IP\": \"\",\n        \"zlist_Device\": \"\",\n        \"zlist_ExtIPs\": \"\",\n        \"refresh\": \"\",\n        \"delDmz\": \"\",\n        \"dmzGroup\": \"\",\n        \"idLabel\": \"\",\n        \"id\": \"\",\n        \"deviceLabel\": \"\",\n        \"deviceCombo\": \"\",\n        \"ipLabel\": \"\",\n        \"ipEdit\": \"\",\n        \"extIPsLabel\": \"\",\n        \"extIPsEdit\": \"\",\n        \"addDmz\": \"\",\n        \"addDmzGroup\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Actions - Routing\n    \"routing\": {\n        \"ruleList\": \"\",\n        \"rlist_DestNetwork\": \"\",\n        \"rlist_DestMask\": \"\",\n        \"rlist_Gateway\": \"\",\n        \"rlist_Priority\": \"\",\n        \"rlist_Enabled\": \"\",\n        \"rlist_Status\": \"\",\n        \"refresh\": \"\",\n        \"enableRule\": \"\",\n        \"delRule\": \"\",\n        \"ruleGroup\": \"\",\n        \"destNetworkLabel\": \"\",\n        \"destNetworkEdit\": \"\",\n        \"destMaskLabel\": \"\",\n        \"destMaskEdit\": \"\",\n        \"gatewayLabel\": \"\",\n        \"gatewayEdit\": \"\",\n        \"priorityLabel\": \"\",\n        \"priorityEdit\": \"\",\n        \"addRule\": \"\",\n        \"editRule\": \"\",\n        \"enabledCheckbox\": \"\",\n        \"addEditRuleGroup\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Actions - Call API\n    \"callapi\": {\n        \"presetLabel\": \"\",\n        \"presetCombo\": \"\",\n        \"serviceLabel\": \"\",\n        \"service\": \"\",\n        \"methodLabel\": \"\",\n        \"method\": \"\",\n        \"parametersLabel\": \"\",\n        \"parametersEdit\": \"\",\n        \"call\": \"\",\n        \"replyEdit\": \"\",\n        \"ok\": \"\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"stats_Name\": \"\",\n        \"stats_Rx\": \"\",\n        \"stats_Tx\": \"\",\n        \"stats_RxRate\": \"\",\n        \"stats_TxRate\": \"\",\n        \"alist_Attribute\": \"\",\n        \"alist_Value\": \"\",\n        \"wifiOn\": \"\",\n        \"wifiOff\": \"\",\n        \"schedulerOn\": \"\",\n        \"schedulerOff\": \"\",\n        \"rebootRepeater\": \"\",\n        \"resetRepeater\": \"\",\n        \"rebootHistory\": \"\",\n        \"callApis\": \"\",\n        \"resign\": \"\",\n        \"actionsGroup\": \"\",\n        \"repeaterInfo\": \"\",\n        \"wifiInfo\": \"\",\n        \"lanInfo\": \"\",\n        \"exportInfo\": \"\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"statusLabel\": \"\",\n        \"statusValue\": \"\",\n        \"mediaTypeLabel\": \"\",\n        \"mediaTypeValue\": \"\",\n        \"mediaStateLabel\": \"\",\n        \"mediaStateValue\": \"\",\n        \"statusGroup\": \"\",\n        \"vendorLabel\": \"\",\n        \"vendorValue\": \"\",\n        \"modelLabel\": \"\",\n        \"modelValue\": \"\",\n        \"macLabel\": \"\",\n        \"macValue\": \"\",\n        \"ipLabel\": \"\",\n        \"ipValue\": \"\",\n        \"infoGroup\": \"\",\n        \"nameLabel\": \"\",\n        \"nameValue\": \"\",\n        \"manufacturerLabel\": \"\",\n        \"manufacturerValue\": \"\",\n        \"modelNameLabel\": \"\",\n        \"modelNameValue\": \"\",\n        \"uniqueIdLabel\": \"\",\n        \"uniqueIdValue\": \"\",\n        \"descGroup\": \"\",\n        \"resetCache\": \"\",\n        \"actionGroup\": \"\",\n        \"channelLabel\": \"\",\n        \"channelValue\": \"\",\n        \"channelNameLabel\": \"\",\n        \"channelNameValue\": \"\",\n        \"mediaIdLabel\": \"\",\n        \"mediaIdValue\": \"\",\n        \"channelIcon\": \"\",\n        \"channelDesc\": \"\",\n        \"channelGroup\": \"\",\n        \"channelEdit\": \"\",\n        \"channelSet\": \"\",\n        \"setChannelGroup\": \"\",\n        \"rcGroup\": \"\",\n        \"power\": \"\",\n        \"mic\": \"\",\n        \"up\": \"\",\n        \"left\": \"\",\n        \"ok\": \"\",\n        \"right\": \"\",\n        \"down\": \"\",\n        \"back\": \"\",\n        \"menu\": \"\",\n        \"vol_up\": \"\",\n        \"chan_up\": \"\",\n        \"vol_down\": \"\",\n        \"chan_down\": \"\",\n        \"mute\": \"\",\n        \"prog\": \"\",\n        \"one\": \"\",\n        \"two\": \"\",\n        \"three\": \"\",\n        \"four\": \"\",\n        \"five\": \"\",\n        \"six\": \"\",\n        \"seven\": \"\",\n        \"eight\": \"\",\n        \"nine\": \"\",\n        \"c\": \"\",\n        \"zero\": \"\",\n        \"vod\": \"\",\n        \"fbwd\": \"\",\n        \"play\": \"\",\n        \"ffwd\": \"\",\n        \"admin\": \"\",\n        \"record\": \"\"\n    },\n\n    # Config - Preferences\n    \"prefs\": {\n        \"profileList\": \"\",\n        \"addProfile\": \"\",\n        \"delProfile\": \"\",\n        \"profileNameLabel\": \"\",\n        \"profileNameEdit\": \"\",\n        \"liveboxUrlLabel\": \"\",\n        \"liveboxUrlEdit\": \"\",\n        \"liveboxUserLabel\": \"\",\n        \"liveboxUserEdit\": \"\",\n        \"filterDevices\": \"\",\n        \"onlyActiveDevices\": \"\",\n        \"macAddrTableFileLabel\": \"\",\n        \"macAddrTableFileEdit\": \"\",\n        \"defaultProfile\": \"\",\n        \"profileGroup\": \"\",\n        \"languageLabel\": \"\",\n        \"languageCombo\": \"\",\n        \"tooltips\": \"\",\n        \"statsFrequencyLabel\": \"\",\n        \"statsFrequencyEdit\": \"\",\n        \"macAddrApiKeyLabel\": \"\",\n        \"macAddrApiKeyEdit\": \"\",\n        \"callFilterApiKeyLabel\": \"\",\n        \"callFilterApiKeyEdit\": \"\",\n        \"phoneCodeLabel\": \"\",\n        \"phoneCodeEdit\": \"\",\n        \"listHeaderHeightLabel\": \"\",\n        \"listHeaderHeightEdit\": \"\",\n        \"listHeaderFontSizeLabel\": \"\",\n        \"listHeaderFontSizeEdit\": \"\",\n        \"listLineHeightLabel\": \"\",\n        \"listLineHeightEdit\": \"\",\n        \"listLineFontSizeLabel\": \"\",\n        \"timeoutMarginLabel\": \"\",\n        \"timeoutMarginEdit\": \"\",\n        \"csvDelimiterLabel\": \"\",\n        \"csvDelimiterEdit\": \"\",\n        \"listLineFontSize\": \"\",\n        \"realtimeWifiStats\": \"\",\n        \"preventSleepMode\": \"\",\n        \"nativeUIStyle\": \"\",\n        \"savePasswords\": \"\",\n        \"prefsGroup\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Config - Connection\n    \"cnx\": {\n        \"w1Label\": \"\",\n        \"w2Label\": \"\",\n        \"w3Label\": \"\",\n        \"urlLabel\": \"\",\n        \"urlEdit\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Config - Signin\n    \"signin\": {\n        \"userLabel\": \"\",\n        \"userEdit\": \"\",\n        \"passwordLabel\": \"\",\n        \"passwordEdit\": \"\",\n        \"savePasswords\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Config - email\n    \"email\": {\n        \"fromAddrLabel\": \"\",\n        \"fromAddrEdit\": \"\",\n        \"toAddrLabel\": \"\",\n        \"toAddrEdit\": \"\",\n        \"subjectPrefixLabel\": \"\",\n        \"subjectPrefixEdit\": \"\",\n        \"smtpServerLabel\": \"\",\n        \"smtpServerEdit\": \"\",\n        \"smtpPortLabel\": \"\",\n        \"smtpPortEdit\": \"\",\n        \"optionsLabel\": \"\",\n        \"useSTARTTLS\": \"\",\n        \"useTLS\": \"\",\n        \"authentication\": \"\",\n        \"userLabel\": \"\",\n        \"userEdit\": \"\",\n        \"passwordLabel\": \"\",\n        \"passwordEdit\": \"\",\n        \"test\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Config - Select profile\n    \"sprofile\": {\n        \"mainLabel\": \"\",\n        \"profileCombo\": \"\",\n        \"assMacLabel\": \"\",\n        \"assMacValue\": \"\",\n        \"detMacLabel\": \"\",\n        \"detMacValue\": \"\",\n        \"warnLabel\": \"\",\n        \"createProfile\": \"\",\n        \"ok\": \"\",\n        \"cancel\": \"\"\n    },\n\n    # Config - Release warning\n    \"rwarn\": {\n        \"nreal\": \"\",\n        \"creal\": \"\",\n        \"downloadURL\": \"\",\n        \"ok\": \"\",\n        \"nowarning\": \"\"\n    }\n}\n\n\n\n# ################################ MESSAGES ################################\n\nMESSAGES = {\n    # Main window\n    \"main\": {\n        \"cnx\": \"\",\n        \"auth\": \"\",\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\"\n    },\n\n    # Device list\n    \"dlist\": {\n        \"dlistErr\": \"\",\n        \"topoErr\": \"\",\n        \"aName\": \"\",\n        \"aNameStartup\": \"\"\n    },\n\n    # Livebox infos\n    \"info\": {\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\"\n    },\n\n    # Graph\n    \"graph\": {\n        \"lineSelect\": \"\",\n        \"noGraph\": \"\",\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\"\n    },\n\n    # Device infos\n    \"dinfo\": {  \n        \"devSelect\": \"\",\n        \"devWOL\": \"\",\n        \"devForget\": \"\",\n        \"devBlocked\": \"\",\n        \"devUnblocked\": \"\",\n        \"devNotBlocked\": \"\",\n        \"devInfoErr\": \"\"\n    },\n\n    # Events\n    \"events\": {\n        \"devSelect\": \"\",\n        \"evtSelect\": \"\",\n        \"evtNotFound\": \"\",\n        \"email\": \"\",\n        \"macErr\": \"\",\n        \"logDirExist\": \"\",\n        \"logDirErr\": \"\"\n    },\n\n    # DHCP\n    \"dhcp\": {\n        \"dhcpSelect\": \"\",\n        \"dhcpLoad\": \"\",\n        \"deactiv\": \"\",\n        \"addrChange\": \"\",\n        \"dhcpValErr\": \"\",\n        \"bindLoad\": \"\"\n    },\n\n    # NAT/PAT\n    \"natpat\": {\n        \"delAllPat\": \"\",\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\",\n        \"ruleExport\": \"\",\n        \"openFileErr\": \"\",\n        \"fileFormatErr\": \"\",\n        \"fileTypeErr\": \"\",\n        \"closeFileErr\": \"\",\n        \"ruleImport\": \"\",\n        \"ruleDel\": \"\",\n        \"patLoadErr\": \"\",\n        \"ptfLoadErr\": \"\",\n        \"ipv6AddrPfixErr\": \"\",\n        \"ipv4AddrPfixErr\": \"\",\n        \"ipv6AddrErr\": \"\",\n        \"ipv4AddrErr\": \"\",\n        \"emptyAddr\": \"\"\n    },\n\n    # Phone\n    \"phone\": {\n        \"callFilterAPIKeyErr\": \"\",\n        \"callSelect\": \"\",\n        \"delAllCalls\": \"\",\n        \"callLoad\": \"\",\n        \"spamCount\": \"\",\n        \"contactSelect\": \"\",\n        \"delAllContacts\": \"\",\n        \"ring\": \"\",\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\",\n        \"contactLoad\": \"\",\n        \"contactMax\": \"\",\n        \"contactGet\": \"\"\n    },\n\n    # Actions\n    \"actions\": {\n        \"wifiGetConfErr\": \"\",\n        \"wifiSetConfErr\": \"\",\n        \"wifiOn\": \"\",\n        \"wifiOff\": \"\",\n        \"gwifiOn\": \"\",\n        \"gwifiOff\": \"\",\n        \"schedOn\": \"\",\n        \"schedOff\": \"\",\n        \"backRestSvcErr\" : \"\",\n        \"backEnableSvcErr\" : \"\",\n        \"backDisableSvcErr\" : \"\",\n        \"backupSvcErr\" : \"\",\n        \"restoreSvcOk\" : \"\",\n        \"restoreSvcErr\" : \"\",\n        \"lbReboot\": \"\",\n        \"lbReset\": \"\",\n        \"autoRestore\": \"\",\n        \"appQuit\": \"\",\n        \"dynDnsLoadErr\": \"\",\n        \"dynDnsSvcErr\": \"\",\n        \"dynDnsDelErr\": \"\",\n        \"dynDnsHostName\": \"\",\n        \"dynDnsEnableErr\": \"\",\n        \"dmzLoadErr\": \"\",\n        \"dmzDelErr\": \"\",\n        \"routingLoadErr\": \"\",\n        \"addrErr\": \"\",\n        \"maskErr\": \"\"\n    },\n\n    # Repeater\n    \"repeater\": {\n        \"cnxErr\": \"\",\n        \"noSign\": \"\",\n        \"createFileErr\": \"\",\n        \"saveFileErr\": \"\",\n        \"wifiOn\": \"\",\n        \"wifiOff\": \"\",\n        \"schedOn\": \"\",\n        \"schedOff\": \"\",\n        \"reboot\": \"\",\n        \"rebooting\": \"\",\n        \"reset\": \"\",\n        \"reseting\": \"\",\n        \"resign\": \"\",\n        \"forceResign\": \"\"\n    },\n\n    # TV Decoder\n    \"tvdecoder\": {\n        \"channelInfoErr\": \"\",\n        \"changeChannelErr\": \"\",\n        \"keyPressErr\": \"\"\n    },\n\n    # Config\n    \"prefs\": {\n        \"wrongFile\": \"\",\n        \"configVersion\": \"\",\n        \"keyFileErr\": \"\",\n        \"configFolderErr\": \"\",\n        \"profileNameErr\": \"\",\n        \"wrongMacFile\": \"\",\n        \"wrongSpamCallsFile\": \"\",\n        \"profileName\": \"\",\n        \"profileDup\": \"\",\n        \"profileOne\": \"\",\n        \"emailSuccess\": \"\",\n        \"emailFail\": \"\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/lang/LmLanguages.py",
    "content": "### Livebox Monitor Languages module ###\n\nfrom LiveboxMonitor.lang import LmLanguage_EN, LmLanguage_FR\n\n\n# ################################ Guidelines ################################\n\n# To create a new language:\n# - Create LmLanguage_XX module, XX being the language code.\n# - Add language code in LANGUAGES_KEY list.\n# - Add language name in LANGUAGES_NAME list.\n# - Assign LABELS & TOOLS according to language code in set_language().\n\n# Rules for Labels:\n# - One function per window/area, using a specific ID / aliased in the module (lx, lix, etc)\n# - For each ID, set of keys/values.\n# - The native label is the key, translation is the value.\n# - If no key found, native label is used.\n\n# Rules for Tooltips:\n# - Each window/dialog calls LmConfig.set_tooltips() with a specific ID.\n# - For each ID, set of keys/values. Keys designate UI object, value the tooltip to display.\n# - If no key found, no tooltip is displayed.\n# - Rules for the keys:\n#   - Only objects with an assigned name are considered.\n#   - QTableWidget -> keys are data with QtCore.Qt.ItemDataRole.UserRole assigned to each header\n#   - QTabWidget -> keys are object names of each tab.\n#   - All other objects -> keys are assigned object name.\n\n\n# ################################ VARS & DEFS ################################\n\n# Current language\ncurrent_language = \"FR\"\n\n# Supported languages\nLANGUAGES_KEY = [\"FR\", \"EN\"]\nLANGUAGES_NAME = [\"Français\", \"English\"]\nLANGUAGES_LOCALE = {\"FR\": \"fr_FR\", \"EN\": \"en_US\"}\n\n# Labels & Tooltips - to set according to current language\nlabels = LmLanguage_FR.LABELS\ntooltips = LmLanguage_FR.TOOLTIPS\nmessages = LmLanguage_FR.MESSAGES\n\n\n# ################################ Tools ################################\n\n# Setup according to selected language\ndef set_language(language):\n    global current_language\n    global labels\n    global tooltips\n    global messages\n\n    current_language = language\n    match language:\n        case \"FR\":\n            labels = LmLanguage_FR.LABELS\n            tooltips = LmLanguage_FR.TOOLTIPS\n            messages = LmLanguage_FR.MESSAGES\n        case \"EN\":\n            tooltips = LmLanguage_EN.TOOLTIPS\n        case _:\n            tooltips = LmLanguage_EN.TOOLTIPS\n\n\n# Get label translation\ndef get_label(key, string):\n    if current_language == \"EN\":\n        return string\n    return labels[key].get(string, string)\n\n\n# Get item tooltip\ndef get_tooltip(key, item_key):\n    return tooltips[key].get(item_key)\n\n\n# Get message translation\ndef get_message(key, string, item_key):\n    if current_language == \"EN\":\n        return string\n    m = messages[key].get(item_key)\n    return m if m else string\n\n\n\n# ################################ Specialized Tools ################################\n\n# Main\ndef get_main_label(string): return get_label(\"main\", string)\ndef get_main_message(string, key): return get_message(\"main\", string, key)\ndef get_export_table_label(string): return get_label(\"export_table\", string)\n\n# Device list\ndef get_device_list_label(string): return get_label(\"dlist\", string)\ndef get_device_list_message(string, key): return get_message(\"dlist\", string, key)\ndef get_ipv6_label(string): return get_label(\"ipv6\", string)\ndef get_dns_label(string): return get_label(\"dns\", string)\n\n# Livebox infos\ndef get_info_label(string): return get_label(\"info\", string)\ndef get_info_message(string, key): return get_message(\"info\", string, key)\n\n# Graph\ndef get_graph_label(string): return get_label(\"graph\", string)\ndef get_graph_message(string, key): return get_message(\"graph\", string, key)\ndef get_add_graph_label(string): return get_label(\"addgraph\", string)\n\n# Device infos\ndef get_device_info_label(string): return get_label(\"dinfo\", string)\ndef get_device_info_message(string, key): return get_message(\"dinfo\", string, key)\ndef get_device_name_label(string): return get_label(\"dname\", string)\ndef get_device_type_label(string): return get_label(\"dtype\", string)\n\n# Events\ndef get_events_label(string): return get_label(\"events\", string)\ndef get_events_message(string, key): return get_message(\"events\", string, key)\ndef get_notification_rules_label(string): return get_label(\"evnrules\", string)\n\n# DHCP\ndef get_dhcp_label(string): return get_label(\"dhcp\", string)\ndef get_dhcp_message(string, key): return get_message(\"dhcp\", string, key)\ndef get_dhcp_binding_label(string): return get_label(\"dbinding\", string)\ndef get_dhcp_setup_label(string): return get_label(\"dsetup\", string)\n\n# NAT/PAT\ndef get_nat_pat_label(string): return get_label(\"natpat\", string)\ndef get_nat_pat_message(string, key): return get_message(\"natpat\", string, key)\ndef get_pat_rule_label(string): return get_label(\"patrule\", string)\ndef get_ptf_rule_label(string): return get_label(\"ptfrule\", string)\ndef get_nat_pat_rule_type_label(string): return get_label(\"nprtype\", string)\n\n# Phone\ndef get_phone_label(string): return get_label(\"phone\", string)\ndef get_phone_message(string, key): return get_message(\"phone\", string, key)\ndef get_phone_contact_label(string): return get_label(\"pcontact\", string)\n\n# Actions\ndef get_actions_label(string): return get_label(\"actions\", string)\ndef get_actions_message(string, key): return get_message(\"actions\", string, key)\ndef get_reboot_history_label(string): return get_label(\"rhistory\", string)\ndef get_wifi_config_label(string): return get_label(\"wconfig\", string)\ndef get_wifi_global_label(string): return get_label(\"wglobal\", string)\ndef get_backup_restore_label(string): return get_label(\"backrest\", string)\ndef get_screen_label(string): return get_label(\"screen\", string)\ndef get_firewall_level_label(string): return get_label(\"fwlevel\", string)\ndef get_ping_response_label(string): return get_label(\"pingr\", string)\ndef get_dyndns_label(string): return get_label(\"dyndns\", string)\ndef get_dmz_label(string): return get_label(\"dmz\", string)\ndef get_routing_label(string): return get_label(\"routing\", string)\ndef call_api_label(string): return get_label(\"callapi\", string)\n\n# Repeater\ndef get_repeater_label(string): return get_label(\"repeater\", string)\ndef get_repeater_message(string, key): return get_message(\"repeater\", string, key)\n\n# TV Decoder\ndef get_tvdecoder_label(string): return get_label(\"tvdecoder\", string)\ndef get_tvdecoder_message(string, key): return get_message(\"tvdecoder\", string, key)\n\n# Config\ndef get_config_prefs_label(string): return get_label(\"prefs\", string)\ndef get_config_message(string, key): return get_message(\"prefs\", string, key)\ndef get_config_cnx_label(string): return get_label(\"cnx\", string)\ndef get_config_signin_label(string): return get_label(\"signin\", string)\ndef get_config_email_label(string): return get_label(\"email\", string)\ndef get_select_profile_label(string): return get_label(\"sprofile\", string)\ndef get_release_warning_label(string): return get_label(\"rwarn\", string)\n\n# Tools\ndef get_tools_label(string): return get_label(\"tools\", string)\n"
  },
  {
    "path": "src/LiveboxMonitor/lang/__init__.py",
    "content": ""
  },
  {
    "path": "src/LiveboxMonitor/lbm.py",
    "content": "#!/usr/bin/env python3\n### LiveboxMonitor __main__ wrapper emulating PyPI start & ensuring local modules import ###\n\nimport os\nimport re\nimport sys\n\n# Ensure importing modules from local repo and not PyPI package\nsys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))\nfrom LiveboxMonitor.__main__ import main\n\nif __name__ == \"__main__\":\n    sys.argv[0] = re.sub(r\"(-script\\.pyw|\\.exe)?$\", \"\", sys.argv[0])\n    sys.exit(main(True))\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmActionsTab.py",
    "content": "### Livebox Monitor actions tab module ###\n\nimport json\nimport webbrowser\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmGenApiDocumentation\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmConfig import LmConf, set_application_style\nfrom LiveboxMonitor.dlg.LmPrefs import PrefsDialog\nfrom LiveboxMonitor.dlg.LmEmailSetup import EmailSetupDialog\nfrom LiveboxMonitor.dlg.LmWifiConfig import WifiConfigDialog\nfrom LiveboxMonitor.dlg.LmWifiGlobalStatus import WifiGlobalStatusDialog\nfrom LiveboxMonitor.dlg.LmRebootHistory import RebootHistoryDialog\nfrom LiveboxMonitor.dlg.LmFirewall import FirewallLevelDialog\nfrom LiveboxMonitor.dlg.LmPingResponse import PingResponseDialog\nfrom LiveboxMonitor.dlg.LmDynDns import DynDnsSetupDialog\nfrom LiveboxMonitor.dlg.LmDmz import DmzSetupDialog\nfrom LiveboxMonitor.dlg.LmRouting import RoutingSetupDialog\nfrom LiveboxMonitor.dlg.LmBackupRestore import BackupRestoreDialog\nfrom LiveboxMonitor.dlg.LmScreen import ScreenDialog\nfrom LiveboxMonitor.dlg.LmCallApi import CallApiDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_actions_label as lx, get_actions_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\nfrom LiveboxMonitor.__init__ import __url__, __copyright__\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"actionTab\"\n\n# Static Config\nBUTTON_WIDTH = 150\n\n\n# ################################ LmActions class ################################\nclass LmActions:\n\n    ### Create actions tab\n    def create_actions_tab(self):\n        self._actions_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Wifi & Misc column\n        left_zone = QtWidgets.QVBoxLayout()\n        left_zone.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        left_zone.setSpacing(20)\n\n        # Wifi buttons group\n        wifi_buttons = QtWidgets.QVBoxLayout()\n        wifi_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        wifi_buttons.setSpacing(20)\n\n        wifi_set = QtWidgets.QHBoxLayout()\n        wifi_set.setSpacing(20)\n\n        wifi_config_button = QtWidgets.QPushButton(lx(\"Configuration...\"), objectName=\"wifiConfig\")\n        wifi_config_button.clicked.connect(self.wifi_config_button_click)\n        wifi_config_button.setMinimumWidth(BUTTON_WIDTH)\n        wifi_set.addWidget(wifi_config_button)\n\n        wifi_on_button = QtWidgets.QPushButton(lx(\"Wifi ON\"), objectName=\"wifiOn\")\n        wifi_on_button.clicked.connect(self.wifi_on_button_click)\n        wifi_set.addWidget(wifi_on_button)\n\n        wifi_off_button = QtWidgets.QPushButton(lx(\"Wifi OFF\"), objectName=\"wifiOff\")\n        wifi_off_button.clicked.connect(self.wifi_off_button_click)\n        wifi_set.addWidget(wifi_off_button)\n        wifi_buttons.addLayout(wifi_set, 0)\n\n        guest_wifi_set = QtWidgets.QHBoxLayout()\n        guest_wifi_set.setSpacing(20)\n\n        wifi_guest_config_button = QtWidgets.QPushButton(lx(\"Guest...\"), objectName=\"wifiGuestConfig\")\n        wifi_guest_config_button.clicked.connect(self.wifi_guest_config_button_click)\n        wifi_guest_config_button.setMinimumWidth(BUTTON_WIDTH)\n        guest_wifi_set.addWidget(wifi_guest_config_button)\n\n        guest_wifi_on_button = QtWidgets.QPushButton(lx(\"Guest ON\"), objectName=\"guestWifiOn\")\n        guest_wifi_on_button.clicked.connect(self.guest_wifi_on_button_click)\n        guest_wifi_set.addWidget(guest_wifi_on_button)\n\n        guest_wifi_off_button = QtWidgets.QPushButton(lx(\"Guest OFF\"), objectName=\"guestWifiOff\")\n        guest_wifi_off_button.clicked.connect(self.guest_wifi_off_button_click)\n        guest_wifi_set.addWidget(guest_wifi_off_button)\n        wifi_buttons.addLayout(guest_wifi_set, 0)\n\n        scheduler_set = QtWidgets.QHBoxLayout()\n        scheduler_set.setSpacing(20)\n\n        scheduler_on_button = QtWidgets.QPushButton(lx(\"Wifi Scheduler ON\"), objectName=\"schedulerOn\")\n        scheduler_on_button.clicked.connect(self.scheduler_on_button_click)\n        scheduler_on_button.setMinimumWidth(BUTTON_WIDTH)\n        scheduler_set.addWidget(scheduler_on_button)\n\n        scheduler_off_button = QtWidgets.QPushButton(lx(\"Wifi Scheduler OFF\"), objectName=\"schedulerOff\")\n        scheduler_off_button.clicked.connect(self.scheduler_off_button_click)\n        scheduler_off_button.setMinimumWidth(BUTTON_WIDTH)\n        scheduler_set.addWidget(scheduler_off_button)\n        wifi_buttons.addLayout(scheduler_set, 0)\n\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n        wifi_buttons.addWidget(separator)\n\n        wifi_global_status_button = QtWidgets.QPushButton(lx(\"Show Global Status...\"), objectName=\"wifiGlobalStatus\")\n        wifi_global_status_button.clicked.connect(self.wifi_global_status_button_click)\n        wifi_buttons.addWidget(wifi_global_status_button)\n\n        wifi_group_box = QtWidgets.QGroupBox(lx(\"Wifi\"), objectName=\"wifiGroup\")\n        wifi_group_box.setLayout(wifi_buttons)\n        left_zone.addWidget(wifi_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Misc buttons\n        misc_buttons = QtWidgets.QVBoxLayout()\n        misc_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        misc_buttons.setSpacing(20)\n\n        backup_restore_button = QtWidgets.QPushButton(lx(\"Backup and Restore...\"), objectName=\"backupRestore\")\n        backup_restore_button.clicked.connect(self.backup_restore_button_click)\n        backup_restore_button.setMinimumWidth(BUTTON_WIDTH)\n        misc_buttons.addWidget(backup_restore_button)\n\n        screen_button = QtWidgets.QPushButton(lx(\"LEDs and Screen...\"), objectName=\"screen\")\n        screen_button.clicked.connect(self.screen_button_click)\n        screen_button.setMinimumWidth(BUTTON_WIDTH)\n        misc_buttons.addWidget(screen_button)\n        if self._api._info.get_model() < 6:\n            screen_button.setEnabled(False)\n\n        misc_group_box = QtWidgets.QGroupBox(lx(\"Miscellaneous\"), objectName=\"miscGroup\")\n        misc_group_box.setLayout(misc_buttons)\n        left_zone.addWidget(misc_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Reboot & Firewall column\n        middle_zone = QtWidgets.QVBoxLayout()\n        middle_zone.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        middle_zone.setSpacing(20)\n\n        # Reboot buttons\n        reboot_buttons = QtWidgets.QVBoxLayout()\n        reboot_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        reboot_buttons.setSpacing(20)\n\n        reboot_livebox_button = QtWidgets.QPushButton(lx(\"Reboot Livebox...\"), objectName=\"rebootLivebox\")\n        reboot_livebox_button.clicked.connect(self.reboot_livebox_button_click)\n        reboot_livebox_button.setMinimumWidth(BUTTON_WIDTH)\n        reboot_buttons.addWidget(reboot_livebox_button)\n\n        reset_livebox_button = QtWidgets.QPushButton(lx(\"Factory Reset Livebox...\"), objectName=\"resetLivebox\")\n        reset_livebox_button.clicked.connect(self.reset_livebox_button_click)\n        reset_livebox_button.setMinimumWidth(BUTTON_WIDTH)\n        reboot_buttons.addWidget(reset_livebox_button)\n\n        reboot_history_button = QtWidgets.QPushButton(lx(\"Reboot History...\"), objectName=\"rebootHistory\")\n        reboot_history_button.clicked.connect(self.reboot_history_button_click)\n        reboot_history_button.setMinimumWidth(BUTTON_WIDTH)\n        reboot_buttons.addWidget(reboot_history_button)\n\n        reboot_group_box = QtWidgets.QGroupBox(lx(\"Reboots\"), objectName=\"rebootGroup\")\n        reboot_group_box.setLayout(reboot_buttons)\n        middle_zone.addWidget(reboot_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Network buttons\n        network_buttons = QtWidgets.QVBoxLayout()\n        network_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        network_buttons.setSpacing(20)\n\n        firewall_level_button = QtWidgets.QPushButton(lx(\"Firewall Levels...\"), objectName=\"firewallLevel\")\n        firewall_level_button.clicked.connect(self.firewall_level_button_click)\n        firewall_level_button.setMinimumWidth(BUTTON_WIDTH)\n        network_buttons.addWidget(firewall_level_button)\n\n        ping_response_button = QtWidgets.QPushButton(lx(\"Ping Responses...\"), objectName=\"pingResponse\")\n        ping_response_button.clicked.connect(self.ping_response_button_click)\n        ping_response_button.setMinimumWidth(BUTTON_WIDTH)\n        network_buttons.addWidget(ping_response_button)\n\n        dyndns_button = QtWidgets.QPushButton(lx(\"DynDNS...\"), objectName=\"dynDNS\")\n        dyndns_button.clicked.connect(self.dyndns_button_click)\n        dyndns_button.setMinimumWidth(BUTTON_WIDTH)\n        network_buttons.addWidget(dyndns_button)\n\n        dmz_button = QtWidgets.QPushButton(lx(\"DMZ...\"), objectName=\"dmz\")\n        dmz_button.clicked.connect(self.dmz_button_click)\n        dmz_button.setMinimumWidth(BUTTON_WIDTH)\n        network_buttons.addWidget(dmz_button)\n\n        routing_button = QtWidgets.QPushButton(lx(\"Routing Table...\"), objectName=\"routingTable\")\n        routing_button.clicked.connect(self.routing_button_click)\n        routing_button.setMinimumWidth(BUTTON_WIDTH)\n        network_buttons.addWidget(routing_button)\n        if not self._livebox_pro:\n            routing_button.setEnabled(False)\n\n        network_group_box = QtWidgets.QGroupBox(lx(\"Network\"), objectName=\"networkGroup\")\n        network_group_box.setLayout(network_buttons)\n        middle_zone.addWidget(network_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # About, preferences, debug and quit column\n        right_zone = QtWidgets.QVBoxLayout()\n\n        # About box\n        about_widgets = QtWidgets.QVBoxLayout()\n        about_widgets.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        about_widgets.setSpacing(15)\n\n        app_icon = QtWidgets.QLabel(objectName=\"appIcon\")\n        app_icon.setPixmap(LmIcon.AppIconPixmap)\n        app_icon.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        app_icon.setMaximumWidth(64)\n        app_icon.setMinimumWidth(64)\n        about_widgets.addWidget(app_icon, 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        app_name = QtWidgets.QLabel(self._application_name, objectName=\"appName\")\n        app_name.setFont(LmQtTools.BOLD_FONT)\n        about_widgets.addWidget(app_name, 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        about_widgets.addWidget(QtWidgets.QLabel(lx(\"An Open Source project\")), 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        open_source_url = QtWidgets.QLabel(__url__, objectName=\"openSourceURL\")\n        open_source_url.setStyleSheet(\"QLabel { color : blue }\")\n        open_source_url.mousePressEvent = self.open_source_button_click\n        about_widgets.addWidget(open_source_url, 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        about_widgets.addWidget(QtWidgets.QLabel(__copyright__), 0, QtCore.Qt.AlignmentFlag.AlignHCenter)\n\n        about_group_box = QtWidgets.QGroupBox(lx(\"About\"), objectName=\"aboutGroup\")\n        about_group_box.setLayout(about_widgets)\n\n        right_zone.addWidget(about_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Setup box\n        setup_buttons = QtWidgets.QVBoxLayout()\n        setup_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        setup_buttons.setSpacing(15)\n\n        prefs_button = QtWidgets.QPushButton(lx(\"Preferences...\"), objectName=\"prefs\")\n        prefs_button.clicked.connect(self.prefs_button_click)\n        setup_buttons.addWidget(prefs_button)\n\n        change_profile_button = QtWidgets.QPushButton(lx(\"Change Profile...\"), objectName=\"changeProfile\")\n        change_profile_button.clicked.connect(self.change_profile_button_click)\n        setup_buttons.addWidget(change_profile_button)\n\n        email_setup_button = QtWidgets.QPushButton(lx(\"Email Setup...\"), objectName=\"emailSetup\")\n        email_setup_button.clicked.connect(self.email_setup_button_click)\n        setup_buttons.addWidget(email_setup_button)\n\n        setup_group_box = QtWidgets.QGroupBox(lx(\"Setup\"), objectName=\"setupGroup\")\n        setup_group_box.setLayout(setup_buttons)\n\n        right_zone.addWidget(setup_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Debug box\n        debug_buttons = QtWidgets.QVBoxLayout()\n        debug_buttons.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        debug_buttons.setSpacing(10)\n\n        set_log_level_button = QtWidgets.QPushButton(lx(\"Set Log Level...\"), objectName=\"setLogLevel\")\n        set_log_level_button.clicked.connect(self.set_log_level_button_click)\n        debug_buttons.addWidget(set_log_level_button)\n        call_api_button = QtWidgets.QPushButton(lx(\"Call APIs...\"), objectName=\"callApis\")\n        call_api_button.clicked.connect(self.call_api_button_click)\n        debug_buttons.addWidget(call_api_button)\n        gen_doc_button = QtWidgets.QPushButton(lx(\"Generate API Documentation...\"), objectName=\"getApiDoc\")\n        gen_doc_button.clicked.connect(self.get_doc_button_click)\n        debug_buttons.addWidget(gen_doc_button)\n        if self._api._info.get_model() > 7:      # API doc generation is blocked since LB W7\n            gen_doc_button.setEnabled(False)\n\n        debug_group_box = QtWidgets.QGroupBox(lx(\"Debug\"), objectName=\"debugGroup\")\n        debug_group_box.setLayout(debug_buttons)\n\n        right_zone.addWidget(debug_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Quit button\n        quit_button = QtWidgets.QPushButton(lx(\"Quit Application\"), objectName=\"quit\")\n        quit_button.clicked.connect(self.quit_button_click)\n        quit_button.setMinimumWidth(BUTTON_WIDTH)\n        right_zone.addWidget(quit_button, 1, QtCore.Qt.AlignmentFlag.AlignBottom)\n\n        # Layout\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft)\n        hbox.setSpacing(40)\n        hbox.addLayout(left_zone, 1)\n        hbox.addLayout(middle_zone, 1)\n        hbox.addLayout(right_zone, 1)\n        self._actions_tab.setLayout(hbox)\n\n        LmConfig.set_tooltips(self._actions_tab, \"actions\")\n        self._tab_widget.addTab(self._actions_tab, lx(\"Actions\"))\n\n\n    ### Click on Wifi config button\n    def wifi_config_button_click(self):\n        self._task.start(lx(\"Getting Wifi Configuration...\"))\n        try:\n            c = self._api._wifi.get_config()\n        finally:\n            self._task.end()\n        if (c is None) or (not len(c[\"Intf\"])):\n            self.display_error(mx(\"Something failed while trying to get wifi configuration.\", \"wifiGetConfErr\"))\n        else:\n            wifi_config_dialog = WifiConfigDialog(self, c, False)\n            if wifi_config_dialog.exec():\n                self._task.start(lx(\"Setting Wifi Configuration...\"))\n                try:\n                    n = wifi_config_dialog.get_config()\n                    if not self._api._wifi.set_config(c, n):\n                        self.display_error(mx(\"Something failed while trying to set wifi configuration.\", \"wifiSetConfErr\"))\n                finally:\n                    self._task.end()\n\n\n    ### Click on Wifi guest config button\n    def wifi_guest_config_button_click(self):\n        self._task.start(lx(\"Getting Guest Wifi Configuration...\"))\n        try:\n            c = self._api._wifi.get_guest_config()\n        finally:\n            self._task.end()\n        if (c is None) or (not len(c[\"Intf\"])):\n            self.display_error(mx(\"Something failed while trying to get wifi configuration.\", \"wifiGetConfErr\"))\n        else:\n            wifi_config_dialog = WifiConfigDialog(self, c, True)\n            if wifi_config_dialog.exec():\n                self._task.start(lx(\"Setting Guest Wifi Configuration...\"))\n                try:\n                    n = wifi_config_dialog.get_config()\n                    if not self._api._wifi.set_guest_config(c, n):\n                        self.display_error(mx(\"Something failed while trying to set wifi configuration.\", \"wifiSetConfErr\"))\n                finally:\n                    self._task.end()\n\n\n    ### Click on Wifi ON button\n    def wifi_on_button_click(self):\n        self._task.start(lx(\"Activating Wifi...\"))\n        try:\n            self._api._wifi.set_enable(True)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Wifi activated.\", \"wifiOn\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on Wifi OFF button\n    def wifi_off_button_click(self):\n        self._task.start(lx(\"Deactivating Wifi...\"))\n        try:\n            self._api._wifi.set_enable(False)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Wifi deactivated.\", \"wifiOff\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on guest Wifi ON button\n    def guest_wifi_on_button_click(self):\n        self._task.start(lx(\"Activating Guest Wifi...\"))\n        try:\n            self._api._wifi.set_guest_enable(True)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Guest Wifi activated. Reactivate Scheduler if required.\", \"gwifiOn\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on guest Wifi OFF button\n    def guest_wifi_off_button_click(self):\n        self._task.start(lx(\"Deactivating Guest Wifi...\"))\n        try:\n            self._api._wifi.set_guest_enable(False)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Guest Wifi deactivated.\", \"gwifiOff\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on Scheduler ON button\n    def scheduler_on_button_click(self):\n        self._task.start(lx(\"Activating Wifi Scheduler...\"))\n        try:\n            self._api._wifi.set_scheduler_enable(True)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Scheduler activated.\", \"schedOn\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on Scheduler OFF button\n    def scheduler_off_button_click(self):\n        self._task.start(lx(\"Deactivating Wifi Scheduler...\"))\n        try:\n            self._api._wifi.set_scheduler_enable(False)\n        except Exception as e:\n            self.display_error(str(e))\n        else:\n            self.display_status(mx(\"Scheduler deactivated.\", \"schedOff\"))\n        finally:\n            self._task.end()\n\n\n    ### Click on Global Wifi Status button\n    def wifi_global_status_button_click(self):\n        self._task.start(lx(\"Getting Wifi Global Status...\"))\n        try:\n            # Getting Livebox status\n            livebox_status = self._api._wifi.get_global_wifi_status()\n\n            # Getting Repeater statuses\n            global_status = self.get_repeaters_wifi_status()\n            global_status.insert(0, livebox_status)\n        finally:\n            self._task.end()\n\n        status_dialog = WifiGlobalStatusDialog(self, global_status)\n        status_dialog.exec()\n\n\n    ### Click on the Backup & Restore button\n    def backup_restore_button_click(self):\n        backup_restore_dialog = BackupRestoreDialog(self)\n        backup_restore_dialog.exec()\n\n\n    ### Click on LEDs & Screen setup button\n    def screen_button_click(self):\n        try:\n            orange_led_level = self._api._screen.get_orange_led_level()\n            show_wifi_password = self._api._screen.get_show_wifi_password()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n\n        screen_dialog = ScreenDialog(orange_led_level, show_wifi_password, self)\n        if screen_dialog.exec():\n            self._task.start(lx(\"Setting LEDs & Screen Setup...\"))\n\n            try:\n                # Set orange LED level if changed\n                new_orange_led_level = screen_dialog.get_orange_led_level()\n                if new_orange_led_level != orange_led_level:\n                    try:\n                        self._api._screen.set_orange_led_level(new_orange_led_level)\n                    except Exception as e:\n                        self.display_error(str(e))\n\n                # Set show wifi password if changed\n                new_show_wifi_password = screen_dialog.get_show_wifi_password()\n                if new_show_wifi_password != show_wifi_password:\n                    try:\n                        self._api._screen.set_show_wifi_password(new_show_wifi_password)\n                    except Exception as e:\n                        self.display_error(str(e))\n            finally:\n                self._task.end()\n\n\n    ### Click on Reboot Livebox button\n    def reboot_livebox_button_click(self):\n        if self.ask_question(mx(\"Are you sure you want to reboot the Livebox?\", \"lbReboot\")):\n            self._task.start(lx(\"Rebooting Livebox...\"))\n            try:\n                self._api._reboot.reboot_device()\n            except Exception as e:\n                self.display_error(str(e))\n                return\n            finally:\n                self._task.end()\n            self.display_status(mx(\"Application will now quit.\", \"appQuit\"))\n            self.close()\n\n\n    ### Click on Factory Reset Livebox button\n    def reset_livebox_button_click(self):\n        if self.ask_question(mx(\"Are you sure you want to reset the Livebox to factory settings?\", \"lbReset\")):\n            # Warn in case auto restore is enabled\n            try:\n                d = self._api._backup.get_status()\n            except Exception as e:\n                LmTools.error(str(e))\n                auto_restore_enabled = False\n            else:\n                auto_restore_enabled = d.get(\"Enable\", False)\n            if auto_restore_enabled:\n                if self.ask_question(mx(\"Do you want to disable automatic restoration of your configuration?\", \"autoRestore\")):\n                    try:\n                        self._api._backup.set_auto_backup_enable(False)\n                    except Exception as e:\n                        self._app.display_error(str(e))\n\n            # Apply reset\n            self._task.start(lx(\"Reseting Livebox...\"))\n            try:\n                self._api._reboot.factory_reset()\n            except Exception as e:\n                self.display_error(str(e))\n                return\n            finally:\n                self._task.end()\n            self.display_status(mx(\"Application will now quit.\", \"appQuit\"))\n            self.close()\n\n\n    ### Click on Reboot History button\n    def reboot_history_button_click(self):\n        self._task.start(lx(\"Getting Reboot History...\"))\n        try:\n            d = self._api._reboot.get_history()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n        finally:\n            self._task.end()\n\n        history_dialog = RebootHistoryDialog(\"Livebox\", self)\n        history_dialog.load_history(d)\n        history_dialog.exec()\n\n\n    ### Click on Firewall Level button\n    def firewall_level_button_click(self):\n        try:\n            firewall_ipv4_level = self._api._firewall.get_ipv4_firewall_level()\n            firewall_ipv6_level = self._api._firewall.get_ipv6_firewall_level()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n\n        firewall_level_dialog = FirewallLevelDialog(firewall_ipv4_level, firewall_ipv6_level, self)\n        if firewall_level_dialog.exec():\n            self._task.start(lx(\"Setting Firewall Levels...\"))\n            try:\n                # Set new IPv4 firewall level if changed\n                new_firewall_ipv4_level = firewall_level_dialog.get_ipv4_level()\n                if new_firewall_ipv4_level != firewall_ipv4_level:\n                    try:\n                        self._api._firewall.set_ipv4_firewall_level(new_firewall_ipv4_level)\n                    except Exception as e:\n                        self.display_error(str(e))\n\n                # Set new IPv6 firewall level if changed\n                new_firewall_ipv6_level = firewall_level_dialog.get_ipv6_level()\n                if new_firewall_ipv6_level != firewall_ipv6_level:\n                    try:\n                        self._api._firewall.set_ipv6_firewall_level(new_firewall_ipv6_level)\n                    except Exception as e:\n                        self.display_error(str(e))\n            finally:\n                self._task.end()\n\n\n    ### Click on Ping Response button\n    def ping_response_button_click(self):\n        # Get current ping reponses\n        try:\n            d = self._api._firewall.get_respond_to_ping()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n        ipv4_ping = d.get(\"enableIPv4\")\n        ipv6_ping = d.get(\"enableIPv6\")\n        if (ipv4_ping is None) or (ipv6_ping is None):\n            LmTools.error(\"Cannot get respond to ping setup\")\n\n        ping_response_dialog = PingResponseDialog(ipv4_ping, ipv6_ping, self)\n        if ping_response_dialog.exec():\n            # Set new ping responses level if changed\n            new_ipv4_ping = ping_response_dialog.get_ipv4()\n            new_ipv6_ping = ping_response_dialog.get_ipv6()\n            if (new_ipv4_ping != ipv4_ping) or (new_ipv6_ping != ipv6_ping):\n                self._task.start(lx(\"Set Ping Responses...\"))\n                try:\n                    p = {\"enableIPv4\": new_ipv4_ping, \"enableIPv6\": new_ipv6_ping}\n                    try:\n                        self._api._firewall.set_respond_to_ping(p)\n                    except Exception as e:\n                        self.display_error(str(e))\n                finally:\n                    self._task.end()\n\n\n    ### Click on DynDNS button\n    def dyndns_button_click(self):\n        dyndns_setup_dialog = DynDnsSetupDialog(self)\n        dyndns_setup_dialog.exec()\n\n\n    ### Click on DMZ button\n    def dmz_button_click(self):\n        dmz_setup_dialog = DmzSetupDialog(self)\n        dmz_setup_dialog.exec()\n\n\n    ### Click on Routing button\n    def routing_button_click(self):\n        routing_setup_dialog = RoutingSetupDialog(self)\n        routing_setup_dialog.exec()\n\n\n    ### Open Source project web button\n    def open_source_button_click(self, event):\n        webbrowser.open_new_tab(__url__)\n\n\n    ### Click on preferences button\n    def prefs_button_click(self):\n        prefs_dialog = PrefsDialog(self)\n        if prefs_dialog.exec():\n            LmConf.assign_profile()\n            LmConf.save()\n            LmConf.apply()\n            set_application_style()\n            self.reset_ui()\n\n\n    ### Change the current profile in use\n    def change_profile_button_click(self):\n        r = LmConf.ask_profile()\n        if r == 1:\n            LmConf.assign_profile()\n            self.reset_ui()\n        elif r == 2:\n            self.prefs_button_click()\n\n\n    ### Click on email setup button\n    def email_setup_button_click(self):\n        email_setup_dialog = EmailSetupDialog(self)\n        if email_setup_dialog.exec():\n            LmConf.set_email_setup(email_setup_dialog.get_setup())\n            LmConf.save()\n\n\n    ### Click on set log level button\n    def set_log_level_button_click(self):\n        levels = [\"0\", \"1\", \"2\"]\n        level, ok = QtWidgets.QInputDialog.getItem(None, lx(\"Log level selection\"),\n                                                   lx(\"Please select a log level:\"),\n                                                   levels, LmConf.LogLevel, False)\n        if ok:\n            LmConf.set_log_level(int(level))\n\n\n    ### Click on call APIs button\n    def call_api_button_click(self):\n        dialog = CallApiDialog(self._api, self)\n        dialog.exec()\n\n\n    ### Click on generate API documentation button\n    def get_doc_button_click(self):\n        # Check Ctlr key to switch to filtering mode\n        modifiers = QtGui.QGuiApplication.queryKeyboardModifiers()\n        filter_values = modifiers == QtCore.Qt.KeyboardModifier.ControlModifier\n\n        folder = QtWidgets.QFileDialog.getExistingDirectory(self, lx(\"Select Export Folder\"))\n        if len(folder):\n            folder = QtCore.QDir.toNativeSeparators(folder)\n\n            # Check Ctlr key again to possibly switch to filtering mode\n            if not filter_values:\n                modifiers = QtGui.QGuiApplication.queryKeyboardModifiers()\n                filter_values = modifiers == QtCore.Qt.KeyboardModifier.ControlModifier\n\n            self._task.start(lx(\"Generating API document files...\"))\n            try:\n                g = LmGenApiDocumentation.LmGenApiDoc(self, folder, filter_values)\n                g.gen_service_files()\n                g.gen_full_file()\n                g.gen_process_list_file()\n            finally:\n                self._task.end()\n\n\n    ### Click on Quit Application button\n    def quit_button_click(self):\n        self.close()\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmDeviceInfoTab.py",
    "content": "### Livebox Monitor device info tab module ###\n\nimport requests\nimport json\n\nfrom PyQt6 import QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.tabs.LmDeviceListTab import DSelCol\nfrom LiveboxMonitor.tabs.LmInfoTab import InfoCol\nfrom LiveboxMonitor.dlg.LmDeviceName import SetDeviceNameDialog\nfrom LiveboxMonitor.dlg.LmDeviceType import SetDeviceTypeDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_device_info_label as lx, get_device_info_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"deviceInfoTab\"\n\n# Static Config\nMACADDR_URL = \"https://api.macaddress.io/v1?apiKey={0}&output=json&search={1}\"\n\n\n\n# ################################ LmDeviceInfo class ################################\nclass LmDeviceInfo:\n\n    ### Create device info tab\n    def create_device_info_tab(self):\n        self._device_info_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Device list\n        self._info_dlist = LmTableWidget(objectName=\"infoDList\")\n        self._info_dlist.set_columns({DSelCol.Key: [\"Key\", 0, None],\n                                     DSelCol.Name: [lx(\"Name\"), 200, \"dlist_Name\"],\n                                     DSelCol.MAC: [lx(\"MAC\"), 120, \"dlist_MAC\"]})\n        self._info_dlist.set_header_resize([DSelCol.MAC])\n        self._info_dlist.set_standard_setup(self)\n        self._info_dlist.setMinimumWidth(350)\n        self._info_dlist.itemSelectionChanged.connect(self.info_device_list_click)\n\n        # Attribute list\n        self._info_alist = LmTableWidget(objectName=\"infoAList\")\n        self._info_alist.set_columns({InfoCol.Attribute: [lx(\"Attribute\"), 200, \"alist_Attribute\"],\n                                     InfoCol.Value: [lx(\"Value\"), 600, \"alist_Value\"]})\n        self._info_alist.set_header_resize([InfoCol.Value])\n        self._info_alist.set_standard_setup(self, allow_sel=False, allow_sort=False)\n\n        # Lists layout\n        list_box = QtWidgets.QHBoxLayout()\n        list_box.setSpacing(10)\n        list_box.addWidget(self._info_dlist, 0)\n        list_box.addWidget(self._info_alist, 1)\n\n        # Button bar\n        buttons_box = QtWidgets.QHBoxLayout()\n        buttons_box.setSpacing(30)\n        refresh_device_info_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_device_info_button.clicked.connect(self.refresh_device_info_button_click)\n        buttons_box.addWidget(refresh_device_info_button)\n        assign_name_button = QtWidgets.QPushButton(lx(\"Assign Name...\"), objectName=\"assignName\")\n        assign_name_button.clicked.connect(self.assign_name_button_click)\n        buttons_box.addWidget(assign_name_button)\n        assign_type_button = QtWidgets.QPushButton(lx(\"Assign Type...\"), objectName=\"assignType\")\n        assign_type_button.clicked.connect(self.assign_type_button_click)\n        buttons_box.addWidget(assign_type_button)\n        forget_button = QtWidgets.QPushButton(lx(\"Forget...\"), objectName=\"forget\")\n        forget_button.clicked.connect(self.forget_button_click)\n        buttons_box.addWidget(forget_button)\n        wol_button = QtWidgets.QPushButton(lx(\"WakeOnLAN\"), objectName=\"wol\")\n        wol_button.clicked.connect(self.wol_button_click)\n        buttons_box.addWidget(wol_button)\n        block_device_button = QtWidgets.QPushButton(lx(\"Block\"), objectName=\"block\")\n        block_device_button.clicked.connect(self.block_device_button_click)\n        buttons_box.addWidget(block_device_button)\n        unblock_device_button = QtWidgets.QPushButton(lx(\"Unblock\"), objectName=\"unblock\")\n        unblock_device_button.clicked.connect(self.unblock_device_button_click)\n        buttons_box.addWidget(unblock_device_button)\n\n        # Layout\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addLayout(list_box, 0)\n        vbox.addLayout(buttons_box, 1)\n        self._device_info_tab.setLayout(vbox)\n\n        LmConfig.set_tooltips(self._device_info_tab, \"dinfo\")\n        self._tab_widget.addTab(self._device_info_tab, lx(\"Device Infos\"))\n\n        # Init context\n        self.init_device_context()\n\n\n    ### Init selected device context\n    def init_device_context(self):\n        self._current_device_livebox_name = None\n        self._current_device_dns_name = None\n        self._current_device_type = \"\"\n\n\n    ### Get selected device key - returns None if no selection\n    def get_selected_device_key(self, display_error=True):\n        current_selection = self._info_dlist.currentRow()\n        if current_selection >= 0:\n            return self._info_dlist.item(current_selection, DSelCol.Key).text()\n        if display_error:\n            self.display_error(mx(\"Please select a device.\", \"devSelect\"))\n        return None\n\n\n    ### Click on info device list\n    def info_device_list_click(self):\n        self._info_alist.clearContents()\n        self._info_alist.setRowCount(0)\n\n        key = self.get_selected_device_key(False)\n        if key:\n            self.update_device_info(key)\n\n\n    ### Click on device infos refresh button\n    def refresh_device_info_button_click(self):\n        self.info_device_list_click()\n\n\n    ### Click on assign device name button\n    def assign_name_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            name = LmConf.MacAddrTable.get(key)\n\n            dialog = SetDeviceNameDialog(key, name, self._current_device_livebox_name, self._current_device_dns_name, self)\n            if dialog.exec():\n                # Updade local name\n                name = dialog.get_name()\n                if name is None:\n                    self.del_device_name(key)\n                else:\n                    self.set_device_name(key, name)\n\n                try:\n                    # Update Livebox name\n                    name = dialog.get_livebox_name()\n                    if name is None:\n                        self._api._device.del_name(key)\n                    else:\n                        self._api._device.set_name(key, name)\n\n                    # Update DNS name\n                    name = dialog.get_dns_name()\n                    if name is None:\n                        if self._current_device_dns_name is not None:\n                            self._api._device.del_dns_name(key)\n                    else:\n                        self._api._device.set_dns_name(key, name)\n                except Exception as e:\n                    self.display_error(str(e))\n\n\n    ### Refresh device info if the passed key is the selected one\n    def refresh_device_if_selected(self, device_key):\n        key = self.get_selected_device_key(False)\n        if key and (key == device_key):\n            self.info_device_list_click()\n\n\n    ### Set a device name stored in the MacAddr table\n    def set_device_name(self, device_key, device_name):\n        current_name = LmConf.MacAddrTable.get(device_key)\n        if current_name != device_name:\n            LmConf.MacAddrTable[device_key] = device_name\n            LmConf.save_mac_addr_table()\n            self.update_device_name(device_key)\n\n\n    ### Delete a device name from the MacAddr table\n    def del_device_name(self, device_key):\n        try:\n            del LmConf.MacAddrTable[device_key]\n        except KeyError:\n            pass\n        else:\n            LmConf.save_mac_addr_table()\n            self.update_device_name(device_key)\n\n\n    ### Click on assign device type button\n    def assign_type_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            self._task.start(lx(\"Loading device icons...\"))\n            try:\n                LmConf.load_device_icons()\n            finally:\n                self._task.end()\n\n            dialog = SetDeviceTypeDialog(key, self._current_device_type, self)\n            if dialog.exec():\n                device_type = dialog.get_type_key()\n                try:\n                    self._api._device.set_type(key, device_type)\n                except Exception as e:\n                    self.display_error(str(e))\n                else:\n                    self.info_device_list_click()\n                    self._current_device_type = device_type     # LB device type update is async and refresh screen might be too fast\n\n\n    ### Click on WakeOnLAN button\n    def wol_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            try:\n                self._api._device.wake_on_lan(key)\n            except Exception as e:\n                self.display_error(str(e))\n            else:\n                self.display_status(mx(\"Wake on LAN signal sent to device [{}].\", \"devWOL\").format(key))\n\n\n    ### Click on forget device button\n    def forget_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            if self.ask_question(mx(\"Are you sure you want to forget device [{}]?\", \"devForget\").format(key)):\n                try:\n                    self._api._device.delete(key)\n                except Exception as e:\n                    self.display_error(str(e))\n                else:\n                    self._info_dlist.setCurrentCell(-1, -1)\n                    # Call event handler directly - in some (unknown) cases, the event is not raised\n                    self.process_device_deleted_event(key)\n\n\n    ### Click on block device button\n    def block_device_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            try:\n                self._api._device.block(key)\n            except Exception as e:\n                self.display_error(str(e))\n            else:\n                self.display_status(mx(\"Device [{}] now blocked.\", \"devBlocked\").format(key))\n\n\n    ### Click on unblock device button\n    def unblock_device_button_click(self):\n        key = self.get_selected_device_key()\n        if key:\n            try:\n                r = self._api._device.unblock(key)\n            except Exception as e:\n                self.display_error(str(e))\n            else:\n                if r:\n                    self.display_status(mx(\"Device [{}] now unblocked.\", \"devUnblocked\").format(key))\n                else:\n                    self.display_status(mx(\"Device [{}] is not blocked.\", \"devNotBlocked\").format(key))\n\n\n    ### Update device infos list\n    def update_device_info(self, device_key):\n        self._task.start(lx(\"Getting device information...\"))\n        try:\n            try:\n                d = self._api._device.get_info(device_key)\n            except Exception as e:\n                LmTools.error(str(e))\n                self._task.end()\n                self.display_error(mx(\"Error getting device information.\", \"devInfoErr\"))\n                return\n\n            i = 0\n            i = self.add_info_line(self._info_alist, i, lx(\"Key\"), device_key)\n            i = self.add_info_line(self._info_alist, i, lx(\"Active\"), LmTools.fmt_bool(d.get(\"Active\")))\n            i = self.add_info_line(self._info_alist, i, lx(\"Authenticated\"), LmTools.fmt_bool(d.get(\"AuthenticationState\")))\n\n            try:\n                blocked = self._api._device.is_blocked(device_key)\n                i = self.add_info_line(self._info_alist, i, lx(\"Blocked\"), LmTools.fmt_bool(blocked))\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._info_alist, i, lx(\"Blocked\"), \"Scheduler:getSchedule query error\", LmQtTools.ValQual.Error)\n\n            i = self.add_info_line(self._info_alist, i, lx(\"First connection\"), LmTools.fmt_livebox_timestamp(d.get(\"FirstSeen\")))\n            i = self.add_info_line(self._info_alist, i, lx(\"Last connection\"), LmTools.fmt_livebox_timestamp(d.get(\"LastConnection\")))\n            i = self.add_info_line(self._info_alist, i, lx(\"Last changed\"), LmTools.fmt_livebox_timestamp(d.get(\"LastChanged\")))\n            i = self.add_info_line(self._info_alist, i, lx(\"Source\"), d.get(\"DiscoverySource\"))\n\n            self._current_device_livebox_name = d.get(\"Name\")\n            i = self.add_info_line(self._info_alist, i, lx(\"Livebox Name\"), self._current_device_livebox_name)\n\n            self._current_device_dns_name = None\n            name_list = d.get(\"Names\", [])\n            for name in name_list:\n                name_str = name.get(\"Name\", \"\")\n                source = name.get(\"Source\", \"\")\n                if source == \"dns\":\n                    self._current_device_dns_name = name_str\n                i = self.add_info_line(self._info_alist, i, lx(\"Name\"), f\"{name_str} ({source})\")\n\n            dns_list = d.get(\"mDNSService\", [])\n            for dns_name in dns_list:\n                i = self.add_info_line(self._info_alist, i, lx(\"DNS Name\"), f\"{dns_name.get('Name', '')} ({dns_name.get('ServiceName', '')})\")\n\n            self._current_device_type = d.get(\"DeviceType\", \"\")\n\n            type_list = d.get(\"DeviceTypes\", [])\n            for type in type_list:\n                i = self.add_info_line(self._info_alist, i, lx(\"Type\"), f\"{type.get('Type', '')} ({type.get('Source', '')})\")\n\n            active_ip_struct = LmTools.determine_ip(d)\n            active_ip = active_ip_struct.get(\"Address\", \"\") if active_ip_struct else \"\"\n            ipv4_list = d.get(\"IPv4Address\", [])\n            for ipv4 in ipv4_list:\n                ip = ipv4.get(\"Address\", \"\")\n                s = f\"{ip} (\"\n                if (len(active_ip) > 0) and (active_ip == ip):\n                    s += \"active, \"\n                s += f\"{ipv4.get('Status', '')})\"\n\n                if ipv4.get(\"Reserved\", False):\n                    s += \" - Reserved\"\n                i = self.add_info_line(self._info_alist, i, lx(\"IPv4 Address\"), s)\n\n            ipv6_list = d.get(\"IPv6Address\", [])\n            for ipv6 in ipv6_list:\n                i = self.add_info_line(self._info_alist, i, lx(\"IPv6 Address\"),\n                                       f\"{ipv6.get('Address', '')} [{ipv6.get('Scope', '')}] ({ipv6.get('Status', '')})\")\n\n            mac_addr = d.get(\"PhysAddress\")\n            if not mac_addr:\n                mac_addr = device_key\n            if LmConf.MacAddrApiKey and mac_addr:\n                try:\n                    resp = requests.get(MACADDR_URL.format(LmConf.MacAddrApiKey, mac_addr), timeout=2)\n                    resp.raise_for_status()     # Check HTTP status code\n                    data = resp.json()\n                    details = data.get(\"vendorDetails\")\n                    manufacturer = f\"{details.get('companyName', '')} - {details.get('countryCode', '')}\" if details else \"\"\n                    i = self.add_info_line(self._info_alist, i, lx(\"Manufacturer\"), manufacturer)\n                except Exception as e:\n                    LmTools.error(str(e))\n                    i = self.add_info_line(self._info_alist, i, lx(\"Manufacturer\"), \"Web query error\", LmQtTools.ValQual.Error)\n\n            i = self.add_info_line(self._info_alist, i, lx(\"Vendor ID\"), d.get(\"VendorClassID\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Serial Number\"), d.get(\"SerialNumber\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Product Class\"), d.get(\"ProductClass\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Model Name\"), d.get(\"ModelName\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Software Version\"), d.get(\"SoftwareVersion\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Hardware Version\"), d.get(\"HardwareVersion\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"DHCP Option 55\"), d.get(\"DHCPOption55\"))\n\n            sys_software = d.get(\"SSW\")\n            if sys_software is not None:\n                i = self.add_info_line(self._info_alist, i, lx(\"Full Software Version\"), sys_software.get(\"SoftwareVersion\"))\n                i = self.add_info_line(self._info_alist, i, lx(\"State\"), sys_software.get(\"State\"))\n                i = self.add_info_line(self._info_alist, i, lx(\"Protocol\"), sys_software.get(\"Protocol\"))\n                i = self.add_info_line(self._info_alist, i, lx(\"Current Mode\"), sys_software.get(\"CurrentMode\"))\n                i = self.add_info_line(self._info_alist, i, lx(\"Pairing Time\"), LmTools.fmt_livebox_timestamp(sys_software.get(\"PairingTime\")))\n                i = self.add_info_line(self._info_alist, i, lx(\"Uplink Type\"), sys_software.get(\"UplinkType\"))\n\n            signal_strength = LmTools.fmt_int(d.get(\"SignalStrength\"))\n            if len(signal_strength):\n                signal_strength += \" dBm\"\n            i = self.add_info_line(self._info_alist, i, lx(\"Wifi Signal Strength\"), signal_strength)\n            i = self.add_info_line(self._info_alist, i, lx(\"Wifi Signal Noise Ratio\"), LmTools.fmt_int(d.get(\"SignalNoiseRatio\")))\n            i = self.add_info_line(self._info_alist, i, lx(\"Encryption Mode\"), d.get(\"EncryptionMode\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Security Mode\"), d.get(\"SecurityModeEnabled\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Link Bandwidth\"), d.get(\"LinkBandwidth\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Operating Standard\"), d.get(\"OperatingStandard\"))\n            i = self.add_info_line(self._info_alist, i, lx(\"Operating Band\"), d.get(\"OperatingFrequencyBand\"))\n\n            sys_software_std = d.get(\"SSWSta\")\n            if sys_software_std is not None:\n                i = self.add_info_line(self._info_alist, i, lx(\"Supported Standards\"), sys_software_std.get(\"SupportedStandards\"))\n                i = self.add_info_line(self._info_alist, i, lx(\"Supports 2.4GHz\"), LmTools.fmt_bool(sys_software_std.get(\"Supports24GHz\")))\n                i = self.add_info_line(self._info_alist, i, lx(\"Supports 5GHz\"), LmTools.fmt_bool(sys_software_std.get(\"Supports5GHz\")))\n                i = self.add_info_line(self._info_alist, i, lx(\"Supports 6GHz\"), LmTools.fmt_bool(sys_software_std.get(\"Supports6GHz\")))\n\n        finally:\n            self._task.end()\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmDeviceListTab.py",
    "content": "### Livebox Monitor device list tab module ###\n\nimport datetime\n\nfrom enum import IntEnum\nfrom ipaddress import IPv4Address\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmThread import LmThread\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, NumericSortItem, CenteredIconsDelegate\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.tabs.LmDhcpTab import DhcpCol\nfrom LiveboxMonitor.tabs.LmRepeaterTab import INTF_NAME_MAP_WR\nfrom LiveboxMonitor.dlg.LmIPv6 import IPv6Dialog\nfrom LiveboxMonitor.dlg.LmDns import DnsDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_device_list_label as lx, get_device_list_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"deviceListTab\"\n\n# List columns\nclass DevCol(IntEnum):\n    Key = 0\n    Type = 1\n    Name = 2\n    LBName = 3\n    MAC = 4\n    IP = 5\n    Link = 6\n    Active = 7\n    Wifi = 8\n    Event = 9\n    Down = 10\n    Up = 11\n    DownRate = 12\n    UpRate = 13\nICON_COLUMNS = [DevCol.Type, DevCol.Active, DevCol.Wifi, DevCol.Event]\n\nclass DSelCol(IntEnum):\n    Key = 0     # Must be the same as DevCol.Key\n    Name = 1\n    MAC = 2\n\n\n# ################################ LmDeviceList class ################################\nclass LmDeviceList:\n\n    ### Create device list tab\n    def create_device_list_tab(self):\n        self._device_list_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Device list columns\n        self._device_list = LmTableWidget(objectName=\"deviceList\")\n        self._device_list.set_columns({DevCol.Key: [\"Key\", 0, None],\n                                       DevCol.Type: [lx(\"T\"), 48, \"dlist_Type\"],\n                                       DevCol.Name: [lx(\"Name\"), 400, \"dlist_Name\"],\n                                       DevCol.LBName: [lx(\"Livebox Name\"), 400, \"dlist_LBName\"],\n                                       DevCol.MAC: [lx(\"MAC\"), 120, \"dlist_MAC\"],\n                                       DevCol.IP: [lx(\"IP\"), 105, \"dlist_IP\"],\n                                       DevCol.Link: [lx(\"Link\"), 150, \"dlist_Link\"],\n                                       DevCol.Active: [lx(\"A\"), 0 if LmConf.OnlyActiveDevices else 10, \"dlist_Active\"],\n                                       DevCol.Wifi: [lx(\"Wifi\"), 70, \"dlist_Wifi\"],\n                                       DevCol.Event: [lx(\"E\"), 10, \"dlist_Event\"],\n                                       DevCol.Down: [lx(\"Rx\"), 75, \"dlist_Rx\"],\n                                       DevCol.Up: [lx(\"Tx\"), 75, \"dlist_Tx\"],\n                                       DevCol.DownRate: [lx(\"RxRate\"), 75, \"dlist_RxRate\"],\n                                       DevCol.UpRate: [lx(\"TxRate\"), 75, \"dlist_TxRate\"]})\n        self._device_list.set_header_resize([DevCol.Name, DevCol.LBName, DevCol.Link])\n        self._device_list.set_standard_setup(self)\n        self._device_list.setItemDelegate(CenteredIconsDelegate(self, ICON_COLUMNS))\n\n        # Button bar\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setSpacing(30)\n        refresh_device_list_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refresh\")\n        refresh_device_list_button.clicked.connect(self.refresh_device_list_button_click)\n        hbox.addWidget(refresh_device_list_button)\n        assign_names_button = QtWidgets.QPushButton(lx(\"Assign Names...\"), objectName=\"assignNames\")\n        assign_names_button.clicked.connect(self.assign_names_button_click)\n        hbox.addWidget(assign_names_button)\n        device_info_button = QtWidgets.QPushButton(lx(\"Device Infos\"), objectName=\"deviceInfo\")\n        device_info_button.clicked.connect(self.device_info_button_click)\n        hbox.addWidget(device_info_button)\n        device_events_button = QtWidgets.QPushButton(lx(\"Device Events\"), objectName=\"deviceEvents\")\n        device_events_button.clicked.connect(self.device_events_button_click)\n        hbox.addWidget(device_events_button)\n        ipv6_button = QtWidgets.QPushButton(lx(\"IPv6...\"), objectName=\"ipv6\")\n        ipv6_button.clicked.connect(self.ipv6_button_click)\n        hbox.addWidget(ipv6_button)\n        dns_button = QtWidgets.QPushButton(lx(\"DNS...\"), objectName=\"dns\")\n        dns_button.clicked.connect(self.dns_button_click)\n        hbox.addWidget(dns_button)\n\n        # Layout\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addWidget(self._device_list, 0)\n        vbox.addLayout(hbox, 1)\n        self._device_list_tab.setLayout(vbox)\n\n        LmConfig.set_tooltips(self._device_list_tab, \"dlist\")\n        self._tab_widget.addTab(self._device_list_tab, lx(\"Device List\"))\n\n\n    ### Init the Livebox Wifi stats collector thread\n    def init_wifi_stats_loop(self):\n        if LmConf.RealtimeWifiStats:\n            self._livebox_wifi_stats_map = {}\n            self._livebox_wifi_stats_loop = None\n\n\n    ### Start the Livebox Wifi stats collector thread\n    def start_wifi_stats_loop(self):\n        if LmConf.RealtimeWifiStats:\n            self._livebox_wifi_stats_loop = LiveboxWifiStatsThread(self._api)\n            self._livebox_wifi_stats_loop.connect_processor(self.process_livebox_wifi_stats)\n\n\n    ### Suspend the Livebox Wifi stats collector thread\n    def suspend_wifi_stats_loop(self):\n        if LmConf.RealtimeWifiStats:\n            if self._livebox_wifi_stats_loop is not None:\n                self._livebox_wifi_stats_loop.stop()\n\n\n    ### Resume the Livebox Wifi stats collector thread\n    def resume_wifi_stats_loop(self):\n        if LmConf.RealtimeWifiStats:\n            if self._livebox_wifi_stats_loop is None:\n                self.start_wifi_stats_loop()\n            else:\n                self._livebox_wifi_stats_loop._resume.emit()\n\n\n    ### Stop the Livebox Wifi stats collector thread\n    def stop_wifi_stats_loop(self):\n        if LmConf.RealtimeWifiStats:\n            if self._livebox_wifi_stats_loop is not None:\n                self._livebox_wifi_stats_loop.quit()\n                self._livebox_wifi_stats_loop = None\n\n\n    ### Click on refresh device list button\n    def refresh_device_list_button_click(self):\n        self._device_list.clearContents()\n        self._device_list.setRowCount(0)\n        self._info_dlist.clearContents()\n        self._info_dlist.setRowCount(0)\n        self._info_alist.clearContents()\n        self._info_alist.setRowCount(0)\n        self._event_dlist.clearContents()\n        self._event_dlist.setRowCount(0)\n        self._event_list.clearContents()\n        self._event_list.setRowCount(0)\n        LmConf.load_mac_addr_table()\n        self.load_device_list()\n\n\n    ### Click on assign names button\n    def assign_names_button_click(self):\n        if self.ask_question(mx(\"This will assign the Livebox name as the local name for all unknown devices. Continue?\", \"aName\")):\n            self.assign_lb_names_to_unkown_devices()\n\n\n    ### Click on device infos button\n    def device_info_button_click(self):\n        current_selection = self._device_list.currentRow()\n        if current_selection >= 0:\n            key = self._device_list.item(current_selection, DevCol.Key).text()\n            line = self.find_device_line(self._info_dlist, key)\n            self._info_dlist.selectRow(line)\n        self.switch_to_device_infos_tab()\n\n\n    ### Click on device events button\n    def device_events_button_click(self):\n        current_selection = self._device_list.currentRow()\n        if current_selection >= 0:\n            key = self._device_list.item(current_selection, DevCol.Key).text()\n            line = self.find_device_line(self._event_dlist, key)\n            self._event_dlist.selectRow(line)\n        self.switch_to_device_events_tab()\n\n\n    ### Click on IPv6 button\n    def ipv6_button_click(self):\n        self._task.start(lx(\"Getting IPv6 Information...\"))\n        try:\n            # Get IPv6 status\n            try:\n                d = self._api._info.get_ipv6_status()\n            except Exception as e:\n                self.display_error(str(e))\n                ipv6_enabled = None\n            else:\n                ipv6_enabled = d.get(\"Enable\")\n\n            # Get CGNat status\n            try:\n                d = self._api._info.get_cgnat_status()\n            except Exception as e:\n                LmTools.error(str(e))\n                cgnat = None\n            else:\n                cgnat = d.get(\"Demand\")\n\n            # Get IPv6Mode\n            try:\n                d = self._api._info.get_ipv6_mode()\n            except Exception as e:\n                LmTools.error(str(e))\n                mode = None\n            else:\n                mode = d.get(\"IPv6Mode\")\n\n            # Get IPv6 address and prefix\n            try:\n                d = self._api._info.get_wan_status()\n            except Exception as e:\n                LmTools.error(str(e))\n                ipv6_addr = None\n                ipv6_prefix = None\n                gateway = None\n            else:\n                ipv6_addr = d.get(\"IPv6Address\")\n                ipv6_prefix = d.get(\"IPv6DelegatedPrefix\")\n                gateway = d.get(\"RemoteGatewayIPv6\")\n\n            # Get IPv6 prefix leases delegation list\n            try:\n                prefixes = self._api._dhcp.get_v6_prefix_leases()\n            except Exception as e:\n                self.display_error(str(e))\n                prefixes = None\n\n            self.load_device_ip_name_map()\n        finally:\n            self._task.end()\n\n        ipv6_dialog = IPv6Dialog(ipv6_enabled, cgnat, mode, ipv6_addr, ipv6_prefix, gateway, self)\n        ipv6_dialog.load_device_list(self._livebox_devices, prefixes)\n        ipv6_dialog.exec()\n\n\n    ### Click on DNS button\n    def dns_button_click(self):\n        self._task.start(lx(\"Getting DNS Information...\"))\n        try:\n            self.load_device_ip_name_map()\n        finally:\n            self._task.end()\n\n        dns_dialog = DnsDialog(self)\n        dns_dialog.load_device_list(self._livebox_devices)\n        dns_dialog.exec()\n\n\n    ### Load device list\n    def load_device_list(self):\n        self._task.start(lx(\"Loading device list...\"))\n        try:\n            self._device_list.setSortingEnabled(False)\n            self._info_dlist.setSortingEnabled(False)\n            self._event_dlist.setSortingEnabled(False)\n            self._event_list.setSortingEnabled(False)\n\n            # Init\n            self._interface_map = []\n            self._device_map = []\n            self._device_ip_name_map = {}\n            self._device_ip_name_map_dirty = True\n\n            # Get device infos from Livebox & build IP -> name map\n            try:\n                self._livebox_devices = self._api._device.get_list()\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Error getting device list.\", \"dlistErr\"))\n                self._livebox_devices = None            \n            else:\n                self.build_device_ip_name_map()\n                self._device_ip_name_map_dirty = False\n\n            # Get topology infos from Livebox & build link & device maps\n            try:\n                topology = self._api._device.get_topology()\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Error getting device topology.\", \"topoErr\"))\n            else:\n                self.build_link_maps(topology)\n\n            # Load devices in list, trying to identify Wifi repeaters & TV Decoders on the fly\n            i = 0\n            if self._livebox_devices is not None:\n                for d in self._livebox_devices:\n                    if self.displayable_device(d):\n                        self.identify_repeater(d)\n                        self.identify_tvdecoder(d)\n                        self.add_device_line(i, d)\n                        self.update_device_line(i, d, False)\n                        i += 1\n\n            self._device_list.sortItems(DevCol.Active, QtCore.Qt.SortOrder.DescendingOrder)\n\n            self._event_dlist.insertRow(i)\n            self._event_dlist.setItem(i, DSelCol.Key, QtWidgets.QTableWidgetItem(\"#NONE#\"))\n            self._event_dlist.setItem(i, DSelCol.Name, QtWidgets.QTableWidgetItem(lx(\"<None>\")))\n\n            self._device_list.setCurrentCell(-1, -1)\n            self._info_dlist.setCurrentCell(-1, -1)\n            self._event_dlist.setCurrentCell(-1, -1)\n\n            self.init_device_context()      # Init selected device context for DeviceInfo tab\n\n            self._device_list.setSortingEnabled(True)\n            self._info_dlist.setSortingEnabled(True)\n            self._event_dlist.setSortingEnabled(True)\n            self._event_list.setSortingEnabled(True)\n        finally:\n            self._task.end()\n\n\n    ### Check if device is displayable\n    def displayable_device(self, device):\n        # If Filter Devices option is on, do not display active devices without Layer2Intf\n        if LmConf.FilterDevices and device.get(\"Active\", False):\n            return len(device.get(\"Layer2Interface\", \"\")) > 0\n        return True\n\n\n    ### Add device line\n    def add_device_line(self, line, device):\n        key = device.get(\"Key\", \"\")\n        self.add_device_line_key(self._device_list, line, key)\n        self.add_device_line_key(self._info_dlist, line, key)\n        self.add_device_line_key(self._event_dlist, line, key)\n\n        mac_addr = device.get(\"PhysAddress\", \"\")\n        self.format_name_widget(self._device_list, line, key, DevCol.Name)\n        self.format_mac_widget(self._device_list, line, mac_addr, DevCol.MAC)\n        self.format_name_widget(self._info_dlist, line, key, DSelCol.Name)\n        self.format_mac_widget(self._info_dlist, line, mac_addr, DSelCol.MAC)\n        self.format_name_widget(self._event_dlist, line, key, DSelCol.Name)\n        self.format_mac_widget(self._event_dlist, line, mac_addr, DSelCol.MAC)\n\n\n    ### Add a line with a device key\n    @staticmethod\n    def add_device_line_key(table, line, key):\n        table.insertRow(line)\n        table.setItem(line, DevCol.Key, QtWidgets.QTableWidgetItem(key))\n\n\n    ### Update device line\n    def update_device_line(self, line, device, notify):\n        device_type = device.get(\"DeviceType\", \"\")\n        device_type_icon = self.format_device_type_table_widget(device_type)\n        self._device_list.setItem(line, DevCol.Type, device_type_icon)\n\n        lb_name = QtWidgets.QTableWidgetItem(device.get(\"Name\", \"\"))\n        self._device_list.setItem(line, DevCol.LBName, lb_name)\n\n        ip_struct = LmTools.determine_ip(device)\n        if ip_struct is None:\n            ipv4 = \"\"\n            ipv4_reacheable = \"\"\n            ipv4_reserved = False\n        else:\n            ipv4 = ip_struct.get(\"Address\", \"\")\n            ipv4_reacheable = ip_struct.get(\"Status\", \"\")\n            ipv4_reserved = ip_struct.get(\"Reserved\", False)\n        ip = self.format_ipv4_table_widget(ipv4, ipv4_reacheable, ipv4_reserved)\n        self._device_list.setItem(line, DevCol.IP, ip)\n\n        link_intf = self.find_device_link(device.get(\"Key\", \"\"))\n        if link_intf is None:\n            link_name = lx(\"Unknown\")\n            link_type = \"\"\n        else:\n            link_name = link_intf[\"Name\"]\n            link_type = link_intf[\"Type\"]\n        curr_link = self._device_list.item(line, DevCol.Link)\n        if curr_link is None:\n            curr_link_name = \"\"\n        else:\n            curr_link_name = curr_link.text()\n        link = QtWidgets.QTableWidgetItem(link_name)\n        self._device_list.setItem(line, DevCol.Link, link)\n\n        # Notify\n        if notify and (link_name != curr_link_name):\n            mac_addr = device.get(\"PhysAddress\", None)\n            if mac_addr is not None:\n                self.notify_device_access_link_event(mac_addr, curr_link_name, link_name)\n\n        active_status = device.get(\"Active\", False)\n        active_icon = self.format_active_table_widget(active_status)\n        self._device_list.setItem(line, DevCol.Active, active_icon)\n\n        # Show/hide the line according to active status\n        if LmConf.OnlyActiveDevices:\n            self._device_list.setRowHidden(line, not active_status)\n\n        wifi_icon = None\n        if active_status and (link_type == \"wif\"):\n            signal_strength = device.get(\"SignalStrength\")\n            signal_noise_ratio = device.get(\"SignalNoiseRatio\")\n            if (signal_strength is not None) and (signal_noise_ratio is not None):\n                wifi_score = self.get_wifi_rating(signal_strength, signal_noise_ratio)\n                match wifi_score:\n                    case 0:\n                        score_icon = LmIcon.WifiSignal0Pixmap\n                    case 1:\n                        score_icon = LmIcon.WifiSignal1Pixmap\n                    case 2:\n                        score_icon = LmIcon.WifiSignal2Pixmap\n                    case 3:\n                        score_icon = LmIcon.WifiSignal3Pixmap\n                    case 4:\n                        score_icon = LmIcon.WifiSignal4Pixmap\n                    case 5:\n                        score_icon = LmIcon.WifiSignal5Pixmap\n                wifi_icon = NumericSortItem()\n                wifi_icon.setIcon(QtGui.QIcon(score_icon))\n                wifi_icon.setData(QtCore.Qt.ItemDataRole.UserRole, wifi_score)\n        self._device_list.setItem(line, DevCol.Wifi, wifi_icon)\n\n\n    ### Compute wifi connection quality rating from 0 to 5\n    @staticmethod\n    def get_wifi_rating(signal_strength, signal_noise_ratio, default_rating=3):\n        # Case when system doesn't know, like for Guest interface (0 values)\n        if signal_strength == 0 or signal_noise_ratio == 0:\n            return default_rating\n\n        # Score Signal Strength (RSSI)\n        # Range: -30 (Best) to -90 (Worst)\n        if signal_strength >= -50:\n            rssi_score = 5\n        elif signal_strength >= -60:\n            rssi_score = 4\n        elif signal_strength >= -70:\n            rssi_score = 3\n        elif signal_strength >= -80:\n            rssi_score = 2\n        elif signal_strength >= -90:\n            rssi_score = 1\n        else:\n            rssi_score = 0\n\n        # Score SNR (Ratio)\n        # Range: >25 (Best) to <10 (Worst)\n        if signal_noise_ratio >= 30:\n            snr_score = 5\n        elif signal_noise_ratio >= 20:\n            snr_score = 4\n        elif signal_noise_ratio >= 15:\n            snr_score = 3\n        elif signal_noise_ratio >= 10:\n            snr_score = 2\n        elif signal_noise_ratio >= 5:\n            snr_score = 1\n        else:\n            snr_score = 0\n\n        # Return average\n        return round((rssi_score + snr_score) / 2)\n\n\n    ### Update device name in all lists & tabs\n    def update_device_name(self, device_key):\n        line = self.find_device_line(self._device_list, device_key)\n        if line >= 0:\n            self.format_name_widget(self._device_list, line, device_key, DevCol.Name)\n\n        line = self.find_device_line(self._info_dlist, device_key)\n        if line >= 0:\n            self.format_name_widget(self._info_dlist, line, device_key, DSelCol.Name)\n\n        line = self.find_device_line(self._event_dlist, device_key)\n        if line >= 0:\n            self.format_name_widget(self._event_dlist, line, device_key, DSelCol.Name)\n\n        line = self.find_device_line(self._dhcp_dlist, device_key)\n        if line >= 0:\n            self.format_name_widget(self._dhcp_dlist, line, device_key, DhcpCol.Name)\n\n        self.graph_update_device_name(device_key)\n        self.repeater_update_device_name(device_key)\n        self.tvdecoder_update_device_name(device_key)\n\n\n    ### Format device type cell\n    @staticmethod\n    def format_device_type_table_widget(device_type):\n        device_type_icon = NumericSortItem()\n        device_type_name = device_type\n\n        for i, d in enumerate(LmConfig.DEVICE_TYPES):\n            if device_type == d[\"Key\"]:\n                device_type_icon.setIcon(QtGui.QIcon(LmConf.get_device_icon(d)))\n                device_type_name = d[\"Name\"]\n                break\n\n        device_type_icon.setData(QtCore.Qt.ItemDataRole.UserRole, i)\n        device_type_icon.setData(LmQtTools.ItemDataRole.ExportRole, device_type_name)\n\n        return device_type_icon\n\n\n    ### Format Name cell\n    @staticmethod\n    def format_name_widget(table, line, mac_addr, name_col):\n        try:\n            name = QtWidgets.QTableWidgetItem(LmConf.MacAddrTable[mac_addr])\n        except KeyError:\n            name = QtWidgets.QTableWidgetItem(lx(\"UNKNOWN\"))\n            name.setBackground(QtCore.Qt.GlobalColor.red)\n        table.setItem(line, name_col, name)\n        \n\n    ### Format MAC address cell\n    @staticmethod\n    def format_mac_widget(table, line, mac_addr, mac_col):\n        mac = QtWidgets.QTableWidgetItem(mac_addr)\n        mac.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        table.setItem(line, mac_col, mac)\n\n\n    ### Format Active status cell\n    @staticmethod\n    def format_active_table_widget(active_status):\n        active_icon_item = NumericSortItem()\n        if active_status:\n            active_icon_item.setIcon(QtGui.QIcon(LmIcon.TickPixmap))\n            active_icon_item.setData(QtCore.Qt.ItemDataRole.UserRole, 1)\n            active_icon_item.setData(LmQtTools.ItemDataRole.ExportRole, True)\n        else:\n            active_icon_item.setIcon(QtGui.QIcon(LmIcon.CrossPixmap))\n            active_icon_item.setData(QtCore.Qt.ItemDataRole.UserRole, 0)\n            active_icon_item.setData(LmQtTools.ItemDataRole.ExportRole, False)\n        return active_icon_item\n\n\n    ### Format IPv4 cell\n    @staticmethod\n    def format_ipv4_table_widget(ipv4, reacheable_status, reserved):\n        ip = NumericSortItem(ipv4)\n        if len(ipv4):\n            ip.setData(QtCore.Qt.ItemDataRole.UserRole, int(IPv4Address(ipv4)))\n        else:\n            ip.setData(QtCore.Qt.ItemDataRole.UserRole, 0)\n        if reacheable_status != \"reachable\":\n            ip.setForeground(QtCore.Qt.GlobalColor.red)\n        if reserved:\n            ip.setFont(LmQtTools.BOLD_FONT)\n        return ip\n\n\n    ### Find device line from device key\n    @staticmethod\n    def find_device_line(table, device_key):\n        if not device_key:\n            return -1\n        return next((i for i in range(table.rowCount()) if table.item(i, DevCol.Key).text() == device_key), -1)\n\n\n    ### Get list of devices MAC, Livebox name, IPv4 and Active from currently displayed device list\n    def get_device_list(self):\n        return [\n            {\n                \"MAC\": self._device_list.item(i, DevCol.MAC).text(),\n                \"LBName\": self._device_list.item(i, DevCol.LBName).text(),\n                \"IP\": self._device_list.item(i, DevCol.IP).text(),\n                \"Active\": self._device_list.item(i, DevCol.Active).data(QtCore.Qt.ItemDataRole.UserRole) == 1\n            }\n            for i in range(self._device_list.rowCount())\n        ]\n\n\n    ### Propose to assign LB names to all unknown devices\n    def propose_to_assign_names_to_unkown_devices(self):\n        if not LmConf.MacAddrTable:\n            if self.ask_question(mx(\"Do you trust all connected devices and do you want to name them all based on their Livebox name?\\n\"\n                                    \"You can still do that action later.\", \"aNameStartup\")):\n                self.assign_lb_names_to_unkown_devices()\n\n\n    ### Assign LB names to all unknown devices\n    def assign_lb_names_to_unkown_devices(self):\n        self._task.start(lx(\"Assigning names to unknown devices...\"))\n        try:\n            for d in self.get_device_list():\n                if not LmConf.MacAddrTable.get(d[\"MAC\"]):\n                    self.set_device_name(d[\"MAC\"], d[\"LBName\"])\n        finally:\n            self._task.end()\n\n\n    ### Load device IPv4 & IPv6 -> MAC/LBName/Active/IPVers map if need to be refreshed\n    def load_device_ip_name_map(self):\n        if self._device_ip_name_map_dirty:\n            self._task.start(lx(\"Loading devices information...\"))\n            try:\n                try:\n                    self._livebox_devices = self._api._device.get_list()\n                except Exception as e:\n                    LmTools.error(str(e))\n                    self.display_error(mx(\"Error getting device list.\", \"dlistErr\"))\n                    return\n\n                self.build_device_ip_name_map()\n                self._device_ip_name_map_dirty = False\n            finally:\n                self._task.end()\n\n\n    # Build device IPv4 & IPv6 -> MAC/LBName/Active/IPVers map from currently loaded device list\n    def build_device_ip_name_map(self):\n        # Init\n        self._device_ip_name_map = {}\n\n        for d in self._livebox_devices:\n            # Skip non displayable devices\n            if not self.displayable_device(d):\n                continue\n\n            # Base device infos to map for all its IP entries\n            base_info = {\n                \"MAC\": d.get(\"PhysAddress\", \"\"),\n                \"LBName\": d.get(\"Name\", \"\"),\n                \"Active\": d.get(\"Active\", False)\n            }\n\n            # Map IPv4 address to device infos\n            ipv4_struct = LmTools.determine_ip(d)\n            if ipv4_struct:\n                ipv4 = ipv4_struct.get(\"Address\", \"\")\n                if ipv4:\n                    self._device_ip_name_map[ipv4] = {**base_info, \"IPVers\": \"IPv4\"}\n\n            # Map IPv6 address(es) to device infos\n            for ipv6_entry in d.get(\"IPv6Address\") or []:\n                if ipv6_entry.get(\"Scope\", \"link\") != \"link\":\n                    ipv6 = ipv6_entry.get(\"Address\", \"\")\n                    if ipv6:\n                        self._device_ip_name_map[ipv6] = {**base_info, \"IPVers\": \"IPv6\"}           \n\n\n    ### Get device name from IPv4 or IPv6\n    # Depends on DeviceIpNameMap correct load\n    # Returns local name in priority then LB name, then default to IP\n    def get_device_name_from_ip(self, ip):\n        if ip:\n            device_info = self._device_ip_name_map.get(ip)\n            if device_info is None:\n                return ip\n            try:\n                return LmConf.MacAddrTable[device_info[\"MAC\"]]\n            except KeyError:\n                return device_info[\"LBName\"]\n        return \"\"\n\n\n    ### Returns True if device uses a Wifi connection\n    def is_wifi_device(self, device_key):\n        link_intf = self.find_device_link(device_key)\n        if link_intf:\n            return link_intf[\"Type\"] == \"wif\"\n        return False\n\n\n    ### Build link map\n    def build_link_maps(self, topology):\n        root_node = topology[0]\n        device_key = root_node.get(\"Key\", \"\")\n        self.build_links_map_node(root_node.get(\"Children\", []), device_key, \"Livebox\", \"\", \"\")\n#DBG    self.display_infos('Interface map', str(self._interface_map))\n#DBG    self.display_infos('Device map', str(self._device_map))\n\n\n    ### Handle a topology node to build links map\n    def build_links_map_node(self, node, device_key, device_name, interface_key, interface_name):\n        intf_list = self._api._intf.get_list()\n        for d in node:\n            tags = d.get(\"Tags\", \"\").split()\n\n            # Init\n            node_device_key = device_key\n            node_device_name = device_name\n            node_interface_key = interface_key\n            node_interface_name = interface_name\n\n            # Handle interface end points\n            if \"interface\" in tags:\n                node_interface_key = d.get(\"Key\", \"\")\n                interface_type = d.get(\"InterfaceType\", \"\")\n                if interface_type == \"Ethernet\":\n                    interface_type = \"eth\"\n                    node_interface_name = d.get(\"Name\", \"\").capitalize()\n                    if len(node_interface_name) == 0:\n                        node_interface_name = d.get(\"NetDevName\", \"\").capitalize()\n                    if device_name == \"Livebox\":\n                        name_map = LmConfig.INTF_NAME_MAP\n                    else:\n                        name_map = INTF_NAME_MAP_WR\n                    mapped_name = name_map.get(node_interface_name)\n                    if mapped_name is not None:\n                        node_interface_name = mapped_name\n                else:\n                    interface_type = \"wif\"\n                    if device_name == \"Livebox\":\n                        i = next((i for i in intf_list if i[\"Key\"] == node_interface_key), None)\n                        if i is None:\n                            node_interface_name = d.get(\"Name\", node_interface_key)\n                        else:\n                            node_interface_name = i[\"Name\"]\n                    else:\n                        wifi_band = d.get(\"OperatingFrequencyBand\", \"\")\n                        if len(wifi_band):\n                            node_interface_name = f\"Wifi {wifi_band}\"\n                        else:\n                            node_interface_name = d.get(\"Name\", node_interface_key)\n\n                map_entry = {\n                    \"Key\": node_interface_key,\n                    \"Type\": interface_type,\n                    \"DevKey\": node_device_key,\n                    \"DevName\": node_device_name,\n                    \"IntName\": node_interface_name,\n                    \"Name\": f\"{node_device_name} {lx(node_interface_name)}\"\n                }\n                self._interface_map.append(map_entry)\n\n            # Handle devices\n            if \"physical\" in tags:\n                node_device_key = d.get(\"Key\", \"\")\n                node_device_name = d.get(\"Name\", \"\")\n                map_entry = {\n                    \"Key\": node_device_key,\n                    \"InterfaceKey\": node_interface_key\n                }\n                self._device_map.append(map_entry)\n\n            # Handle wifi bridges (non Orange repeater)\n            if \"wifi_bridge\" in tags:\n                node_interface_key = d.get(\"Key\", \"\")\n                node_device_name = d.get(\"Name\", \"\")\n\n                map_entry = {\n                    \"Key\": node_interface_key,\n                    \"Type\": \"wif\",\n                    \"DevKey\": node_interface_key,\n                    \"DevName\": node_device_name,\n                    \"IntName\": node_device_name,\n                    \"Name\": node_device_name\n                }\n                self._interface_map.append(map_entry)\n\n            self.build_links_map_node(d.get(\"Children\", []), node_device_key, node_device_name, node_interface_key, node_interface_name)\n\n\n    ### Find device link name from device key\n    def find_device_link(self, device_key):\n        # Find the interface key for the device\n        device = next((d for d in self._device_map if d[\"Key\"] == device_key), None)\n        if not device:\n            return None\n        interface_key = device[\"InterfaceKey\"]\n\n        # Find and return the interface map entry\n        return next((i for i in self._interface_map if i[\"Key\"] == interface_key), None)\n\n\n    ### Update device link interface key\n    def update_device_link_interface(self, device_key, interface_key):\n        device = next((d for d in self._device_map if d[\"Key\"] == device_key), None)\n        if device:\n            device[\"InterfaceKey\"] = interface_key\n\n\n    ### Update interface map when a device name changes, and refresh the UI\n    def update_interface_map(self, device_key, device_name):\n        # Loop on interface map and update each matching entries\n        for i in self._interface_map:\n            if i[\"DevKey\"] == device_key:\n                i[\"DevName\"] = device_name\n                link_name = f\"{device_name} {i['IntName']}\"\n                i[\"Name\"] = link_name\n\n                # Then update each device connected to that interface\n                for d in self._device_map:\n                    if d[\"InterfaceKey\"] == i[\"Key\"]:\n                        line = self.find_device_line(self._device_list, d[\"Key\"])\n                        if line >= 0:\n                            self._device_list.setItem(line, DevCol.Link, QtWidgets.QTableWidgetItem(link_name))\n\n\n    ### Indicate visually the reception of an event for a device\n    def update_event_indicator(self, device_key):\n        # First remove last event indicator\n        list_line = self.find_device_line(self._device_list, self._last_event_device_key)\n        if list_line >= 0:\n            self._device_list.setItem(list_line, DevCol.Event, None)\n\n        # Set indicator on new device\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            event_indicator = NumericSortItem()\n            event_indicator.setIcon(QtGui.QIcon(LmIcon.NotifPixmap))\n            event_indicator.setData(QtCore.Qt.ItemDataRole.UserRole, 1)\n            self._device_list.setItem(list_line, DevCol.Event, event_indicator)\n\n        self._last_event_device_key = device_key\n\n\n    ### Process a new statistics event\n    def process_statistics_event(self, device_key, event):\n        # Get event data\n        down_bytes = event.get(\"RxBytes\", 0)\n        up_bytes = event.get(\"TxBytes\", 0)\n        down_errors = event.get(\"RxErrors\", 0)\n        up_errors = event.get(\"TxErrors\", 0)\n        down_rate_bytes = 0\n        up_rate_bytes = 0\n        down_delta_errors = event.get(\"DeltaRxErrors\", 0)\n        up_delta_errors = event.get(\"DeltaTxErrors\", 0)\n        timestamp = LmTools.livebox_timestamp(event.get(\"Timestamp\", \"\"))\n\n        # Try to find a previously received statistic record\n        prev_stats = self._stats_map.get(device_key)\n        if prev_stats is not None:\n            prev_down_bytes = prev_stats[\"Rx\"]\n            prev_up_bytes = prev_stats[\"Tx\"]\n            prev_timestamp = prev_stats[\"Time\"]\n            elapsed = int((timestamp - prev_timestamp).total_seconds())\n            if elapsed > 0:\n                down_rate_bytes = int((down_bytes - prev_down_bytes) / elapsed)\n                up_rate_bytes = int((up_bytes - prev_up_bytes) / elapsed)\n\n            # Update potential running graph\n            self.graph_update_device_event(device_key, int(timestamp.timestamp()),\n                                           down_bytes - prev_down_bytes,\n                                           up_bytes - prev_up_bytes)\n\n        # Remember current stats\n        stats = {}\n        stats[\"Rx\"] = down_bytes\n        stats[\"Tx\"] = up_bytes\n        stats[\"Time\"] = timestamp\n        self._stats_map[device_key] = stats\n\n        # Update UI\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            # Prevent device line to change due to sorting\n            self._device_list.setSortingEnabled(False)\n\n            down = NumericSortItem(LmTools.fmt_bytes(down_bytes))\n            down.setData(QtCore.Qt.ItemDataRole.UserRole, down_bytes)\n            down.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            if down_errors:\n                down.setForeground(QtCore.Qt.GlobalColor.red)\n            self._device_list.setItem(list_line, DevCol.Down, down)\n\n            up = NumericSortItem(LmTools.fmt_bytes(up_bytes))\n            up.setData(QtCore.Qt.ItemDataRole.UserRole, up_bytes)\n            up.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            if up_errors:\n                up.setForeground(QtCore.Qt.GlobalColor.red)\n            self._device_list.setItem(list_line, DevCol.Up, up)\n\n            if down_rate_bytes:\n                down_rate = NumericSortItem(LmTools.fmt_bytes(down_rate_bytes) + \"/s\")\n                down_rate.setData(QtCore.Qt.ItemDataRole.UserRole, down_rate_bytes)\n                if down_delta_errors:\n                    down_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                down_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                down_rate = QtWidgets.QTableWidgetItem(\"\")\n            self._device_list.setItem(list_line, DevCol.DownRate, down_rate)\n\n            if up_rate_bytes:\n                up_rate = NumericSortItem(LmTools.fmt_bytes(up_rate_bytes) + \"/s\")\n                up_rate.setData(QtCore.Qt.ItemDataRole.UserRole, up_rate_bytes)\n                if up_delta_errors:\n                    up_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                up_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                up_rate = QtWidgets.QTableWidgetItem(\"\")\n            self._device_list.setItem(list_line, DevCol.UpRate, up_rate)\n\n            # Restore sorting\n            self._device_list.setSortingEnabled(True)\n\n\n    ### Process a new changed event\n    def process_changed_event(self, device_key, handler, event):\n        # Refresh if current selected one in device info\n        self.refresh_device_if_selected(device_key)\n\n        # Check if device is in the UI list\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            # Prevent device line to change due to sorting\n            self._device_list.setSortingEnabled(False)\n\n            # Check if active status changed\n            active_status = event.get(\"Active\")\n            if active_status is not None:\n                self._device_ip_name_map_dirty = True\n                is_active = active_status != \"0\"\n                curr_active = self._device_list.item(list_line, DevCol.Active)\n                if curr_active is not None:\n                    is_currently_active = curr_active.data(QtCore.Qt.ItemDataRole.UserRole) == 1\n                else:\n                    is_currently_active = False\n                if is_active != is_currently_active:\n                    if is_active:\n                        curr_link = self._device_list.item(list_line, DevCol.Link)\n                        curr_link_name = curr_link.text() if curr_link is not None else \"\"\n                        self.notify_device_active_event(device_key, curr_link_name)\n                    else:\n                        self.notify_device_inactive_event(device_key)\n                active_icon = self.format_active_table_widget(is_active)\n                self._device_list.setItem(list_line, DevCol.Active, active_icon)\n\n                # Show/hide the line according to active status\n                if LmConf.OnlyActiveDevices:\n                    self._device_list.setRowHidden(list_line, not is_active)\n\n                self.repeater_active_event(device_key, is_active)\n                self.tvdecoder_active_event(device_key, is_active)\n\n            # Check if IP reachable status changed\n            ipv4_reacheable = event.get(\"Status\")\n            if (ipv4_reacheable is not None) and (\"IPv4Address\" in handler):\n                curr_ip = self._device_list.item(list_line, DevCol.IP)\n                reserved = curr_ip.font().bold()\n                ip = self.format_ipv4_table_widget(curr_ip.text(), ipv4_reacheable, reserved)\n                self._device_list.setItem(list_line, DevCol.IP, ip)\n\n            # Check if IPv4 changed\n            ipv4 = event.get(\"IPAddress\")\n            if (ipv4 is not None) and (LmTools.is_ipv4(ipv4)):\n                self._device_ip_name_map_dirty = True\n                ip = self._device_list.item(list_line, DevCol.IP)\n                ip.setText(ipv4)\n                ip.setData(QtCore.Qt.ItemDataRole.UserRole, int(IPv4Address(ipv4)))\n                self.repeater_ip_address_event(device_key, ipv4)\n                self.tvdecoder_ip_address_event(device_key, ipv4)\n\n            # Check if name changed\n            name = event.get(\"Name\")\n            if name is not None:\n                self._device_ip_name_map_dirty = True\n                self._device_list.setItem(list_line, DevCol.LBName, QtWidgets.QTableWidgetItem(name))\n                self.update_interface_map(device_key, name)\n\n            # Check if MAC address assigned\n            mac_addr = event.get(\"PhysAddress\")\n            if mac_addr is not None:\n                self._device_ip_name_map_dirty = True\n\n                self.format_name_widget(self._device_list, list_line, mac_addr, DevCol.Name)\n                self.format_mac_widget(self._device_list, list_line, mac_addr, DevCol.MAC)\n\n                line = self.find_device_line(self._info_dlist, device_key)\n                if line >= 0:\n                    self.format_name_widget(self._info_dlist, line, mac_addr, DSelCol.Name)\n                    self.format_mac_widget(self._info_dlist, line, mac_addr, DSelCol.MAC)\n\n                line = self.find_device_line(self._event_dlist, device_key)\n                if line >= 0:\n                    self.format_name_widget(self._event_dlist, line, mac_addr, DSelCol.Name)\n                    self.format_mac_widget(self._event_dlist, line, mac_addr, DSelCol.MAC)\n\n            # Restore sorting\n            self._device_list.setSortingEnabled(True)\n\n\n    ### Process a new device_name_changed event\n    def process_device_name_changed_event(self, device_key, event):\n        self._device_ip_name_map_dirty = True\n\n        # Check if device is in the UI list\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            name = event.get(\"NewName\")\n            if name is not None:\n                self._device_list.setItem(list_line, DevCol.LBName, QtWidgets.QTableWidgetItem(name))\n                self.update_interface_map(device_key, name)\n\n        # Refresh if the device is the selected one in the device info tab\n        self.refresh_device_if_selected(device_key)\n\n\n    ### Process a new device_updated, eth_device_updated or wifi_device_updated event\n    def process_device_updated_event(self, device_key, event):\n        # Check if device is in the UI list\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            self._device_ip_name_map_dirty = True\n\n            # Prevent device line to change due to sorting\n            self._device_list.setSortingEnabled(False)\n\n            # Update the link interface\n            link = event.get(\"ULinks\")\n            if link:\n                self.update_device_link_interface(device_key, link[0])\n\n            # Update the device line\n            self.update_device_line(list_line, event, True)\n\n            # Update potential repeater infos\n            self.repeater_device_updated_event(device_key, event)\n\n            # Update potential TV Decoder infos\n            self.tvdecoder_device_updated_event(device_key, event)\n\n            # Restore sorting\n            self._device_list.setSortingEnabled(True)\n\n        # Refresh if the device is the selected one in the device info tab\n        self.refresh_device_if_selected(device_key)\n\n\n    ### Process a new ip_address_added event\n    def process_ip_address_added_event(self, device_key, event):\n        self._device_ip_name_map_dirty = True\n\n        # Check if device is in the UI list\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            if event.get(\"Family\") == \"ipv4\":\n                # Get IP known by the program\n                known_ip_item = self._device_list.item(list_line, DevCol.IP)\n                known_ip = known_ip_item.text() if known_ip_item is not None else \"\"\n\n                # Get current device IP\n                try:\n                    curr_ip = self._api._device.get_ip_addr(device_key)\n                except Exception as e:\n                    LmTools.error(str(e))\n                    curr_ip = known_ip\n\n                # Proceed only if there is a change\n                if known_ip != curr_ip:\n                    # If current IP is the one of the event, take it, overwise wait for next device update event\n                    ipv4 = event.get(\"Address\", \"\")\n                    if LmTools.is_ipv4(ipv4) and (curr_ip == ipv4):\n                        ipv4_reacheable = event.get(\"Status\", \"\")\n                        ipv4_reserved = event.get(\"Reserved\", False)\n                        ip = self.format_ipv4_table_widget(ipv4, ipv4_reacheable, ipv4_reserved)\n                        self._device_list.setItem(list_line, DevCol.IP, ip)\n                        self.repeater_ip_address_event(device_key, ipv4)\n                        self.tvdecoder_ip_address_event(device_key, ipv4)\n\n\n    ### Process a new device_added, eth_device_added or wifi_device_added event\n    def process_device_added_event(self, device_key, event):\n        # Check if device is not already in the UI list\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            return\n\n        tags = event.get(\"Tags\", \"\").split()\n        if (\"physical\" in tags) and (not \"self\" in tags) and (not \"voice\" in tags) and self.displayable_device(event):\n            self._device_ip_name_map_dirty = True\n\n            # Notify\n            self.notify_device_added_event(device_key)\n\n            # Prevent device lines to change due to sorting\n            self._device_list.setSortingEnabled(False)\n            self._info_dlist.setSortingEnabled(False)\n            self._event_dlist.setSortingEnabled(False)\n\n            # Update device map\n            map_entry = {}\n            map_entry[\"Key\"] = device_key\n            map_entry[\"InterfaceKey\"] = None\n            self._device_map.append(map_entry)\n\n            # Update UI\n            self.add_device_line(0, event)\n            self.update_device_line(0, event, True)\n\n            # Add as repeater if it is one\n            self.add_potential_repeater(event)\n\n            # Add as TV Decoder if it is one\n            self.add_potential_tvdecoder(event)\n\n            # Restore sorting\n            self._device_list.setSortingEnabled(True)\n            self._info_dlist.setSortingEnabled(True)\n            self._event_dlist.setSortingEnabled(True)\n\n\n    ### Process a new device_deleted, eth_device_deleted or wifi_device_deleted event\n    def process_device_deleted_event(self, device_key):\n        self._device_ip_name_map_dirty = True\n\n        # Notify\n        self.notify_device_deleted_event(device_key)\n\n        # Remove from all UI lists\n        list_line = self.find_device_line(self._device_list, device_key)\n        if list_line >= 0:\n            self._device_list.removeRow(list_line)\n        list_line = self.find_device_line(self._info_dlist, device_key)\n        if list_line >= 0:\n            self._info_dlist.removeRow(list_line)\n        list_line = self.find_device_line(self._event_dlist, device_key)\n        if list_line >= 0:\n            self._event_dlist.removeRow(list_line)\n\n        # Remove repeater if it is one\n        self.remove_potential_repeater(device_key)\n\n        # Remove TV Decoder if it is one\n        self.remove_potential_tvdecoder(device_key)\n\n        # Cleanup device map\n        for d in self._device_map:\n            if d[\"Key\"] == device_key:\n                self._device_map.remove(d)\n\n        # Cleanup event buffer\n        try:\n            del self._event_buffer[device_key]\n        except KeyError:\n            pass\n\n\n    ### Process a new Livebox Wifi stats\n    def process_livebox_wifi_stats(self, stats):\n        # Get stats data\n        key = stats[\"Key\"]\n        device_key = stats[\"DeviceKey\"]\n        timestamp = stats[\"Timestamp\"]\n        down_bytes = stats[\"RxBytes\"]\n        up_bytes = stats[\"TxBytes\"]\n        down_errors = stats[\"RxErrors\"]\n        up_errors = stats[\"TxErrors\"]\n        down_rate_bytes = 0\n        up_rate_bytes = 0\n        down_delta_errors = 0\n        up_delta_errors = 0\n\n        # Try to find a previously received statistic record\n        prev_stats = self._livebox_wifi_stats_map.get(key)\n        if prev_stats is not None:\n            prev_timestamp = prev_stats[\"Timestamp\"]\n            prev_down_bytes = prev_stats[\"RxBytes\"]\n            prev_up_bytes = prev_stats[\"TxBytes\"]\n            elapsed = int((timestamp - prev_timestamp).total_seconds())\n            if elapsed > 0:\n                if down_bytes > prev_down_bytes:\n                    down_rate_bytes = int((down_bytes - prev_down_bytes) / elapsed)\n                if up_bytes > prev_up_bytes:\n                    up_rate_bytes = int((up_bytes - prev_up_bytes) / elapsed)\n            down_delta_errors = down_errors - prev_stats[\"RxErrors\"]\n            up_delta_errors = up_errors - prev_stats[\"TxErrors\"]\n\n        # Remember current stats\n        self._livebox_wifi_stats_map[key] = stats\n\n        # Update UI\n        list_line = self.find_device_line(self._device_list, device_key)\n        if (list_line >= 0) and (prev_stats is not None):\n            # Prevent device line to change due to sorting\n            self._device_list.setSortingEnabled(False)\n\n            if down_rate_bytes:\n                down_rate = NumericSortItem(LmTools.fmt_bytes(down_rate_bytes) + \"/s\")\n                down_rate.setData(QtCore.Qt.ItemDataRole.UserRole, down_rate_bytes)\n                if down_delta_errors:\n                    down_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                else:\n                    down_rate.setForeground(QtCore.Qt.GlobalColor.blue)\n                down_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                down_rate = QtWidgets.QTableWidgetItem(\"\")\n            self._device_list.setItem(list_line, DevCol.DownRate, down_rate)\n\n            if up_rate_bytes:\n                up_rate = NumericSortItem(LmTools.fmt_bytes(up_rate_bytes) + \"/s\")\n                up_rate.setData(QtCore.Qt.ItemDataRole.UserRole, up_rate_bytes)\n                if up_delta_errors:\n                    up_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                else:\n                    up_rate.setForeground(QtCore.Qt.GlobalColor.blue)\n                up_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                up_rate = QtWidgets.QTableWidgetItem(\"\")\n            self._device_list.setItem(list_line, DevCol.UpRate, up_rate)\n\n            # Restore sorting\n            self._device_list.setSortingEnabled(True)\n\n\n\n# ############# Livebox Wifi device stats collector thread #############\n# WARNING: for an unknown reason, moving this class to a submodule causes the application to hang\nclass LiveboxWifiStatsThread(LmThread):\n    _wifi_stats_received = QtCore.pyqtSignal(dict)\n    _resume = QtCore.pyqtSignal()\n\n    def __init__(self, api):\n        super().__init__(api, LmConf.StatsFrequency)\n\n\n    def connect_processor(self, processor):\n        self._wifi_stats_received.connect(processor)\n\n\n    def task(self):\n        for s in self._api._intf.get_list():\n            if s[\"Type\"] != \"wif\":\n                continue\n            try:\n                d = self._api._stats.get_wifi_intf(s[\"Key\"])\n            except Exception as e:\n                LmTools.error(str(e))\n            else:\n                if isinstance(d, list):\n                    for stat in d:\n                        mac_addr = stat.get(\"MACAddress\", \"\")\n                        event = {\n                            \"DeviceKey\": mac_addr,\n                            \"Key\": f\"{mac_addr}_{s['Key']}\",\n                            \"Timestamp\": datetime.datetime.now(),\n                            \"RxBytes\": stat.get(\"TxBytes\", 0),      # Must be swapped\n                            \"TxBytes\": stat.get(\"RxBytes\", 0),      # Must be swapped\n                            \"RxErrors\": stat.get(\"TxErrors\", 0),    # Must be swapped\n                            \"TxErrors\": stat.get(\"RxErrors\", 0)     # Must be swapped\n                        }\n                        self._wifi_stats_received.emit(event)\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmDhcpTab.py",
    "content": "### Livebox Monitor DHCP tab module ###\n\nfrom enum import IntEnum\nfrom ipaddress import IPv4Network\nfrom ipaddress import IPv4Address\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, NumericSortItem\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.tabs.LmInfoTab import InfoCol\nfrom LiveboxMonitor.dlg.LmDhcpBinding import AddDhcpBindingDialog\nfrom LiveboxMonitor.dlg.LmDhcpSetup import DhcpSetupDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_dhcp_label as lx, get_dhcp_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"dhcpTab\"\n\n# List columns\nclass DhcpCol(IntEnum):\n    Key = 0     # Must be the same as DevCol.Key\n    Name = 1\n    Domain = 2\n    MAC = 3\n    IP = 4\n\n\n# ################################ LmDhcp class ################################\nclass LmDhcp:\n\n    ### Create DHCP tab\n    def create_dhcp_tab(self):\n        self._dhcp_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # DHCP binding list\n        self._dhcp_dlist = LmTableWidget(objectName=\"dhcpDList\")\n        self._dhcp_dlist.set_columns({DhcpCol.Key: [\"Key\", 0, None],\n                                      DhcpCol.Name: [lx(\"Name\"), 200, \"dlist_Name\"],\n                                      DhcpCol.Domain: [lx(\"Domain\"), 60, \"dlist_Domain\"],\n                                      DhcpCol.MAC: [lx(\"MAC\"), 120, \"dlist_MAC\"],\n                                      DhcpCol.IP: [lx(\"IP\"), 105, \"dlist_IP\"]})\n        self._dhcp_dlist.set_header_resize([DhcpCol.Name])\n        self._dhcp_dlist.set_standard_setup(self)\n        self._dhcp_dlist.setMinimumWidth(515)\n\n        # DHCP binding button bar\n        binding_buttons_box = QtWidgets.QHBoxLayout()\n        binding_buttons_box.setSpacing(30)\n        refresh_binding_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshBinding\")\n        refresh_binding_button.clicked.connect(self.refresh_dhcp_binding_button_click)\n        binding_buttons_box.addWidget(refresh_binding_button)\n        add_binding_button = QtWidgets.QPushButton(lx(\"Add...\"), objectName=\"addBinding\")\n        add_binding_button.clicked.connect(self.add_dhcp_binding_button_click)\n        binding_buttons_box.addWidget(add_binding_button)\n        del_binding_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delBinding\")\n        del_binding_button.clicked.connect(self.del_dhcp_binding_button_click)\n        binding_buttons_box.addWidget(del_binding_button)\n\n        # DHCP binding layout\n        binding_box = QtWidgets.QVBoxLayout()\n        binding_box.setSpacing(10)\n        binding_box.addWidget(self._dhcp_dlist, 1)\n        binding_box.addLayout(binding_buttons_box, 0)\n\n        # Attribute list\n        self._dhcp_alist = LmTableWidget(objectName=\"dhcpAList\")\n        self._dhcp_alist.set_columns({InfoCol.Attribute: [lx(\"Attribute\"), 200, \"alist_Attribute\"],\n                                      InfoCol.Value: [lx(\"Value\"), 500, \"alist_Value\"]})\n        self._dhcp_alist.set_header_resize([InfoCol.Value])\n        self._dhcp_alist.set_standard_setup(self, allow_sel=False, allow_sort=False)\n\n        # Attribute button bar\n        attribute_buttons_box = QtWidgets.QHBoxLayout()\n        attribute_buttons_box.setSpacing(30)\n        refresh_dhcp_attribute_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshDhcpAttribute\")\n        refresh_dhcp_attribute_button.clicked.connect(self.refresh_dhcp_attribute_button_click)\n        attribute_buttons_box.addWidget(refresh_dhcp_attribute_button)\n        dhcp_setup_button = QtWidgets.QPushButton(lx(\"DHCP Setup...\"), objectName=\"dhcpSetup\")\n        dhcp_setup_button.clicked.connect(self.dhcp_setup_button_click)\n        attribute_buttons_box.addWidget(dhcp_setup_button)\n\n        # DHCP attribute layout\n        attribute_box = QtWidgets.QVBoxLayout()\n        attribute_box.setSpacing(10)\n        attribute_box.addWidget(self._dhcp_alist, 1)\n        attribute_box.addLayout(attribute_buttons_box, 0)\n\n        # Layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.VLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setSpacing(10)\n        hbox.addLayout(binding_box, 0)\n        hbox.addWidget(separator)\n        hbox.addLayout(attribute_box, 1)\n        self._dhcp_tab.setLayout(hbox)\n\n        LmConfig.set_tooltips(self._dhcp_tab, \"dhcp\")\n        self._tab_widget.addTab(self._dhcp_tab, lx(\"DHCP\"))\n\n        # Set default values\n        self._home_ip_server = \"192.168.1.1\"\n        self._home_ip_start = \"192.168.1.2\"\n        self._home_ip_mask = \"255.255.255.0\"\n        self._guest_ip_server = \"192.168.144.1\"\n        self._guest_ip_start = \"192.168.144.2\"\n        self._guest_ip_mask = \"255.255.255.0\"\n\n        # Init context\n        self.dhcp_tab_init()\n\n\n    ### Init DHCP tab context\n    def dhcp_tab_init(self):\n        self._dhcp_data_loaded = False\n\n\n    ### Click on DHCP tab\n    def dhcp_tab_click(self):\n        if not self._dhcp_data_loaded:\n            self._dhcp_data_loaded = True    # Must be first to avoid reentrency during tab drag&drop\n            self.load_dhcp_info()            # Load first as home/guest server, start & mask must be known before DHCP bindings\n            self.load_dhcp_bindings()\n\n\n    ### Click on refresh DHCP binding button\n    def refresh_dhcp_binding_button_click(self):\n        self._dhcp_dlist.clearContents()\n        self._dhcp_dlist.setRowCount(0)\n        self.load_dhcp_bindings()\n\n\n    ### Click on add DHCP binding button\n    def add_dhcp_binding_button_click(self):\n        # Collect already used IPs from DHCP bindings (as a set for uniqueness)\n        used_ips = {\n            self._dhcp_dlist.item(i, DhcpCol.IP).text()\n            for i in range(self._dhcp_dlist.rowCount())\n        }\n\n        # Add IPs from active devices\n        device_list = self.get_device_list()\n        used_ips.update(d[\"IP\"] for d in device_list if d.get(\"Active\"))\n\n        # Find appropriate IP suggestions\n        home_ip_suggest = self.find_first_available_ip(\"Home\", used_ips)\n        guest_ip_suggest = self.find_first_available_ip(\"Guest\", used_ips)\n\n        # Show dialog for adding DHCP binding\n        dialog = AddDhcpBindingDialog(home_ip_suggest, guest_ip_suggest, self)\n        if dialog.exec():\n            mac_addr = dialog.get_mac_address()\n            ip_addr = dialog.get_ip_address()\n            guest = dialog.get_domain() == \"Guest\"\n            try:\n                self._api._dhcp.add_lease(mac_addr, ip_addr, guest)\n            except Exception as e:\n                self.display_error(str(e))\n            self.refresh_dhcp_binding_button_click()\n\n\n    ### Click on delete DHCP binding button\n    def del_dhcp_binding_button_click(self):\n        current_selection = self._dhcp_dlist.currentRow()\n        if current_selection >= 0:\n            mac_addr = self._dhcp_dlist.item(current_selection, DhcpCol.MAC).text()\n            guest = self._dhcp_dlist.item(current_selection, DhcpCol.Domain).text() == \"Guest\"\n            try:\n                self._api._dhcp.delete_lease(mac_addr, guest)\n            except Exception as e:\n                self.display_error(str(e))\n            self.refresh_dhcp_binding_button_click()\n        else:\n            self.display_error(mx(\"Please select a DHCP binding.\", \"dhcpSelect\"))\n\n\n    ### Click on refresh DHCP attributes button\n    def refresh_dhcp_attribute_button_click(self):\n        self._dhcp_alist.clearContents()\n        self._dhcp_alist.setRowCount(0)\n        self.load_dhcp_info()\n\n\n    ### Click on DHCP setup button\n    def dhcp_setup_button_click(self):\n        # Retrieve current values\n        try:\n            d = self._api._dhcp.get_setup()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n\n        # Load current values\n        dhcp_enabled = d.get(\"DHCPEnable\")\n        dhcp_address = d.get(\"Address\")\n        dhcp_mask = d.get(\"Netmask\")\n        dhcp_min_address = d.get(\"DHCPMinAddress\")\n        dhcp_max_address = d.get(\"DHCPMaxAddress\")\n        if ((dhcp_enabled is None) or\n            (dhcp_address is None) or\n            (dhcp_mask is None) or\n            (dhcp_min_address is None) or\n            (dhcp_max_address is None)):\n            self.display_error(mx(\"Cannot retrieve DHCP information.\", \"dhcpLoad\"))\n            return\n\n        # Ask user\n        dialog = DhcpSetupDialog(dhcp_enabled, dhcp_address, dhcp_mask, dhcp_min_address, dhcp_max_address, self)\n        if dialog.exec():\n            new_dhcp_enabled = dialog.get_enabled()\n            new_dhcp_address = dialog.get_address()\n            new_dhcp_mask = dialog.get_mask()\n            new_dhcp_min_address = dialog.get_min_address()\n            new_dhcp_max_address = dialog.get_max_address()\n\n            change = False\n\n            # Warn in case of DHCP disabling\n            if (not new_dhcp_enabled) and dhcp_enabled:\n                change = True\n                if not self.ask_question(mx(\"Deactivating the DHCP server is likely to disconnect your home devices. Continue?\",\n                                            \"deactiv\")):\n                    return\n\n            # Warn in case of address changes\n            if ((new_dhcp_address != dhcp_address) or\n                (new_dhcp_mask != dhcp_mask) or\n                (new_dhcp_min_address != dhcp_min_address) or\n                (new_dhcp_max_address != dhcp_max_address)):\n                change = True\n                if not self.ask_question(mx(\"Modifying the IP address of your Livebox and the other settings of the DHCP server, \"\\\n                                            \"may interrupt all your services. You will need to redefine the static IP addresses \"\\\n                                            \"according to the new addressing plan. Continue?\", \"addrChange\")):\n                    return\n\n            if change:\n                # Determine network prefix length\n                i = new_dhcp_address.split(\".\")\n                try:\n                    network = IPv4Network(f\"{i[0]}.{i[1]}.{i[2]}.0/{new_dhcp_mask}\")\n                except Exception as e:\n                    LmTools.error(str(e))\n                    self.display_error(mx(\"Wrong values. Error: {}\", \"dhcpValErr\").format(e))\n                    return\n                new_dhcp_prefix_len = network.prefixlen\n\n                p = {\"Address\": new_dhcp_address,\n                     \"Netmask\": new_dhcp_mask,\n                     \"DHCPEnable\": new_dhcp_enabled,\n                     \"DHCPMinAddress\": new_dhcp_min_address,\n                     \"DHCPMaxAddress\": new_dhcp_max_address,\n                     \"PrefixLength\": new_dhcp_prefix_len}\n                try:\n                    self._api._dhcp.set_setup(p)\n                except Exception as e:\n                    self.display_error(str(e))\n\n\n    ### Load DHCP bindings\n    def load_dhcp_bindings(self):\n        self._task.start(lx(\"Getting DHCP bindings...\"))\n        try:\n            self._dhcp_dlist.setSortingEnabled(False)\n\n            # Home domain\n            try:\n                d = self._api._dhcp.get_leases()\n            except Exception as e:\n                LmTools.error(str(e))\n                d = None\n            self.load_dhcp_bindings_in_list(d, \"Home\")\n\n            # Guest domain\n            try:\n                d = self._api._dhcp.get_leases(True)\n            except Exception as e:\n                LmTools.error(str(e))\n                d = None\n            self.load_dhcp_bindings_in_list(d, \"Guest\")\n\n            self._dhcp_dlist.sortItems(DhcpCol.IP, QtCore.Qt.SortOrder.AscendingOrder)\n            self._dhcp_dlist.setSortingEnabled(True)\n        finally:\n            self._task.end()\n\n\n    ### Load DHCP bindings in the list\n    def load_dhcp_bindings_in_list(self, bindings, domain):\n        if bindings is None:\n            self.display_error(mx(\"Cannot load {} DHCP bindings.\", \"bindLoad\").format(domain))\n            return\n\n        i = self._dhcp_dlist.rowCount()\n        for b in bindings:\n            key = b.get(\"MACAddress\", \"\").upper()\n            ip = b.get(\"IPAddress\", \"\")\n\n            self.add_device_line_key(self._dhcp_dlist, i, key)\n            self.format_name_widget(self._dhcp_dlist, i, key, DhcpCol.Name)\n            self._dhcp_dlist.setItem(i, DhcpCol.Domain, QtWidgets.QTableWidgetItem(domain))\n            self.format_mac_widget(self._dhcp_dlist, i, key, DhcpCol.MAC)\n\n            ip_item = NumericSortItem(ip)\n            try:\n                ip_item.setData(QtCore.Qt.ItemDataRole.UserRole, int(IPv4Address(ip)))\n            except Exception:\n                ip_item.setData(QtCore.Qt.ItemDataRole.UserRole, 0)\n            self._dhcp_dlist.setItem(i, DhcpCol.IP, ip_item)\n\n            i += 1\n\n\n    ### Find first available IP in the IP range\n    def find_first_available_ip(self, domain, used_ips):\n        # Get network\n        network = self.get_domain_network(domain)\n        if network is None:\n            return \"\"\n\n        # Setup minimum address\n        min_ip = IPv4Address(self._home_ip_start) if domain == \"Home\" else IPv4Address(self._guest_ip_start)\n\n        # Return first available IP\n        return str(next((ip for ip in network.hosts() if (str(ip) not in used_ips) and (ip >= min_ip)), \"\"))\n\n\n    ### Find if an IP is in domain network\n    def is_ip_in_network(self, ip, domain):\n        network = self.get_domain_network(domain)\n        if network is None:\n            return False\n        try:    # Due to a LB firmware issue the IP can be empty even if the device is active\n            return IPv4Address(ip) in network\n        except Exception:\n            return False\n\n\n    ### Get domain network\n    def get_domain_network(self, domain):\n        # Select parameters\n        if domain == \"Home\":\n            server = self._home_ip_server\n            mask = self._home_ip_mask\n        else:\n            server = self._guest_ip_server\n            mask = self._guest_ip_mask\n\n        # Set network\n        if LmTools.is_ipv4(server):\n            i = server.split(\".\")\n            try:\n                return IPv4Network(f\"{i[0]}.{i[1]}.{i[2]}.0/{mask}\")\n            except Exception:\n                return None\n        return None\n\n\n    ### Load DHCP infos list\n    def load_dhcp_info(self):\n        self._task.start(lx(\"Getting DHCP information...\"))\n        try:\n            i = 0\n            i = self.add_title_line(self._dhcp_alist, i, lx(\"DHCP Home Information\"))\n\n            # Home domain + DHCPv6 infos\n            g = None\n            try:\n                d = self._api._dhcp.get_info()\n            except Exception as e:\n                LmTools.error(str(e))\n                d = None\n            if d:\n                g = d.get(\"guest\")\n                d = d.get(\"default\")\n            if d:\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Enabled\"), LmTools.fmt_bool(d.get(\"Enable\")))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Status\"), d.get(\"Status\"))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Gateway\"), d.get(\"Server\"))\n                self._home_ip_server = d.get(\"Server\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"Subnet Mask\"), d.get(\"SubnetMask\"))\n                self._home_ip_mask = d.get(\"SubnetMask\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Start\"), d.get(\"MinAddress\"))\n                self._home_ip_start = d.get(\"MinAddress\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 End\"), d.get(\"MaxAddress\"))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Lease Time\"), LmTools.fmt_time(d.get(\"LeaseTime\")))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DNS Servers\"), d.get(\"DNSServers\"))\n            else:\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4\"), \"DHCPv4.Server:getDHCPServerPool query error\", LmQtTools.ValQual.Error)\n\n            try:\n                d = self._api._dhcp.get_v6_server_status()\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv6\"), \"DHCPv6.Server:getDHCPv6ServerStatus query error\", LmQtTools.ValQual.Error)\n            else:\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv6 Status\"), d)\n\n            try:\n                d = self._api._dhcp.get_v6_prefix()\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv6\"), \"DHCPv6.Server:getPDPrefixInformation query error\", LmQtTools.ValQual.Error)\n            else:\n                if d:\n                    prefix = d[0].get(\"Prefix\")\n                    if prefix is not None:\n                        prefix_len = d[0].get(\"PrefixLen\")\n                        if prefix_len is not None:\n                            prefix += \"/\" + str(prefix_len)\n                        i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv6 Prefix\"), prefix)\n\n            # Guest domain\n            if g is not None:\n                i = self.add_title_line(self._dhcp_alist, i, lx(\"DHCP Guest Information\"))\n\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Enabled\"), LmTools.fmt_bool(g.get(\"Enable\")))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Status\"), g.get(\"Status\"))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Gateway\"), g.get(\"Server\"))\n                self._guest_ip_server = g.get(\"Server\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"Subnet Mask\"), g.get(\"SubnetMask\"))\n                self._guest_ip_mask = g.get(\"SubnetMask\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Start\"), g.get(\"MinAddress\"))\n                self._guest_ip_start = g.get(\"MinAddress\")\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 End\"), g.get(\"MaxAddress\"))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4 Lease Time\"), LmTools.fmt_time(g.get(\"LeaseTime\")))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DNS Servers\"), g.get(\"DNSServers\"))\n\n\n            # DHCPv4\n            i = self.add_title_line(self._dhcp_alist, i, lx(\"DHCPv4\"))\n\n            try:\n                d = self._api._dhcp.get_mibs(True, True)\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._dhcp_alist, i, lx(\"DHCPv4\"), \"NeMo.Intf.data:getMIBs query error\", LmQtTools.ValQual.Error)\n            else:\n                p = d.get(\"dhcp\")\n\n                if p is not None:\n                    p = p.get(\"dhcp_data\")\n                if p is not None:\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Status\"), p.get(\"DHCPStatus\"))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Lease Time\"), LmTools.fmt_time(p.get(\"LeaseTime\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Lease Time Remaining\"), LmTools.fmt_time(p.get(\"LeaseTimeRemaining\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Check Authentication\"), LmTools.fmt_bool(p.get(\"CheckAuthentication\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Authentication Information\"), p.get(\"AuthenticationInformation\"))\n                    i = self.load_dhcp_info_options(lx(\"DHCPv4 Sent Options\"), i, p.get(\"SentOption\"))\n                    i = self.load_dhcp_info_options(lx(\"DHCPv4 Received Options\"), i, p.get(\"ReqOption\"))\n\n                # DHCPv6\n                i = self.add_title_line(self._dhcp_alist, i, lx(\"DHCPv6\"))\n\n                p = d.get(\"dhcpv6\")\n\n                if p is not None:\n                    p = p.get(\"dhcpv6_data\")\n                if p is not None:\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Status\"), p.get(\"DHCPStatus\"))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"DUID\"), p.get(\"DUID\"))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Request Addresses\"), LmTools.fmt_bool(p.get(\"RequestAddresses\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Request Prefixes\"), LmTools.fmt_bool(p.get(\"RequestPrefixes\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Requested Options\"), p.get(\"RequestedOptions\"))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Check Authentication\"), LmTools.fmt_bool(p.get(\"CheckAuthentication\")))\n                    i = self.add_info_line(self._dhcp_alist, i, lx(\"Authentication Information\"), p.get(\"AuthenticationInfo\"))\n                    i = self.load_dhcp_info_options(lx(\"DHCPv6 Sent Options\"), i, p.get(\"SentOption\"))\n                    i = self.load_dhcp_info_options(lx(\"DHCPv6 Received Options\"), i, p.get(\"ReceivedOption\"))\n\n        finally:\n            self._task.end()\n\n\n    ### Update DHCP infos list\n    def load_dhcp_info_options(self, title, index, options):\n        if options is not None:\n            index = self.add_title_line(self._dhcp_alist, index, title)\n            for k in options:\n                o = options[k]\n                index = self.add_info_line(self._dhcp_alist, index, str(o.get(\"Tag\", \"?\")), o.get(\"Value\"))\n\n        return index\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmEventsTab.py",
    "content": "### Livebox Monitor events tab module ###\n\nimport os\nimport json\nimport datetime\nimport time\nimport csv\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig, LmNotif\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmThread import LmThread\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.tabs.LmDeviceListTab import DSelCol\nfrom LiveboxMonitor.dlg.LmNotificationSetup import NotificationSetupDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_events_label as lx, get_events_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"eventsTab\"\n\n# Static Config\nMAX_EVENT_BUFFER_PER_DEVICE = 100\n\n# List columns\nclass EventCol(IntEnum):\n    Key = 0\n    Time = 1\n    Reason = 2\n    Attribute = 3\n\n\n# ################################ LmEvents class ################################\nclass LmEvents:\n\n    ### Create events tab\n    def create_events_tab(self):\n        self._events_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Device list\n        self._event_dlist = LmTableWidget(objectName=\"eventDList\")\n        self._event_dlist.set_columns({DSelCol.Key: [\"Key\", 0, None],\n                                       DSelCol.Name: [lx(\"Name\"), 200, \"dlist_Name\"],\n                                       DSelCol.MAC: [lx(\"MAC\"), 120, \"dlist_MAC\"]})\n        self._event_dlist.set_header_resize([DSelCol.MAC])\n        self._event_dlist.set_standard_setup(self)\n        self._event_dlist.setMinimumWidth(350)\n        self._event_dlist.itemSelectionChanged.connect(self.event_device_list_click)\n\n        # Event list\n        self._event_list = LmTableWidget(objectName=\"eventList\")\n        self._event_list.set_columns({EventCol.Key: [\"Key\", 0, None],\n                                      EventCol.Time: [lx(\"Time\"), 80, \"elist_Time\"],\n                                      EventCol.Reason: [lx(\"Reason\"), 150, \"elist_Reason\"],\n                                      EventCol.Attribute: [lx(\"Attributes\"), 600, \"elist_Attribute\"]})\n        self._event_list.set_header_resize([EventCol.Attribute])\n        self._event_list.set_standard_setup(self)\n        self._event_list.doubleClicked.connect(self.display_event_button_click)\n\n        # Lists layout\n        list_box = QtWidgets.QHBoxLayout()\n        list_box.setSpacing(10)\n        list_box.addWidget(self._event_dlist, 0)\n        list_box.addWidget(self._event_list, 1)\n\n        # Button bar\n        buttons_box = QtWidgets.QHBoxLayout()\n        buttons_box.setSpacing(30)\n        notifications_button = QtWidgets.QPushButton(lx(\"Notifications...\"), objectName=\"notifications\")\n        notifications_button.clicked.connect(self.notifications_button_click)\n        buttons_box.addWidget(notifications_button)\n        display_event_button = QtWidgets.QPushButton(lx(\"Display Event...\"), objectName=\"displayEvent\")\n        display_event_button.clicked.connect(self.display_event_button_click)\n        buttons_box.addWidget(display_event_button)\n\n        # Layout\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addLayout(list_box, 0)\n        vbox.addLayout(buttons_box, 1)\n        self._events_tab.setLayout(vbox)\n\n        LmConfig.set_tooltips(self._events_tab, \"events\")\n        self._tab_widget.addTab(self._events_tab, lx(\"Events\"))\n\n\n    ### Init the Livebox event collector thread\n    def init_event_loop(self):\n        self._last_event_device_key = \"\"\n        self._stats_map = {}\n        self._event_buffer = {}\n        self._livebox_event_loop = None\n        self._notify_raw_event_log = []\n        self._notification_timer = QtCore.QTimer()\n        self._notification_timer.timeout.connect(self.notify_flush_events)\n\n\n    ### Start the Livebox event collector thread\n    def start_event_loop(self):\n        self._livebox_event_loop = LiveboxEventThread(self._api)\n        self._livebox_event_loop.connect_processor(self.process_livebox_event)\n        self.start_notification_timer()\n\n\n    ### Suspend the Livebox event collector thread\n    def suspend_event_loop(self):\n        if self._livebox_event_loop is not None:\n            self._livebox_event_loop.stop()\n        self.stop_notification_timer()\n\n\n    ### Resume the Livebox event collector thread\n    def resumeEventLoop(self):\n        if self._livebox_event_loop is None:\n            self.start_event_loop()\n        else:\n            self._livebox_event_loop._resume.emit()\n        self.start_notification_timer()\n\n\n    ### Stop the Livebox event collector thread\n    def stop_event_loop(self):\n        if self._livebox_event_loop is not None:\n            self._livebox_event_loop.quit()\n            self._livebox_event_loop = None\n        self.stop_notification_timer()\n\n\n    ### Start the regular notification collector tasks\n    def start_notification_timer(self):\n        if LmConf.NotificationRules is not None:\n            self._notification_timer.start(LmConf.NotificationFlushFrequency * 1000)\n\n\n    ### Stop the regular notification collector tasks\n    def stop_notification_timer(self):\n        self._notification_timer.stop()\n\n\n    ### Click on event device list\n    def event_device_list_click(self):\n        self._event_list.clearContents()\n        self._event_list.setRowCount(0)\n\n        current_selection = self._event_dlist.currentRow()\n        if current_selection >= 0:\n            aKey = self._event_dlist.item(current_selection, DSelCol.Key).text()\n            self._event_list.setSortingEnabled(False)\n            self.update_event_list(aKey)\n            self._event_list.setSortingEnabled(True)\n\n\n    ### Click on notifications button\n    def notifications_button_click(self):\n        dialog = NotificationSetupDialog(self)\n        if dialog.exec():\n            LmConf.save()\n            self.stop_notification_timer()\n            self.start_notification_timer()\n            if LmEvents.notify_has_email_rule() and (LmConf.Email is None):\n                if self.ask_question(mx(\"You have configured at least one rule with sending emails as an action but \"\n                                        \"you have not configured how to send emails. \"\n                                        \"Do you want to configure how to send emails?\", \"email\")):\n                    self.email_setup_button_click()\n\n\n    ### Click on display event button\n    def display_event_button_click(self):\n        curr_device_selection = self._event_dlist.currentRow()\n        if curr_device_selection < 0:\n            self.display_error(mx(\"Please select a device.\", \"devSelect\"))\n            return\n\n        device_key = self._event_dlist.item(curr_device_selection, DSelCol.Key).text()\n\n        curr_event_selection = self._event_list.currentRow()\n        if curr_event_selection < 0:\n            self.display_error(mx(\"No event selected.\", \"evtSelect\"))\n            return\n\n        event_key = int(self._event_list.item(curr_event_selection, EventCol.Key).text())\n        device_event_dict = self._event_buffer.get(device_key, {})\n        event_array = device_event_dict.get(\"Events\", [])\n\n        # Retrieve event entry in the array\n        e = next((e for e in event_array if e[\"Key\"] == event_key), None)\n        if e is None:\n            self.display_error(mx(\"Event entry not found.\", \"evtNotFound\"))\n            return\n\n        # Display event entry\n        text_doc = QtGui.QTextDocument()\n        standard_font = QtGui.QFont(\"Courier New\", 9)\n        bold_font = QtGui.QFont(\"Tahoma\", 9, QtGui.QFont.Weight.Bold)\n        text_doc.setDefaultFont(standard_font)\n        standard_format = QtGui.QTextCharFormat()\n        standard_format.setFont(standard_font)\n        bold_format = QtGui.QTextCharFormat()\n        bold_format.setFont(bold_font)\n\n        cursor = QtGui.QTextCursor(text_doc)\n        cursor.beginEditBlock()\n        cursor.insertText(\"Raised: \", bold_format)\n        cursor.insertText(str(e[\"Timestamp\"]) + \"\\n\", standard_format)\n        cursor.insertText(\"Handler: \", bold_format)\n        cursor.insertText(e[\"Handler\"] + \"\\n\", standard_format)\n        cursor.insertText(\"Reason: \", bold_format)\n        cursor.insertText(e[\"Reason\"] + \"\\n\\n\", standard_format)\n        cursor.insertText(\"Attributes:\\n\", bold_format)\n        cursor.insertText(json.dumps(e[\"Attributes\"], indent=2), standard_format)\n        cursor.endEditBlock()\n\n        self.display_infos(lx(\"Event Entry\"), None, text_doc)\n\n\n    ### Update event list\n    def update_event_list(self, device_key):\n        device_event_dict = self._event_buffer.get(device_key, {})\n        event_array = device_event_dict.get(\"Events\", [])\n        for i, e in enumerate(event_array):\n            self._event_list.insertRow(i)\n            self.set_event_list_line(i, e)\n\n\n    ### Set event list line\n    def set_event_list_line(self, line, event):\n        self._event_list.setItem(line, EventCol.Key, QtWidgets.QTableWidgetItem(str(event[\"Key\"])))\n        time = event[\"Timestamp\"]\n        time_stamp = f\"{time.hour:02d}:{time.minute:02d}:{time.second:02d}\"\n        time_item = QtWidgets.QTableWidgetItem(time_stamp)\n        time_item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        self._event_list.setItem(line, EventCol.Time, time_item)\n        self._event_list.setItem(line, EventCol.Reason, QtWidgets.QTableWidgetItem(event[\"Reason\"]))\n        attribute = str(event[\"Attributes\"])[0:256]\n        attribute_item = QtWidgets.QTableWidgetItem(attribute)\n        attribute_item.setData(LmQtTools.ItemDataRole.ExportRole, event[\"Attributes\"])\n        self._event_list.setItem(line, EventCol.Attribute, attribute_item)\n\n\n    ### Process a new Livebox event\n    def process_livebox_event(self, event):\n        d = event.get(\"data\")\n        if d:\n            h = d.get(\"handler\", \"\")\n            if h.startswith(\"Devices\"):\n                self.process_device_event(d)\n            elif h.startswith(\"HomeLan\"):\n                self.process_home_lan_event(d)\n\n\n    ### Process a new Device event\n    def process_device_event(self, event_data):\n        h = event_data.get(\"handler\", \"\")\n        o = event_data.get(\"object\")\n        if o:\n            r = o.get(\"reason\", \"\")\n            a = o.get(\"attributes\")\n        else:\n            r = \"\"\n            a = None\n\n        # Try to guess device key from handler\n        device_key = LmTools.extract_mac_addr_from_string(h)\n        if len(device_key):\n            self.update_event_indicator(device_key)\n            if r == \"Statistics\":\n                e = a.get(device_key)\n                if e:\n                    self.process_statistics_event(device_key, e)\n                    self.bufferize_event(device_key, h, r, e)\n                else:\n                    self.bufferize_event(device_key, h, r, a)\n            elif r == \"changed\":\n                self.process_changed_event(device_key, h, a)\n                self.bufferize_event(device_key, h, r, a)\n            elif r == \"device_name_changed\":\n                e = a.get(device_key)\n                if e is not None:\n                    self.process_device_name_changed_event(device_key, e)\n                    self.bufferize_event(device_key, h, r, e)\n                else:\n                    self.bufferize_event(device_key, h, r, a)\n            elif (r == \"device_updated\") or (r == \"eth_device_updated\") or (r == \"wifi_device_updated\"):\n                e = a.get(device_key)\n                if e is not None:\n                    self.process_device_updated_event(device_key, e)\n                    self.bufferize_event(device_key, h, r, e)\n                else:\n                    self.bufferize_event(device_key, h, r, a)\n            elif r == \"ip_address_added\":\n                e = a.get(device_key)\n                if e is not None:\n                    self.process_ip_address_added_event(device_key, a[device_key])\n                    self.bufferize_event(device_key, h, r, a[device_key])\n                else:\n                    self.bufferize_event(device_key, h, r, a)\n            elif (r == \"device_added\") or (r == \"eth_device_added\") or (r == \"wifi_device_added\"):\n                e = a.get(device_key)\n                if e is not None:\n                    self.process_device_added_event(device_key, a[device_key])\n                    self.bufferize_event(device_key, h, r, a[device_key])\n                else:\n                    self.bufferize_event(device_key, h, r, a)\n            elif (r == \"device_deleted\") or (r == \"eth_device_deleted\") or (r == \"wifi_device_deleted\"):\n                self.process_device_deleted_event(device_key)\n            else:\n                # Check if device is in the list, otherwise put the event in the None list\n                if (self.find_device_line(self._event_dlist, device_key) >= 0):\n                    self.bufferize_event(device_key, h, r, a)\n                else:\n                    self.bufferize_event(None, h, r, a)\n        else:\n            self.bufferize_event(None, h, r, a)\n\n\n    ### Process a new HomeLan event\n    def process_home_lan_event(self, event_data):\n        h = event_data.get(\"handler\", \"\")\n        o = event_data.get(\"object\")\n        if o:\n            a = o.get(\"attributes\")\n        else:\n            return\n\n        if h.startswith(\"HomeLan.Interface.\") and h.endswith(\".Stats\"):\n            intf = h[18:-6]\n            self.process_intf_statistics_event(intf, a)\n\n\n    ### Store event in buffer, for the UI\n    def bufferize_event(self, device_key, handler, reason, attributes):\n        # Find event dict for the device\n        if device_key is None:\n            device_key = \"#NONE#\"\n        device_event_dict = self._event_buffer.get(device_key)\n        if device_event_dict is None:\n            device_event_dict = {}\n            device_event_dict[\"Sequence\"] = 1\n            device_event_dict[\"Events\"] = []\n            self._event_buffer[device_key] = device_event_dict\n        device_sequence = device_event_dict[\"Sequence\"]\n        event_array = device_event_dict[\"Events\"]\n\n        # Create event entry\n        entry = {\"Key\": device_sequence,\n                 \"Timestamp\": datetime.datetime.now(),\n                 \"Handler\": handler,\n                 \"Reason\": reason,\n                 \"Attributes\": attributes}\n\n        # Insert front, limit total size and update sequence\n        event_array.insert(0, entry)\n        if len(event_array) > MAX_EVENT_BUFFER_PER_DEVICE:\n            event_array.pop()\n        device_event_dict[\"Sequence\"] = device_sequence + 1\n\n        # Update UI if device is selected in event tab\n        curr_device_selection = self._event_dlist.currentRow()\n        if curr_device_selection >= 0:\n            selected_device_key = self._event_dlist.item(curr_device_selection, DSelCol.Key).text()\n            if selected_device_key == device_key:\n                self._event_list.insertRow(0)\n                self.set_event_list_line(0, entry)\n\n\n    ### Notify about a device added event\n    def notify_device_added_event(self, mac):\n        self.notify_add_raw_event({\"Key\": mac, \"Timestamp\": datetime.datetime.now(), \"Type\": LmNotif.TYPE_ADD})\n\n\n    ### Notify about a device deleted event\n    def notify_device_deleted_event(self, mac):\n        self.notify_add_raw_event({\"Key\": mac, \"Timestamp\": datetime.datetime.now(), \"Type\": LmNotif.TYPE_DELETE})\n\n\n    ### Notify about a device active event\n    def notify_device_active_event(self, mac, link):\n        self.notify_add_raw_event({\"Key\": mac, \"Timestamp\": datetime.datetime.now(), \"Type\": LmNotif.TYPE_ACTIVE,\n                                   \"Link\": link})\n\n\n    ### Notify about a device inactive event\n    def notify_device_inactive_event(self, mac):\n        self.notify_add_raw_event({\"Key\": mac, \"Timestamp\": datetime.datetime.now(), \"Type\": LmNotif.TYPE_INACTIVE})\n\n\n    ### Notify about a device access link change event\n    def notify_device_access_link_event(self, mac, old_link, new_link):\n        self.notify_add_raw_event({\"Key\": mac, \"Timestamp\": datetime.datetime.now(), \"Type\": LmNotif.TYPE_LINK_CHANGE,\n                                   \"OldLink\": old_link, \"NewLink\": new_link})\n\n\n    ### Add a raw event notification in cache log\n    def notify_add_raw_event(self, event):\n        t = event[\"Type\"]\n\n        ### Debug logs\n        if LmTools.get_verbosity() >= 1:\n            ts = event[\"Timestamp\"].strftime(\"%d/%m/%Y - %H:%M:%S\")\n            k = event[\"Key\"]\n            if t == LmNotif.TYPE_ACTIVE:\n                LmTools.log_debug(1, f\"RAW EVT = {ts} - {k} DEV {t} -> {event['Link']}.\")\n            elif t == LmNotif.TYPE_LINK_CHANGE:\n                LmTools.log_debug(1, f\"RAW EVT = {ts} - {k} DEV {t} -> from {event['OldLink']} to {event['NewLink']}.\")\n            else:\n                LmTools.log_debug(1, f\"RAW EVT = {ts} - {k} DEV {t}.\")\n\n        # If DELETE event look for a recent DELETE event, if too close (duplicates) don't add\n        match t:\n            case LmNotif.TYPE_DELETE:\n                if not self.notify_merge_delete_event(event):\n                    self._notify_raw_event_log.append(event)\n\n            # If ACTIVE event look for a recent INACTIVE event, if too close (micro-cuts) remove both\n            case LmNotif.TYPE_ACTIVE:\n                if not self.notify_merge_active_event(event):\n                    self._notify_raw_event_log.append(event)\n\n            # If LINK_CHANGE event look for a match with a recent LINK_CHANGE event, if too close (micro-changes) remove both or merge them\n            case LmNotif.TYPE_LINK_CHANGE:\n                if not self.notify_merge_link_change_event(event):\n                    self._notify_raw_event_log.append(event)\n\n            # Add any other event straight\n            case _:\n                self._notify_raw_event_log.append(event)\n\n\n    ### Find recent DELETE event matching DELETE event on input, returns true if found\n    def notify_merge_delete_event(self, event):\n        k = event[\"Key\"]\n        ts = event[\"Timestamp\"]\n        for e in reversed(self._notify_raw_event_log):\n            ets = e[\"Timestamp\"]\n            if (ts - ets).total_seconds() > LmConf.NotificationFlushFrequency:\n                return False\n            if (e[\"Key\"] == k) and (e[\"Type\"] == LmNotif.TYPE_DELETE):\n                return True\n        return False\n\n\n    ### Find and remove a recent INACTIVE event matching ACTIVE event on input, returns true if found\n    def notify_merge_active_event(self, event):\n        k = event[\"Key\"]\n        ts = event[\"Timestamp\"]\n        for e in reversed(self._notify_raw_event_log):\n            ets = e[\"Timestamp\"]\n            if (ts - ets).total_seconds() > LmConf.NotificationFlushFrequency:\n                return False\n            if (e[\"Key\"] == k) and (e[\"Type\"] == LmNotif.TYPE_INACTIVE):\n                self._notify_raw_event_log.remove(e)\n                return True\n        return False\n\n\n    ### Find a matching recent LINK_CHANGE and either remove it or merge it, returns true if no need to add new event\n    def notify_merge_link_change_event(self, event):\n        k = event[\"Key\"]\n        ts = event[\"Timestamp\"]\n        ol = event[\"OldLink\"]\n        nl = event[\"NewLink\"]\n\n        for e in reversed(self._notify_raw_event_log):\n            ets = e[\"Timestamp\"]\n            if (ts - ets).total_seconds() > LmConf.NotificationFlushFrequency:\n                # Reach time limit -> Add\n                return False\n            if (e[\"Key\"] == k) and (e[\"Type\"] == LmNotif.TYPE_LINK_CHANGE):\n                # Match found\n                if (e[\"OldLink\"] == nl):\n                    # Item old link matches new link -> Merge means cancel both\n                    self._notify_raw_event_log.remove(e)\n                    return True\n                if (e[\"NewLink\"] == ol):\n                    # Item new link matches old link -> Remove item, merge old\n                    event[\"OldLink\"] = e[\"OldLink\"]\n                    self._notify_raw_event_log.remove(e)\n                    return False\n        # No match -> Add\n        return False\n\n\n    ### Flush events in the frequency window, triggering user notifications when matching configured rules\n    def notify_flush_events(self):\n        n = datetime.datetime.now()\n        for e in self._notify_raw_event_log:\n\n            # Always keep the most recent events that are within the frequency window\n            ets = e[\"Timestamp\"]\n            if (n - ets).total_seconds() <= LmConf.NotificationFlushFrequency:\n                break\n\n            # User notifications matching configured rules\n            r = LmEvents.notify_get_matching_rule(e)\n            if isinstance(r, list):\n                if LmNotif.RULE_FILE in r:\n                    self.notify_user_file(e)\n                if LmNotif.RULE_EMAIL in r:\n                    self.notify_user_email(e)\n\n            self._notify_raw_event_log.remove(e)\n\n\n    ### Generate a user notification for an event in a CSV file\n    def notify_user_file(self, event):\n        LmTools.log_debug(1, \"Logging event in file:\", str(event))\n\n        k = event[\"Key\"]\n        n = LmConf.MacAddrTable.get(k, lx(\"### UNKNOWN ###\"))\n        ts = event[\"Timestamp\"]\n        t = event[\"Type\"]\n\n        if LmConf.NotificationFilePath is None:\n            path = LmConf.get_config_directory()\n        else:\n            path = LmConf.NotificationFilePath\n        file_name = f\"LiveboxMonitor_Events_{ts.strftime('%Y-%m-%d')}.csv\"\n        file_path = os.path.join(path, file_name)\n\n        try:\n            with open(file_path, \"a\", newline = \"\") as f:\n                # No translation to have CSV file readable on any platform without encoding issue\n                # (by default Excel opens CSV files with local charset, not UTF-8)\n                type = LmNotif.HUMAN_TYPE[t]\n\n                r = [ts.strftime(\"%H:%M:%S\"), k, n, type]\n\n                if t == LmNotif.TYPE_ACTIVE:\n                    r.append(event[\"Link\"])\n                elif t == LmNotif.TYPE_LINK_CHANGE:\n                    r.append(event[\"OldLink\"])\n                    r.append(event[\"NewLink\"])\n\n                csv_writer = csv.writer(f, dialect = \"excel\", delimiter = LmConf.CsvDelimiter)\n                csv_writer.writerow(r)\n        except Exception as e:\n            LmTools.error(f\"Cannot log event. Error: {e}\")\n\n\n    ### Generate a user notification for an event via configured email\n    def notify_user_email(self, event):\n        LmTools.log_debug(1, \"Emailing event:\", str(event))\n\n        c = LmConf.load_email_setup()\n        if c is None:\n            LmTools.error(\"No email setup to notify event by email.\")\n            return\n\n        k = event[\"Key\"]\n        n = LmConf.MacAddrTable.get(k, lx(\"### UNKNOWN ###\"))\n        ts = event[\"Timestamp\"]\n        t = event[\"Type\"]\n\n        type = lx(LmNotif.HUMAN_TYPE[t])\n        subject = n + \" - \" + type\n\n        m = lx(\"Date:\") + \" \" + ts.strftime(\"%d/%m/%Y\") + \"\\n\"\n        m += lx(\"Time:\") + \" \" + ts.strftime(\"%H:%M:%S\") + \"\\n\"\n        m += lx(\"Device:\") + \" \" + n + \"\\n\"\n        m += lx(\"MAC:\") + \" \" + k + \"\\n\"\n        m += lx(\"Event:\") + \" \" + type + \"\\n\"\n\n        if t == LmNotif.TYPE_ACTIVE:\n            m += lx(\"Access link:\") + \" \" + event[\"Link\"] + \"\\n\"\n        elif t == LmNotif.TYPE_LINK_CHANGE:\n            m += lx(\"Old access link:\") + \" \" + event[\"OldLink\"] + \"\\n\"\n            m += lx(\"New access link:\") + \" \" + event[\"NewLink\"] + \"\\n\"\n\n        LmQtTools.async_send_email(c, subject, m)\n\n\n    ### Check if a notification event match any configured notification rules\n    @staticmethod\n    def notify_get_matching_rule(event):\n        rr = []\n        t = event[\"Type\"]\n\n        # Find a matching general rule for ALL\n        for r in LmConf.NotificationRules:\n            if r.get(\"Key\") == LmNotif.DEVICE_ALL:\n                e = r.get(\"Events\")\n                if isinstance(e, list) and (t in e):\n                    rr += r.get(\"Rules\")\n\n        # Find a matching rule for unknown devices in case device is unknown\n        k = event[\"Key\"]\n        n = LmConf.MacAddrTable.get(k)\n        if n is None:\n            for r in LmConf.NotificationRules:\n                if r.get(\"Key\") == LmNotif.DEVICE_UNKNOWN:\n                    e = r.get(\"Events\")\n                    if isinstance(e, list) and (t in e):\n                        rr += r.get(\"Rules\")\n\n        # Find a matching specific rule for this device\n        for r in LmConf.NotificationRules:\n            if r.get(\"Key\") == k:\n                e = r.get(\"Events\")\n                if isinstance(e, list) and (t in e):\n                    rr += r.get(\"Rules\")\n\n        return rr\n\n\n    ### Check if a notification rule uses email action, returns True if yes\n    @staticmethod\n    def notify_has_email_rule():\n        if LmConf.NotificationRules is not None:\n            r = next((r for r in LmConf.NotificationRules if LmNotif.RULE_EMAIL in r[\"Rules\"]), None)\n            return r is not None\n        return False\n\n\n\n# ############# Livebox events collector thread #############\nclass LiveboxEventThread(LmThread):\n    _event_received = QtCore.pyqtSignal(dict)\n    _resume = QtCore.pyqtSignal()\n\n    def __init__(self, api):\n        super().__init__(api)\n\n\n    def connect_processor(self, processor):\n        self._event_received.connect(processor)\n\n\n    def task(self):\n        d = self._session.event_request([\"Devices.Device\", \"HomeLan\"], timeout=2)\n        if d:\n            if d.get(\"errors\"):\n                # Session has probably timed out on Livebox side, resign\n                LmTools.log_debug(1, \"Errors in event request, resign\")\n                if self._session.signin(LmConf.LiveboxUser, LmConf.LiveboxPassword) <= 0:\n                    time.sleep(1)  # Avoid looping too quickly in case LB is unreachable\n            elif d.get(\"error\"):\n                pass    # Errors already logged by LmSession\n            else:\n                events = d.get(\"events\")\n                if events:\n                    for e in events:\n                        self._event_received.emit(e)\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmGraphTab.py",
    "content": "### Livebox Monitor graph tab module ###\n\nimport os\nimport time\nimport csv\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\nimport pyqtgraph as pg\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.dlg.LmAddGraph import AddGraphDialog, GraphType\nfrom LiveboxMonitor.lang.LmLanguages import get_graph_label as lx, get_graph_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"graphTab\"\n\n# Config default\nDCFG_WINDOW = 24    # 1 day\nDCFG_BACKGROUND_COLOR = \"#000000\"       # (0, 0, 0)\nDCFG_STAT_FREQUENCY = 30    # In case the service doesn't work, 30 secs is the normal value\n\n# Constants\nUNIT_DIVIDER = 1048576      # To convert bytes in megabytes\nWIND_UPDATE_FREQ = 60000    # 1mn - frequency of the window update task, cutting old values\n\n# List columns\nclass GraphCol(IntEnum):\n    Key = 0     # type constant + '_' + ID\n    Name = 1\n    Type = 2\n    ID = 3\n    Color = 4\n\n\n# ################################ LmGraph class ################################\nclass LmGraph:\n\n    ### Create Graph tab\n    def create_graph_tab(self):\n        self._graph_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Graph list box\n        graph_list_layout = QtWidgets.QVBoxLayout()\n        graph_list_layout.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        graph_list_layout.setSpacing(5)\n\n        select_label = QtWidgets.QLabel(lx(\"Interfaces and devices to display\"), objectName=\"selectLabel\")\n        graph_list_layout.addWidget(select_label, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Interface / device graph list\n        self._graph_list = LmTableWidget(objectName=\"graphList\")\n        self._graph_list.set_columns({GraphCol.Key: [\"Key\", 0, None],\n                                      GraphCol.Name: [lx(\"Name\"), 150, \"graphList_Name\"],\n                                      GraphCol.Type: [lx(\"Type\"), 55, \"graphList_Type\"],\n                                      GraphCol.ID: [lx(\"ID\"), 120, \"graphList_ID\"],\n                                      GraphCol.Color: [lx(\"Color\"), 55, \"graphList_Color\"]})\n        self._graph_list.set_header_resize([GraphCol.Name])\n        self._graph_list.set_standard_setup(self)\n\n        graph_list_size = LmConfig.table_height(8)\n        self._graph_list.setMinimumHeight(graph_list_size)\n        self._graph_list.setMaximumHeight(graph_list_size)\n        self._graph_list.setMinimumWidth(380)\n        graph_list_layout.addWidget(self._graph_list, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Interface / device graph list button bar\n        graph_list_button_box = QtWidgets.QHBoxLayout()\n        graph_list_button_box.setSpacing(5)\n        add_graph_button = QtWidgets.QPushButton(lx(\"Add...\"), objectName=\"addGraph\")\n        add_graph_button.clicked.connect(self.add_graph_button_click)\n        graph_list_button_box.addWidget(add_graph_button)\n        del_graph_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"delGraph\")\n        del_graph_button.clicked.connect(self.del_graph_button_click)\n        graph_list_button_box.addWidget(del_graph_button)\n        graph_list_layout.addLayout(graph_list_button_box, 0)\n\n        # Setup grid\n        window_label = QtWidgets.QLabel(lx(\"Window:\"), objectName=\"windowLabel\")\n        int_validator = QtGui.QIntValidator()\n        int_validator.setRange(0, 99)\n        self._graph_window_edit = QtWidgets.QLineEdit(objectName=\"windowEdit\")\n        self._graph_window_edit.setValidator(int_validator)\n        window_unit = QtWidgets.QLabel(lx(\"hours (0 = max)\"), objectName=\"windowUnit\")\n\n        back_color_label = QtWidgets.QLabel(lx(\"Background color:\"), objectName=\"backColorLabel\")\n        self._graph_back_color_edit = LmQtTools.ColorButton(objectName=\"backColor\")\n\n        setup_grid = QtWidgets.QGridLayout()\n        setup_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        setup_grid.setSpacing(10)\n        setup_grid.addWidget(window_label, 0, 0)\n        setup_grid.addWidget(self._graph_window_edit, 0, 1)\n        setup_grid.addWidget(window_unit, 0, 2)\n        setup_grid.addWidget(back_color_label, 1, 0)\n        setup_grid.addWidget(self._graph_back_color_edit, 1, 1)\n        setup_grid.setColumnStretch(2, 1)\n\n        # Apply button\n        apply_button = QtWidgets.QPushButton(lx(\"Apply\"), objectName=\"apply\")\n        apply_button.clicked.connect(self.apply_graph_button_click)\n\n        # Export button\n        export_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"export\")\n        export_button.clicked.connect(self.export_graph_button_click)\n\n        # Control box\n        control_box = QtWidgets.QVBoxLayout()\n        control_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        control_box.setSpacing(20)\n        control_box.addLayout(graph_list_layout, 0)\n        control_box.addLayout(setup_grid, 0)\n        control_box.addWidget(apply_button, QtCore.Qt.AlignmentFlag.AlignTop)\n        control_box.addWidget(export_button, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Graph box\n        graph_box = QtWidgets.QVBoxLayout()\n        styles = {\"color\": \"#FF0000\", \"font-size\": \"11px\"}\n\n        self._down_graph = pg.PlotWidget()   # Setting objectName on input doesn't work\n        self._down_graph.setObjectName(\"downGraph\")\n        self._down_graph.setTitle(lx(\"Download\"))\n        self._down_graph.setLabel(\"left\", lx(\"Traffic (MB/s)\"), **styles)\n        self._down_graph.setLabel(\"bottom\", lx(\"Time\"), **styles)\n        down_axis = pg.DateAxisItem()\n        self._down_graph.setAxisItems({\"bottom\":down_axis})\n\n        self._up_graph = pg.PlotWidget()     # Setting objectName on input doesn't work\n        self._up_graph.setObjectName(\"upGraph\")\n        self._up_graph.setTitle(lx(\"Upload\"))\n        self._up_graph.setLabel(\"left\", lx(\"Traffic (MB/s)\"), **styles)\n        self._up_graph.setLabel(\"bottom\", lx(\"Time\"), **styles)\n        up_axis = pg.DateAxisItem()\n        self._up_graph.setAxisItems({\"bottom\":up_axis})\n\n        # To inhibit useless \"skipping QEventPoint\" logs on MacOS when moving the mouse on graphs\n        # -> https://stackoverflow.com/questions/75746637/how-to-suppress-qt-pointer-dispatch-warning\n        self._down_graph.viewport().setAttribute(QtCore.Qt.WidgetAttribute.WA_AcceptTouchEvents, False)\n        self._up_graph.viewport().setAttribute(QtCore.Qt.WidgetAttribute.WA_AcceptTouchEvents, False)\n\n        graph_box.addWidget(self._down_graph)\n        graph_box.addWidget(self._up_graph)\n\n        # Layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.VLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setSpacing(10)\n        hbox.addLayout(control_box, 0)\n        hbox.addWidget(separator)\n        hbox.addLayout(graph_box, 1)\n        self._graph_tab.setLayout(hbox)\n\n        LmConfig.set_tooltips(self._graph_tab, \"graph\")\n        self._tab_widget.addTab(self._graph_tab, lx(\"Graph\"))\n\n        # Init context\n        self.graph_tab_init()\n\n\n    ### Init graph tab context\n    def graph_tab_init(self):\n        self._graph_data_loaded = False\n        self._stat_frequency_interfaces = DCFG_STAT_FREQUENCY\n        self._stat_frequency_devices = DCFG_STAT_FREQUENCY\n        self._graph_valid_interfaces = []     # Array of [Key, MeasureNb, ID] - ID is the FriendlyName\n        self._graph_valid_devices = []        # Arrray of [Key, MeasureNb, ID] - ID is the Key\n        self._graph_data = []\n        self._graph_window_timer = None\n\n\n    ### Click on graph tab\n    def graph_tab_click(self):\n        if not self._graph_data_loaded:\n            self._graph_data_loaded = True    # Must be first to avoid reentrency during tab drag&drop\n\n            # Load config & data\n            self._task.start(lx(\"Loading configuration...\"))\n            try:\n                self.load_stat_params()\n                self.load_home_lan_interfaces()\n                self.load_home_lan_devices()\n                self.load_graph_config()\n            finally:\n                self._task.end()\n\n            # Plot data\n            self._task.start(lx(\"Plotting graphes...\"))\n            try:\n                self.plot_graph()\n            finally:\n                self._task.end()\n\n            # Start graph time window update timer, to cut regularly old values\n            self._graph_window_timer = QtCore.QTimer()\n            self._graph_window_timer.timeout.connect(self.graph_window_update)\n            self._graph_window_timer.start(WIND_UPDATE_FREQ)\n\n\n    ### Click on add graph button\n    def add_graph_button_click(self):\n        dialog = AddGraphDialog(self)\n        if dialog.exec():\n            self.add_graph_object(dialog.get_type(),\n                                  dialog.get_object_key(),\n                                  dialog.get_object_name(),\n                                  dialog.get_object_id(),\n                                  dialog.get_color())\n\n\n    ### Add a graph object in the list\n    def add_graph_object(self, type, key, name, object_id, color):\n        key = type + \"_\" + key\n\n        i = self._graph_list.rowCount()\n        self._graph_list.insertRow(i)\n        self._graph_list.setItem(i, GraphCol.Key, QtWidgets.QTableWidgetItem(key))\n        self._graph_list.setItem(i, GraphCol.Name, QtWidgets.QTableWidgetItem(name))\n\n        type = lx(\"Interface\") if type == GraphType.INTERFACE else lx(\"Device\")\n        self._graph_list.setItem(i, GraphCol.Type, QtWidgets.QTableWidgetItem(type))\n\n        self._graph_list.setItem(i, GraphCol.ID, QtWidgets.QTableWidgetItem(object_id))\n\n        color_item = QtWidgets.QTableWidgetItem()\n        color_item.setBackground(QtGui.QColor(color))\n        color_item.setData(QtCore.Qt.ItemDataRole.UserRole, color)\n        self._graph_list.setItem(i, GraphCol.Color, color_item)\n\n\n    ### Click on delete graph button\n    def del_graph_button_click(self):\n        current_selection = self._graph_list.currentRow()\n        if current_selection >= 0:\n            self._graph_list.removeRow(current_selection)\n        else:\n            self.display_error(mx(\"Please select a line.\", \"lineSelect\"))\n\n\n    ### Click on apply button\n    def apply_graph_button_click(self):\n        # Load current setup\n        self._graph_window = int(self._graph_window_edit.text())\n        if self._graph_window < 0:\n            self._graph_window = 0\n        elif self._graph_window > 99:\n            self._graph_window = 99\n        self._graph_back_color = self._graph_back_color_edit.get_color()\n\n        # Save setup\n        self.save_graph_config()\n\n        # Refresh interface & device lists\n        self._task.start(lx(\"Plotting graphes...\"))\n        try:\n            self.load_home_lan_interfaces()\n            self.load_home_lan_devices()\n\n            # Plot the graphs\n            self.plot_graph()\n        finally:\n            self._task.end()\n\n\n    ### Click on export button\n    def export_graph_button_click(self):\n        if len(self._graph_data):\n            folder = QtWidgets.QFileDialog.getExistingDirectory(self, lx(\"Select Export Folder\"))\n            if len(folder):\n                folder = QtCore.QDir.toNativeSeparators(folder)\n                for o in self._graph_data:\n                    self.export_graph_object(folder, o)\n        else:\n            self.display_error(mx(\"No graph to export.\", \"noGraph\"))\n\n\n    ### Export a graph object to a file\n    def export_graph_object(self, folder, graph_object):\n        suffix = \"\"\n        n = 0\n\n        while True:\n            file_path = os.path.join(folder, \"StatExport_\" + graph_object[\"Name\"] + suffix + \".csv\")\n            try:\n                export_file = open(file_path, \"x\", newline=\"\")\n            except FileExistsError:\n                n += 1\n                suffix = \"_\" + str(n)\n                continue\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n                return\n            break\n\n        self._task.start(lx(\"Exporting statistics...\"))\n        try:\n            # Write header line\n            csv_writer = csv.writer(export_file, dialect=\"excel\", delimiter=LmConf.CsvDelimiter)\n            csv_writer.writerow([\"Download Timestamp\", \"Download Bytes\", \"Upload Timestamp\", \"Upload Bytes\"])\n\n            dt = graph_object[\"DownTime\"]\n            d = graph_object[\"Down\"]\n            ut = graph_object[\"UpTime\"]\n            u = graph_object[\"Up\"]\n\n            if graph_object[\"Type\"] == GraphType.INTERFACE:\n                sampling_freq = self._stat_frequency_interfaces\n            else:\n                sampling_freq = self._stat_frequency_devices\n\n            for i in range(min(len(dt), len(ut))):\n                csv_writer.writerow([str(dt[i]), str(int(d[i] * UNIT_DIVIDER * sampling_freq)),\n                                     str(ut[i]), str(int(u[i] * UNIT_DIVIDER * sampling_freq))])\n\n        finally:\n            self._task.end()\n\n            try:\n                export_file.close()\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n\n    ### Load stats parameters\n    def load_stat_params(self):\n        try:\n            self._stat_frequency_interfaces = self._api._stats.get_intf_frequency()\n        except Exception as e:\n            self.display_error(str(e))\n\n        try:\n            self._stat_frequency_devices = self._api._stats.get_device_frequency()\n        except Exception as e:\n            self.display_error(str(e))\n\n\n    ### Load configuration\n    def load_graph_config(self):\n        self._graph_window = DCFG_WINDOW\n        self._graph_back_color = DCFG_BACKGROUND_COLOR\n        if LmConf.Graph is not None:\n            c = LmConf.Graph\n            p = c.get(\"Window\")\n            if p is not None:\n                self._graph_window = int(p)\n            p = c.get(\"BackColor\")\n            if p is not None:\n                self._graph_back_color = p\n\n            t = c[\"Objects\"]\n            for o in t:\n                p = o.get(\"Type\")\n                if p is None:\n                    continue\n                else:\n                    type = p\n                p = o.get(\"Key\")\n                if p is None:\n                    continue\n                else:\n                    key = p\n                p = o.get(\"Color\")\n                if p is None:\n                    continue\n                else:\n                    color = p\n                match type:\n                    case GraphType.INTERFACE:\n                        e = next((e for e in self._graph_valid_interfaces if e[0] == key), None)\n                        if e is None:\n                            continue\n                        i = next((i for i in self._api._intf.get_list() if i[\"Key\"] == key), None)\n                        if i is None:\n                            continue\n                        self.add_graph_object(type, key, i[\"Name\"], e[2], color)\n                    case GraphType.DEVICE:\n                        e = next((e for e in self._graph_valid_devices if e[0] == key), None)\n                        if e is None:\n                            continue\n                        try:\n                            name = LmConf.MacAddrTable[key]\n                        except KeyError:\n                            name = key\n                        self.add_graph_object(type, key, name, e[2], color)\n                    case _:\n                        continue\n\n        self._graph_window_edit.setText(str(self._graph_window))\n        self._graph_back_color_edit.set_color(self._graph_back_color)\n\n\n    ### Save configuration\n    def save_graph_config(self):\n        c = {\"Window\": self._graph_window,\n             \"BackColor\": self._graph_back_color}\n\n        t = []\n        for i in range(self._graph_list.rowCount()):\n            key = self._graph_list.item(i, GraphCol.Key).text()\n            o = {\"Type\": key[0:3],\n                  \"Key\": key[4:],\n                  \"Color\": self._graph_list.item(i, GraphCol.Color).background().color().name()}\n            t.append(o)\n        c[\"Objects\"] = t\n\n        LmConf.Graph = c\n        LmConf.save()\n\n\n    ### Plot the graphs\n    def plot_graph(self):\n        # Apply current setup\n        self._down_graph.setBackground(self._graph_back_color)\n        self._down_graph.showGrid(x=True, y=True, alpha=0.4)\n        self._up_graph.setBackground(self._graph_back_color)\n        self._up_graph.showGrid(x=True, y=True, alpha=0.4)\n\n        # Reset\n        self._graph_data = []\n        self._down_graph.clear()\n        self._up_graph.clear()\n\n        # Loop over the selected objects\n        for i in range(self._graph_list.rowCount()):\n            key = self._graph_list.item(i, GraphCol.Key).text()\n            name = self._graph_list.item(i, GraphCol.Name).text()\n            object_id = self._graph_list.item(i, GraphCol.ID).text()\n            color = self._graph_list.item(i, GraphCol.Color).background().color()\n            self.plot_object(key[0:3], key[4:], name, object_id, color)\n\n\n    ### Plot an object\n    def plot_object(self, type, key, name, object_id, color):\n        o = {\"Type\": type,\n              \"Key\": key,\n              \"Name\": name,\n              \"ID\": object_id}\n\n        # Set time window\n        if self._graph_window:\n            end_time = int(time.time())\n            start_time = end_time - (self._graph_window * 3600)\n        else:\n            start_time = 0\n            end_time = 0\n\n        swap_stats = False\n        if type == GraphType.INTERFACE:\n            stats_data = self.load_stats_interface(object_id, start_time, end_time)\n            intf = next((i for i in self._api._intf.get_list() if i[\"Key\"] == key), None)\n            if intf is not None:\n                swap_stats = intf[\"SwapStats\"]\n            sampling_freq = self._stat_frequency_interfaces\n        else:\n            stats_data = self.load_stats_device(object_id, start_time, end_time)\n            sampling_freq = self._stat_frequency_devices\n\n        dt = [] # Download time data\n        d = []  # Download data\n        ut = [] # Upload time data\n        u = []  # Upload data\n\n        for e in reversed(stats_data):\n            timestamp = e.get(\"Timestamp\")\n            if timestamp is not None:\n                dt.append(timestamp)\n                ut.append(timestamp)\n\n                if swap_stats:\n                    down_bits = e.get(\"Tx_Counter\")\n                else:\n                    down_bits = e.get(\"Rx_Counter\")\n                if down_bits is None:\n                    down_bits = 0\n                d.append((down_bits / 8) / UNIT_DIVIDER / sampling_freq)    # Convert bits over 30 secs to MBytes/s\n\n                if swap_stats:\n                    up_bits = e.get(\"Rx_Counter\")\n                else:\n                    up_bits = e.get(\"Tx_Counter\")\n                if up_bits is None:\n                    up_bits = 0\n                u.append((up_bits / 8) / UNIT_DIVIDER / sampling_freq)      # Convert bits over 30 secs to MBytes/s\n\n        o[\"DownTime\"] = dt\n        o[\"Down\"] = d\n        o[\"UpTime\"] = ut\n        o[\"Up\"] = u\n\n        pen = pg.mkPen(color=color, width=1)\n        o[\"DownLine\"] = self._down_graph.plot(dt, d, name=object_id, pen=pen)\n        o[\"UpLine\"] = self._up_graph.plot(ut, u, name=object_id, pen=pen)\n\n        self._graph_data.append(o)\n\n\n    ### Update graph according to interface stats event\n    def graph_update_interface_event(self, intf_key, timestamp, down_bytes, up_bytes):\n        # Lookup for a stat object matching interface\n        o = next((o for o in self._graph_data if (o[\"Type\"] == GraphType.INTERFACE) and (o[\"Key\"] == intf_key)), None)\n        if o is not None:\n            self.graph_update_object_event(o, timestamp, down_bytes, up_bytes, self._stat_frequency_interfaces)\n\n\n    ### Update graph according to device stats event\n    def graph_update_device_event(self, device_key, timestamp, down_bytes, up_bytes):\n        # Lookup for a stat object matching interface\n        o = next((o for o in self._graph_data if (o[\"Type\"] == GraphType.DEVICE) and (o[\"Key\"] == device_key)), None)\n        if o is not None:\n            self.graph_update_object_event(o, timestamp, down_bytes, up_bytes, self._stat_frequency_devices)\n\n\n    ### Update graph according to stats event\n    def graph_update_object_event(self, graph_object, timestamp, down_bytes, up_bytes, sampling_freq):\n        # Update download part\n        if down_bytes is not None:\n            # Update timestamp array\n            dt = graph_object[\"DownTime\"]\n            dt.append(timestamp)\n\n            # Update data\n            d = graph_object[\"Down\"]\n            d.append(down_bytes / UNIT_DIVIDER / sampling_freq)     # Convert to MBs/s\n\n            # Update graph\n            graph_object[\"DownLine\"].setData(dt, d)\n\n        # Update upload part\n        if up_bytes is not None:\n            # Update timestamp array\n            ut = graph_object[\"UpTime\"]\n            ut.append(timestamp)\n\n            # Update data\n            u = graph_object[\"Up\"]\n            u.append(up_bytes / UNIT_DIVIDER / sampling_freq)       # Convert to MBs/s\n\n            # Update graph\n            graph_object[\"UpLine\"].setData(ut, u)\n\n\n    # Cut old values to match graph time window\n    def graph_window_update(self):\n        # Determine older allowed timestamp\n        if self._graph_window:\n            window = self._graph_window\n        else:\n            # If no window cut after 5 days\n            window = 5 * 24\n        max_older_value = int(time.time()) - (window * 3600)\n\n        # Loop on each drawn object\n        for o in self._graph_data:\n            self.graph_window_update_line(o[\"DownLine\"], o[\"DownTime\"], o[\"Down\"], max_older_value)\n            self.graph_window_update_line(o[\"UpLine\"], o[\"UpTime\"], o[\"Up\"], max_older_value)\n\n\n    # Cut old values to match graph time window\n    def graph_window_update_line(self, line, time_array, data_array, max_older_value):\n        need_refresh = False\n\n        while(len(time_array) and (time_array[0] <= max_older_value)):\n            need_refresh = True\n            time_array.pop(0)\n            data_array.pop(0)\n\n        if need_refresh:\n            line.setData(time_array, data_array)\n\n\n    ### Update graph list with new device name\n    def graph_update_device_name(self, device_key):\n        i = self.find_graph_object_line(GraphType.DEVICE, device_key)\n        if i > -1:\n            try:\n                name = LmConf.MacAddrTable[device_key]\n            except KeyError:\n                name = device_key\n            self._graph_list.setItem(i, GraphCol.Name, QtWidgets.QTableWidgetItem(name))\n\n\n    ### Load the current valid interfaces\n    def load_home_lan_interfaces(self):\n        try:\n            interfaces = self._api._stats.get_intf_list()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n\n        # Reset\n        self._graph_valid_interfaces = []\n\n        # Iterate over all valid interfaces\n        for i in self._api._intf.get_list():\n            # Check if key exists in the returned interfaces\n            k = i[\"Key\"]\n            intf_data = interfaces.get(k)\n            if intf_data:\n                m = int(intf_data.get(\"NumberOfStoredMeasures\", 0))\n                intf_id = intf_data.get(\"FriendlyName\", k)\n                self._graph_valid_interfaces.append([k, m, intf_id])\n\n\n    ### Load the current valid devices\n    def load_home_lan_devices(self):\n        try:\n            devices = self._api._stats.get_device_list()\n        except Exception as e:\n            self.display_error(str(e))\n            return\n\n        # Reset\n        self._graph_valid_devices = []\n\n        for d in devices:\n            d = devices[d]\n            device_id = d.get(\"MacAddress\")\n            if (device_id is not None) and len(device_id):\n                m = int(d.get(\"NumberOfStoredMeasures\", 0))\n                self._graph_valid_devices.append([device_id, m, device_id])\n\n\n    ### Load the stats for the given interface ID\n    def load_stats_interface(self, intf_id, start, end):\n        try:\n            return self._api._stats.get_intf_results(intf_id, start, end)\n        except Exception as e:\n            self.display_error(str(e))\n            return []\n\n\n    ### Load the stats for the given device ID\n    def load_stats_device(self, device_id, start, end):\n        try:\n            return self._api._stats.get_device_results(device_id, start, end)                \n        except Exception as e:\n            self.display_error(str(e))\n            return []\n\n\n    ### Find object line in graph list from object type & key, return -1 if not found\n    def find_graph_object_line(self, type, key):\n        key = type + \"_\" + key\n        for i in range(self._graph_list.rowCount()):\n            if self._graph_list.item(i, GraphCol.Key).text() == key:\n                return i\n        return -1\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmInfoTab.py",
    "content": "### Livebox Monitor Livebox info tab module ###\n\nimport datetime\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmThread import LmThread\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.lang.LmLanguages import get_info_label as lx, get_info_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"liveboxInfoTab\"\n\n# List columns\nclass InfoCol(IntEnum):\n    Attribute = 0\n    Value = 1\n\nclass StatsCol(IntEnum):\n    Key = 0\n    Name = 1\n    Down = 2\n    Up = 3\n    DownRate = 4\n    UpRate = 5\n\n\n# ################################ LmInfo class ################################\nclass LmInfo:\n\n    ### Create Livebox info tab\n    def create_livebox_info_tab(self):\n        self._livebox_info_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Statistics list\n        self._stats_list = LmTableWidget(objectName=\"statsList\")\n        self._stats_list.set_columns({StatsCol.Key: [\"Key\", 0, None],\n                                      StatsCol.Name: [lx(\"Name\"), 100, \"stats_Name\"],\n                                      StatsCol.Down: [lx(\"Rx\"), 65, \"stats_Rx\"],\n                                      StatsCol.Up: [lx(\"Tx\"), 65, \"stats_Tx\"],\n                                      StatsCol.DownRate: [lx(\"RxRate\"), 65, \"stats_RxRate\"],\n                                      StatsCol.UpRate: [lx(\"TxRate\"), 65, \"stats_TxRate\"]})\n        self._stats_list.set_header_resize([StatsCol.Down, StatsCol.Up, StatsCol.DownRate, StatsCol.UpRate])\n        self._stats_list.set_standard_setup(self, allow_sel=False, allow_sort=False)\n        self._stats_list.setMinimumWidth(450)\n\n        intf_list = self._api._intf.get_list()\n        for i, s in enumerate(intf_list):\n            self._stats_list.insertRow(i)\n            self._stats_list.setItem(i, StatsCol.Key, QtWidgets.QTableWidgetItem(s[\"Key\"]))\n            self._stats_list.setItem(i, StatsCol.Name, QtWidgets.QTableWidgetItem(lx(s[\"Name\"])))\n        stats_list_size = LmConfig.table_height(len(intf_list))\n        self._stats_list.setMinimumHeight(stats_list_size)\n        self._stats_list.setMaximumHeight(stats_list_size)\n\n        # Attribute list\n        self._livebox_alist = LmTableWidget(objectName=\"liveboxAList\")\n        self._livebox_alist.set_columns({InfoCol.Attribute: [lx(\"Attribute\"), 200, \"alist_Attribute\"],\n                                         InfoCol.Value: [lx(\"Value\"), 600, \"alist_Value\"]})\n        self._livebox_alist.set_header_resize([InfoCol.Value])\n        self._livebox_alist.set_standard_setup(self, allow_sel=False, allow_sort=False)\n\n        # Lists layout\n        list_box = QtWidgets.QHBoxLayout()\n        list_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        list_box.setSpacing(10)\n        list_box.addWidget(self._stats_list, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        list_box.addWidget(self._livebox_alist, 1)\n\n        # Button bar\n        buttons_box = QtWidgets.QHBoxLayout()\n        buttons_box.setSpacing(10)\n\n        livebox_info_button = QtWidgets.QPushButton(lx(\"Livebox Infos\"), objectName=\"liveboxInfo\")\n        livebox_info_button.clicked.connect(self.livebox_info_button_click)\n        buttons_box.addWidget(livebox_info_button)\n\n        internet_info_button = QtWidgets.QPushButton(lx(\"Internet Infos\"), objectName=\"internetInfo\")\n        internet_info_button.clicked.connect(self.internet_info_button_click)\n        buttons_box.addWidget(internet_info_button)\n\n        wifi_info_button = QtWidgets.QPushButton(lx(\"Wifi Infos\"), objectName=\"wifiInfo\")\n        wifi_info_button.clicked.connect(self.wifi_info_button_click)\n        buttons_box.addWidget(wifi_info_button)\n\n        lan_info_button = QtWidgets.QPushButton(lx(\"LAN Infos\"), objectName=\"lanInfo\")\n        lan_info_button.clicked.connect(self.lan_info_button_click)\n        buttons_box.addWidget(lan_info_button)\n\n        ont_info_button = QtWidgets.QPushButton(lx(\"ONT Infos\"), objectName=\"ontInfo\")\n        ont_info_button.clicked.connect(self.ont_info_button_click)\n        if self._fiber_link:\n            buttons_box.addWidget(ont_info_button)\n\n        voip_info_button = QtWidgets.QPushButton(lx(\"VoIP Infos\"), objectName=\"voipInfo\")\n        voip_info_button.clicked.connect(self.voip_info_button_click)\n        buttons_box.addWidget(voip_info_button)\n\n        iptv_info_button = QtWidgets.QPushButton(lx(\"IPTV Infos\"), objectName=\"iptvInfo\")\n        iptv_info_button.clicked.connect(self.iptv_info_button_click)\n        buttons_box.addWidget(iptv_info_button)\n\n        if self._api._info.has_usb():\n            usb_info_button = QtWidgets.QPushButton(lx(\"USB Infos\"), objectName=\"usbInfo\")\n            usb_info_button.clicked.connect(self.usb_info_button_click)\n            buttons_box.addWidget(usb_info_button)\n\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.VLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n        buttons_box.addWidget(separator)\n\n        export_info_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"exportInfo\")\n        export_info_button.clicked.connect(self.export_info_button_click)\n        buttons_box.addWidget(export_info_button)\n        self._export_file = None\n\n        # Layout\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addLayout(list_box, 0)\n        vbox.addLayout(buttons_box, 1)\n        self._livebox_info_tab.setLayout(vbox)\n\n        # Init context\n        self._home_lan_intf_stats_map = {}\n        self._livebox_stats_map_home_lan = {}\n\n        LmConfig.set_tooltips(self._livebox_info_tab, \"info\")\n        self._tab_widget.addTab(self._livebox_info_tab, lx(\"Livebox Stats/Infos\"))\n\n\n    ### Init the Livebox stats collector thread\n    def init_stats_loop(self):\n        self._livebox_stats_map = {}\n        self._livebox_stats_loop = None\n\n\n    ### Start the Livebox stats collector thread\n    def start_stats_loop(self):\n        self._livebox_stats_loop = LiveboxStatsThread(self._api)\n        self._livebox_stats_loop.connect_processor(self.process_livebox_stats)\n\n\n    ### Suspend the Livebox stats collector thread\n    def suspend_stats_loop(self):\n        if self._livebox_stats_loop is not None:\n            self._livebox_stats_loop.stop()\n\n\n    ### Resume the Livebox stats collector thread\n    def resume_stats_loop(self):\n        if self._livebox_stats_loop is None:\n            self.start_stats_loop()\n        else:\n            self._livebox_stats_loop._resume.emit()\n\n\n    ### Stop the Livebox stats collector thread\n    def stop_stats_loop(self):\n        if self._livebox_stats_loop is not None:\n            self._livebox_stats_loop.quit()\n            self._livebox_stats_loop = None\n\n\n    ### Process a HomeLan interface stats event\n    def process_intf_statistics_event(self, intf, attributes):\n        for s in self._api._intf.get_list():\n            if s[\"Key\"] == intf:\n                e = {\"Key\": intf,\n                     \"Source\": \"hls\",     # HomeLanStats\n                     \"Timestamp\": datetime.datetime.now()}\n\n                # Only one value among the two is present per event\n                bytes_sent = attributes.get(\"BytesSent\")\n                bytes_received = attributes.get(\"BytesReceived\")\n\n                if bytes_sent is None:\n                    if s[\"SwapStats\"]:\n                        e[\"RxBytes\"] = None\n                    else:\n                        e[\"TxBytes\"] = None\n                else:\n                    if s[\"SwapStats\"]:\n                        e[\"RxBytes\"] = int(bytes_sent)\n                    else:\n                        e[\"TxBytes\"] = int(bytes_sent)\n\n                if bytes_received is None:\n                    if s[\"SwapStats\"]:\n                        e[\"TxBytes\"] = None\n                    else:\n                        e[\"RxBytes\"] = None\n                else:\n                    if s[\"SwapStats\"]:\n                        e[\"TxBytes\"] = int(bytes_received)\n                    else:\n                        e[\"RxBytes\"] = int(bytes_received)\n\n                e[\"RxErrors\"] = 0\n                e[\"TxErrors\"] = 0\n\n                # Update UI\n                self.process_livebox_stats(e)\n\n                # Update potential running graph\n                bytes_received = e[\"RxBytes\"]\n                delta_received = None\n                bytes_sent = e[\"TxBytes\"]\n                delta_sent = None\n\n                # Try to find a previously received statistic record\n                prev_stats = self._home_lan_intf_stats_map.get(intf)\n                if prev_stats is not None:\n                    prev_down_bytes = prev_stats[\"RxBytes\"]\n                    if bytes_received is not None:\n                        if (prev_down_bytes is not None) and (bytes_received > prev_down_bytes):\n                            delta_received = bytes_received - prev_down_bytes\n                    else:\n                        bytes_received = prev_down_bytes\n\n                    prev_up_bytes = prev_stats[\"TxBytes\"]\n                    if bytes_sent is not None:\n                        if (prev_up_bytes is not None) and (bytes_sent > prev_up_bytes):\n                            delta_sent = bytes_sent - prev_up_bytes\n                    else:\n                        bytes_sent = prev_up_bytes\n\n                # Remember current stats\n                s = {\"RxBytes\": bytes_received,\n                     \"TxBytes\": bytes_sent}\n                self._home_lan_intf_stats_map[intf] = s\n\n                self.graph_update_interface_event(intf, int(e[\"Timestamp\"].timestamp()), delta_received, delta_sent)\n                break\n\n\n    ### Find stats line from stat key\n    def find_stats_line(self, istats_key):\n        if istats_key:\n            for i in range(self._stats_list.rowCount()):\n                if self._stats_list.item(i, StatsCol.Key).text() == istats_key:\n                    return i\n        return -1\n\n\n    ### Process a new Livebox stats\n    # Stats can come from two sources, indicated in the 'Source' value: NetDevStats ('nds') or HomeLan ('hls').\n    # nds stats are realtime but recycling at 4Gb max / hls stats are raised every 30s but recycling at much higher numbers\n    # nds stats come will all values / hls stats come with either down or up bytes values, other is None, and errors are at zero\n    # Strategy is to display realime rates from nds events and to update the counters from the hls events\n    def process_livebox_stats(self, stats):\n        # Get stats data\n        key = stats[\"Key\"]\n        source = stats[\"Source\"]\n        timestamp = stats[\"Timestamp\"]\n        down_bytes = stats.get(\"RxBytes\")\n        up_bytes = stats.get(\"TxBytes\")\n        down_errors = stats[\"RxErrors\"]\n        up_errors = stats[\"TxErrors\"]\n        down_rate_bytes = 0\n        up_rate_bytes = 0\n        down_delta_errors = 0\n        up_delta_errors = 0\n\n        match source:\n            # If event source is HomeLan update the counters only and remember it\n            case \"hls\":\n                self._livebox_stats_map_home_lan[key] = True\n\n            # If event source is NetDevStats update all and remember last nds stats\n            case \"nds\":\n                # Try to find a previously received statistic record\n                prev_stats = self._livebox_stats_map.get(key)\n                if prev_stats is not None:\n                    prev_timestamp = prev_stats[\"Timestamp\"]\n                    prev_down_bytes = prev_stats[\"RxBytes\"]\n                    prev_up_bytes = prev_stats[\"TxBytes\"]\n                    elapsed = int((timestamp - prev_timestamp).total_seconds())\n                    if elapsed > 0:\n                        if down_bytes > prev_down_bytes:\n                            down_rate_bytes = int((down_bytes - prev_down_bytes) / elapsed)\n                        if up_bytes > prev_up_bytes:\n                            up_rate_bytes = int((up_bytes - prev_up_bytes) / elapsed)\n                    down_delta_errors = down_errors - prev_stats[\"RxErrors\"]\n                    up_delta_errors = up_errors - prev_stats[\"TxErrors\"]\n\n                # Remember current stats\n                self._livebox_stats_map[key] = stats\n\n                # Don't erase previously received HomeLan counters\n                if self._livebox_stats_map_home_lan.get(key, False):\n                    down_bytes = None\n                    up_bytes = None\n\n        # Update UI\n        list_line = self.find_stats_line(key)\n        if list_line >= 0:\n            if down_bytes is not None:\n                down = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(down_bytes))\n                down.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n                if down_errors:\n                    down.setForeground(QtCore.Qt.GlobalColor.red)\n                self._stats_list.setItem(list_line, StatsCol.Down, down)\n\n            if up_bytes is not None:\n                up = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(up_bytes))\n                up.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n                if up_errors:\n                    up.setForeground(QtCore.Qt.GlobalColor.red)\n                self._stats_list.setItem(list_line, StatsCol.Up, up)\n\n            if source == \"nds\":\n                if down_rate_bytes:\n                    down_rate = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(down_rate_bytes) + \"/s\")\n                    if down_delta_errors:\n                        down_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                    down_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n                else:\n                    down_rate = QtWidgets.QTableWidgetItem(\"\")\n                self._stats_list.setItem(list_line, StatsCol.DownRate, down_rate)\n\n                if up_rate_bytes:\n                    up_rate = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(up_rate_bytes) + \"/s\")\n                    if up_delta_errors:\n                        up_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                    up_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n                else:\n                    up_rate = QtWidgets.QTableWidgetItem(\"\")\n                self._stats_list.setItem(list_line, StatsCol.UpRate, up_rate)\n\n\n    ### Add a title line in an info attribute/value list\n    def add_title_line(self, list_widget, line, title):\n        if title:\n            if self._export_file is not None:\n                if line > 0:\n                    line += 1\n                    self._export_file.write(\"\\n\")\n                self._export_file.write(f\"### {title}\\n\")\n            else:\n                list_widget.insertRow(line)\n                if line > 0:\n                    line += 1\n                    list_widget.insertRow(line)\n                attribute_item = QtWidgets.QTableWidgetItem(\"\")\n                attribute_item.setBackground(QtCore.Qt.GlobalColor.cyan)\n                title_item = QtWidgets.QTableWidgetItem(title)\n                title_item.setFont(LmQtTools.BOLD_FONT)\n                title_item.setBackground(QtCore.Qt.GlobalColor.cyan)\n                list_widget.setItem(line, InfoCol.Attribute, attribute_item)\n                list_widget.setItem(line, InfoCol.Value, title_item)\n            return line + 1\n        return line\n\n\n    ### Add a line in an info attribute/value list\n    def add_info_line(self, list_widget, line, attribute, value, qualifier=LmQtTools.ValQual.Default):\n        if value:\n            if self._export_file is not None:\n                self._export_file.write(f\"{attribute} = {value}\\n\")\n            else:\n                list_widget.insertRow(line)\n                attribute_item = QtWidgets.QTableWidgetItem(attribute)\n                attribute_item.setFont(LmQtTools.BOLD_FONT)\n                list_widget.setItem(line, InfoCol.Attribute, attribute_item)\n                if qualifier != LmQtTools.ValQual.Default:\n                    value_item = QtWidgets.QTableWidgetItem(value)\n                    match qualifier:\n                        case LmQtTools.ValQual.Good:\n                            value_item.setForeground(QtGui.QBrush(QtGui.QColor(0, 190, 0)))\n                        case LmQtTools.ValQual.Warn:\n                            value_item.setForeground(QtGui.QBrush(QtGui.QColor(255, 191, 0)))\n                        case LmQtTools.ValQual.Error:\n                            value_item.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    list_widget.setItem(line, InfoCol.Value, value_item)\n                else:\n                    list_widget.setItem(line, InfoCol.Value, QtWidgets.QTableWidgetItem(value))\n            return line + 1\n        return line\n\n\n    ### Click on Livebox infos button\n    def livebox_info_button_click(self):\n        self._task.start(lx(\"Getting Livebox information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_livebox_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on Internet infos button\n    def internet_info_button_click(self):\n        self._task.start(lx(\"Getting Internet information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_internet_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on Wifi infos button\n    def wifi_info_button_click(self):\n        self._task.start(lx(\"Getting Wifi information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_wifi_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on LAN infos button\n    def lan_info_button_click(self):\n        self._task.start(lx(\"Getting LAN information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_lan_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on ONT infos button\n    def ont_info_button_click(self):\n        self._task.start(lx(\"Getting ONT information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_ont_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on VoIP infos button\n    def voip_info_button_click(self):\n        self._task.start(lx(\"Getting VoIP information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_voip_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on IPTV infos button\n    def iptv_info_button_click(self):\n        self._task.start(lx(\"Getting IPTV information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_iptv_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on USB infos button\n    def usb_info_button_click(self):\n        self._task.start(lx(\"Getting USB information...\"))\n\n        try:\n            self._livebox_alist.clearContents()\n            self._livebox_alist.setRowCount(0)\n\n            self.load_usb_info()\n\n        finally:\n            self._task.end()\n\n\n    ### Click on Export infos button\n    def export_info_button_click(self):\n        file_name = QtWidgets.QFileDialog.getSaveFileName(self, lx(\"Save File\"), lx(\"Livebox Infos\") + \".txt\", \"*.txt\")[0]\n        if not file_name:\n            return\n\n        try:\n            self._export_file = open(file_name, \"w\")\n        except Exception as e:\n            LmTools.error(f\"File creation error: {e}\")\n            self.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n            return\n\n        self._task.start(lx(\"Exporting all information...\"))\n\n        try:\n            i = 0\n            i = self.load_livebox_info(i)\n            i = self.load_internet_info(i)\n            i = self.load_wifi_info(i)\n            i = self.load_lan_info(i)\n            if self._fiber_link:\n                i = self.load_ont_info(i)\n            i = self.load_voip_info(i)\n            i = self.load_iptv_info(i)\n            if self._api._info.has_usb():\n                i = self.load_usb_info(i)\n\n        finally:\n            self._task.end()\n\n            try:\n                self._export_file.close()\n            except Exception as e:\n                LmTools.error(f\"File saving error: {e}\")\n                self.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n            self._export_file = None\n\n\n    ### Load Livebox infos\n    def load_livebox_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"Livebox Information\"))\n\n        try:\n            d = self._api._info.get_model_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Livebox Infos\"), \"UPnP-IGD:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Provider\"), d.get(\"WANAccessProvider\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Model Number\"), d.get(\"ModelNumber\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Model Name\"), d.get(\"ModelName\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Friendly Name\"), d.get(\"FriendlyName\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Allowed Host Headers\"), d.get(\"AllowedHostHeader\"))\n\n        try:\n            d = self._api._reboot.get_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Livebox Infos\"), \"NMC.Reboot:get query error\", LmQtTools.ValQual.Error)\n            total_reboot = None\n        else:\n            total_reboot = d.get(\"BootCounter\")\n\n        try:\n            d = self._api._info.get_device_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Livebox Infos\"), \"DeviceInfo:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Model\"), d.get(\"ProductClass\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Status\"), LmTools.fmt_str_capitalize(d.get(\"DeviceStatus\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Livebox Up Time\"), LmTools.fmt_time(d.get(\"UpTime\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Manufacturer\"), d.get(\"Manufacturer\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Manufacturer Model Name\"), d.get(\"ModelName\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Description\"), d.get(\"Description\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Serial Number\"), d.get(\"SerialNumber\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Hardware Version\"), d.get(\"HardwareVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Software Version\"), d.get(\"SoftwareVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Rescue Version\"), d.get(\"RescueVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Modem Firmware Version\"), d.get(\"ModemFirmwareVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Orange Firmware Version\"), d.get(\"AdditionalSoftwareVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Spec Version\"), d.get(\"SpecVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Provisioning Code\"), d.get(\"ProvisioningCode\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Country\"), LmTools.fmt_str_upper(d.get(\"Country\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"MAC Address\"), self._api._info.get_mac())\n            i = self.add_info_line(self._livebox_alist, i, lx(\"External IP Address\"), d.get(\"ExternalIPAddress\"))\n            if total_reboot is not None:\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Total Number Of Reboots\"), LmTools.fmt_int(total_reboot))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Number Of Reboots\"), LmTools.fmt_int(d.get(\"NumberOfReboots\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Upgrade Occurred\"), LmTools.fmt_bool(d.get(\"UpgradeOccurred\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Reset Occurred\"), LmTools.fmt_bool(d.get(\"ResetOccurred\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Restore Occurred\"), LmTools.fmt_bool(d.get(\"RestoreOccurred\")))\n\n        try:\n            d = self._api._info.get_device_config()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Livebox Infos\"), \"Devices.Device:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Name\"), d.get(\"Name\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(d.get(\"Active\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"First Boot\"), LmTools.fmt_livebox_timestamp(d.get(\"FirstSeen\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Boot Loader Version\"), d.get(\"BootLoaderVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Firewall Level\"), d.get(\"FirewallLevel\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Internet Active\"), LmTools.fmt_bool(d.get(\"Internet\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPTV Active\"), LmTools.fmt_bool(d.get(\"IPTV\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Telephony Active\"), LmTools.fmt_bool(d.get(\"Telephony\")))\n\n        try:\n            d = self._api._info.get_time()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Time\"), \"Time:getTime query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Time\"), d.get(\"time\"))\n\n        try:\n            d = self._api._info.get_memory_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Memory\"), \"DeviceInfo.MemoryStatus:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Total Memory\"), LmTools.fmt_int(d.get(\"Total\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Free Memory\"), LmTools.fmt_int(d.get(\"Free\")))\n\n        return i\n\n\n    ### Load Internet infos\n    def load_internet_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"Internet Information\"))\n\n        try:\n            d = self._api._info.get_connection_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Connection\"), \"NMC:get query error\", LmQtTools.ValQual.Error)\n        else:\n            access_type = d.get(\"WanMode\")\n            if access_type is not None:\n                if self._fiber_link:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Access Type\"), f\"Fiber ({access_type})\")\n                else:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Access Type\"), f\"ADSL ({access_type})\")\n\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Username\"), d.get(\"Username\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Factory Reset Scheduled\"), LmTools.fmt_bool(d.get(\"FactoryResetScheduled\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Connection Error\"), LmTools.fmt_bool(d.get(\"ConnectionError\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Offer Type\"), d.get(\"OfferType\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Offer Name\"), d.get(\"OfferName\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPTV Mode\"), d.get(\"IPTVMode\"))\n\n        try:\n            d = self._api._info.get_wan_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Internet Infos\"), \"NMC:getWANStatus query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"WAN Status\"), LmTools.fmt_str_capitalize(d.get(\"WanState\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Link Status\"), LmTools.fmt_str_capitalize(d.get(\"LinkState\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Link Type\"), LmTools.fmt_str_upper(d.get(\"LinkType\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Protocol\"), LmTools.fmt_str_upper(d.get(\"Protocol\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"GPON State\"), d.get(\"GponState\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Connection Status\"), d.get(\"ConnectionState\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Last Connection Error\"), d.get(\"LastConnectionError\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IP Address\"), d.get(\"IPAddress\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Remote Gateway\"), d.get(\"RemoteGateway\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DNS Servers\"), d.get(\"DNSServers\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPv6 Address\"), d.get(\"IPv6Address\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPv6 Prefix\"), d.get(\"IPv6DelegatedPrefix\"))\n\n        try:\n            d = self._api._info.get_device_config()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Internet Infos\"), \"Devices.Device:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Last Connection\"), LmTools.fmt_livebox_timestamp(d.get(\"LastConnection\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Firewall Level\"), d.get(\"FirewallLevel\"))\n            rate = d.get(\"DownstreamMaxBitRate\")\n            if rate is not None:\n                rate *= 1048576\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Down Bit Rate\"), LmTools.fmt_bytes(rate))\n            rate = d.get(\"UpstreamMaxBitRate\")\n            if rate is not None:\n                rate *= 1048576\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Up Bit Rate\"), LmTools.fmt_bytes(rate))\n\n        try:\n            d = self._api._dhcp.get_mibs(True, False)\n        except Exception as e:\n            LmTools.error(str(e))\n            d = None\n        if d is not None:\n            d = d.get(\"dhcp\")\n        if d is not None:\n            d = d.get(\"dhcp_data\")\n        if d is None:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Connection\"), \"NeMo.Intf.data:getMIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCP Status\"), d.get(\"DHCPStatus\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Subnet Mask\"), d.get(\"SubnetMask\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IP Routers\"), d.get(\"IPRouters\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCP Server\"), d.get(\"DHCPServer\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Renew\"), LmTools.fmt_bool(d.get(\"Renew\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Authentication\"), LmTools.fmt_bool(d.get(\"CheckAuthentication\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Authentication Information\"), d.get(\"AuthenticationInformation\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Connection Up Time\"), LmTools.fmt_time(d.get(\"Uptime\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Lease Time\"), LmTools.fmt_time(d.get(\"LeaseTime\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Lease Time Remaining\"), LmTools.fmt_time(d.get(\"LeaseTimeRemaining\")))\n\n        try:\n            d = self._api._info.get_vlan_id()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"VLAN ID\"), \"NeMo.Intf.data:getFirstParameter query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"VLAN ID\"), LmTools.fmt_int(d))\n\n        try:\n            d = self._api._info.get_mtu()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"MTU\"), \"NeMo.Intf.data:getFirstParameter query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"MTU\"), LmTools.fmt_int(d))\n\n        return i\n\n\n    ### Load Wifi infos\n    def load_wifi_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"Wifi Information\"))\n        intf_list = self._api._intf.get_list()\n\n        # General infos\n        try:\n            d = self._api._wifi.get_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Wifi\"), \"NMC.Wifi:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Enabled\"), LmTools.fmt_bool(d.get(\"Enable\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(d.get(\"Status\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"BGN User Bandwidth\"), d.get(\"BGNUserBandwidth\"))\n\n        # Wifi scheduler\n        try:\n            d = self._api._wifi.get_scheduler_enable()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Scheduler Enabled\"), \"Scheduler query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Scheduler Enabled\"), LmTools.fmt_bool(d))\n\n        # Wifi 7 MLO\n        if self._api._wifi.has_mlo():\n            try:\n                d = self._api._wifi.get_mlo_config()\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO\"), \"MLO query error\", LmQtTools.ValQual.Error)\n            else:\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO\"), LmTools.fmt_bool(d.get(\"MLOEnable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO Single MLD Unit\"), LmTools.fmt_int(d.get(\"SingleMLDUnit\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO EMLSR\"), LmTools.fmt_bool(d.get(\"EMLSREnable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO EMLMR\"), LmTools.fmt_bool(d.get(\"EMLMREnable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO STR\"), LmTools.fmt_bool(d.get(\"STREnable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MLO Split MLD Mode\"), d.get(\"SplitMLDMode\"))\n\n        # Wifi interfaces\n        try:\n            b, w, d = self._api._intf.get_wifi_mibs()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Wifi\"), \"NeMo.Intf.lan:getMIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            for s in intf_list:\n                if s[\"Type\"] != \"wif\":\n                    continue\n                i = self.add_title_line(self._livebox_alist, i, s[\"Name\"])\n\n                # Get Wifi interface key in wlanradio list\n                intf_key = None\n                base = b.get(s[\"Key\"])\n                if base is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Enabled\"), LmTools.fmt_bool(base.get(\"Enable\")))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(base.get(\"Status\")))\n                    low_level_intf = base.get(\"LLIntf\")\n                    if low_level_intf is not None:\n                        intf_key = next(iter(low_level_intf))\n\n                q = w.get(intf_key) if intf_key is not None else None\n                r = d.get(s[\"Key\"])\n                if (q is None) or (r is None):\n                    continue\n\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Radio Status\"), q.get(\"RadioStatus\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"VAP Status\"), r.get(\"VAPStatus\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Vendor Name\"), LmTools.fmt_str_upper(q.get(\"VendorName\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MAC Address\"), LmTools.fmt_str_upper(r.get(\"MACAddress\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"SSID\"), r.get(\"SSID\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"SSID Advertisement\"), LmTools.fmt_bool(r.get(\"SSIDAdvertisementEnabled\")))\n\n                t = r.get(\"Security\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Security Mode\"), t.get(\"ModeEnabled\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WEP Key\"), t.get(\"WEPKey\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"PreShared Key\"), t.get(\"PreSharedKey\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Key Pass Phrase\"), t.get(\"KeyPassPhrase\"))\n\n                t = r.get(\"WPS\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Enabled\"), LmTools.fmt_bool(t.get(\"Enable\")))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Methods\"), t.get(\"ConfigMethodsEnabled\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Self PIN\"), t.get(\"SelfPIN\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Pairing In Progress\"), LmTools.fmt_bool(t.get(\"PairingInProgress\")))\n\n                t = r.get(\"MACFiltering\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"MAC Filtering\"), t.get(\"Mode\"))\n\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Bitrate\"), LmTools.fmt_int(q.get(\"MaxBitRate\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"AP Mode\"), LmTools.fmt_bool(q.get(\"AP_Mode\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"STA Mode\"), LmTools.fmt_bool(q.get(\"STA_Mode\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"WDS Mode\"), LmTools.fmt_bool(q.get(\"WDS_Mode\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"WET Mode\"), LmTools.fmt_bool(q.get(\"WET_Mode\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Frequency Band\"), q.get(\"OperatingFrequencyBand\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Channel Bandwidth\"), q.get(\"CurrentOperatingChannelBandwidth\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Standard\"), q.get(\"OperatingStandards\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Channel\"), LmTools.fmt_int(q.get(\"Channel\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Auto Channel Supported\"), LmTools.fmt_bool(q.get(\"AutoChannelSupported\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Auto Channel Enabled\"), LmTools.fmt_bool(q.get(\"AutoChannelEnable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Channel Change Reason\"), q.get(\"ChannelChangeReason\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Associated Devices\"), LmTools.fmt_int(q.get(\"MaxAssociatedDevices\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Active Associated Devices\"), LmTools.fmt_int(q.get(\"ActiveAssociatedDevices\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Noise\"), LmTools.fmt_int(q.get(\"Noise\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Antenna Defect\"), LmTools.fmt_bool(q.get(\"AntennaDefect\")))\n\n        try:\n            b, w, d = self._api._intf.get_wifi_mibs(True)\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Wifi\"), \"NeMo.Intf.guest:getMIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            for s in intf_list:\n                if s[\"Type\"] != \"wig\":\n                    continue\n                i = self.add_title_line(self._livebox_alist, i, s[\"Name\"])\n\n                base = b.get(s[\"Key\"])\n                if base is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Enabled\"), LmTools.fmt_bool(base.get(\"Enable\")))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(base.get(\"Status\")))\n\n                r = d.get(s[\"Key\"])\n                if r is None:\n                    continue\n\n                i = self.add_info_line(self._livebox_alist, i, lx(\"VAP Status\"), r.get(\"VAPStatus\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"MAC Address\"), LmTools.fmt_str_upper(r.get(\"MACAddress\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"SSID\"), r.get(\"SSID\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"SSID Advertisement\"), LmTools.fmt_bool(r.get(\"SSIDAdvertisementEnabled\")))\n\n                t = r.get(\"Security\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Security Mode\"), t.get(\"ModeEnabled\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WEP Key\"), t.get(\"WEPKey\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"PreShared Key\"), t.get(\"PreSharedKey\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Key Pass Phrase\"), t.get(\"KeyPassPhrase\"))\n\n                t = r.get(\"WPS\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Enabled\"), LmTools.fmt_bool(t.get(\"Enable\")))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Methods\"), t.get(\"ConfigMethodsEnabled\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Self PIN\"), t.get(\"SelfPIN\"))\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"WPS Pairing In Progress\"), LmTools.fmt_bool(t.get(\"PairingInProgress\")))\n\n                t = r.get(\"MACFiltering\")\n                if t is not None:\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"MAC Filtering\"), t.get(\"Mode\"))\n\n        return i\n\n\n    ### Load LAN infos\n    def load_lan_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"LAN Information\"))\n\n        try:\n            d = self._api._dhcp.get_info(\"default\")\n        except Exception as e:\n            LmTools.error(str(e))\n            d = None\n        else:\n            d = d.get(\"default\")\n        if d is None:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4\"), \"DHCPv4.Server:getDHCPServerPool query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 Enabled\"), LmTools.fmt_bool(d.get(\"Enable\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 Status\"), d.get(\"Status\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 Gateway\"), d.get(\"Server\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Subnet Mask\"), d.get(\"SubnetMask\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 Start\"), d.get(\"MinAddress\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 End\"), d.get(\"MaxAddress\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv4 Lease Time\"), LmTools.fmt_time(d.get(\"LeaseTime\")))\n\n        try:\n            d = self._api._dhcp.get_v6_server_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv6\"), \"DHCPv6.Server:getDHCPv6ServerStatus query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"DHCPv6 Status\"), d)\n\n        try:\n            b, d = self._api._intf.get_eth_mibs()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"LAN\"), \"NeMo.Intf.lan:getMIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            for s in self._api._intf.get_list():\n                if s[\"Type\"] != \"eth\":\n                    continue\n                i = self.add_title_line(self._livebox_alist, i, s[\"Name\"])\n\n                q = b.get(s[\"Key\"])\n                r = d.get(s[\"Key\"])\n                if (q is None) or (r is None):\n                    continue\n\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Enabled\"), LmTools.fmt_bool(q.get(\"Enable\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(q.get(\"Status\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Current Bit Rate\"), LmTools.fmt_int(r.get(\"CurrentBitRate\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Bit Rate Supported\"), LmTools.fmt_int(r.get(\"MaxBitRateSupported\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Current Duplex Mode\"), r.get(\"CurrentDuplexMode\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Power Saving Supported\"), LmTools.fmt_bool(q.get(\"PowerSavingSupported\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Power Saving Enabled\"), LmTools.fmt_bool(q.get(\"PowerSavingEnabled\")))\n\n        return i\n\n\n    ### Load ONT infos\n    def load_ont_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"ONT Information\"))\n\n        # Call SFP module for LB4\n        if self._api._info.get_model() == 4:\n            try:\n                d = self._api._intf.get_sfp_info()\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"ONT\"), \"SFP:get query error\", LmQtTools.ValQual.Error)\n            else:\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Status\"), d.get(\"Status\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Connection Status\"), LmTools.fmt_bool(d.get(\"ONTReady\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"SFP Status\"), LmTools.fmt_int(d.get(\"DeviceState\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Operating State\"), LmTools.fmt_int(d.get(\"OperatingState\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Orange\"), LmTools.fmt_bool(d.get(\"Orange\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Serial Number\"), d.get(\"SerialNumber\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Registration ID\"), d.get(\"RegistrationID\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Local Registration ID\"), d.get(\"LocalRegistrationID\"))\n                v = d.get(\"OpticalSignalLevel\")\n                if v is not None:\n                    v /= 1000\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Signal RxPower\"), str(v) + \" dBm\")\n                v = d.get(\"TransmitOpticalLevel\")\n                if v is not None:\n                    v /= 1000\n                    i = self.add_info_line(self._livebox_alist, i, lx(\"Signal TxPower\"), str(v) + \" dBm\")\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Temperature\"), LmTools.fmt_int(d.get(\"ChipsetTemperature\")) + \"°\")\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Model Name\"), d.get(\"ModelName\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Manufacturer\"), d.get(\"Manufacturer\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Hardware Version\"), d.get(\"HardwareVersion\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Firmware 1 Version\"), d.get(\"Software1Version\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Firmware 1 State\"), LmTools.fmt_int(d.get(\"Software1Status\")))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Firmware 2 Version\"), d.get(\"Software2Version\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Firmware 2 State\"), LmTools.fmt_int(d.get(\"Software2Status\")))\n            return i\n\n        # Get ONT info\n        try:\n            d = self._api._intf.get_ont_mibs()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"ONT\"), \"ONT MIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"VEIP PPTP UNI\"), LmTools.fmt_bool(d.get(\"VeipPptpUni\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"OMCI Is Tm Owner\"), LmTools.fmt_bool(d.get(\"OmciIsTmOwner\")))\n            v = d.get(\"MaxBitRateSupported\")\n            if v is not None:\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Bit Rate Supported\"), str(v / 1000) + \" Gbps\")\n\n            v = d.get(\"SignalRxPower\")\n            if v is not None:\n                v /= 1000\n                if self._link_type == \"XGS-PON\":\n                    if (v < -28.0) or (v > -9.0):\n                        aQual = LmQtTools.ValQual.Error\n                    elif (v < -24.0) or (v > -13.0):\n                        aQual = LmQtTools.ValQual.Warn\n                    else:\n                        aQual = LmQtTools.ValQual.Good                    \n                else:\n                    if (v < -30.0) or (v > -8.0):\n                        aQual = LmQtTools.ValQual.Error\n                    elif (v < -26.0) or (v > -12.0):\n                        aQual = LmQtTools.ValQual.Warn\n                    else:\n                        aQual = LmQtTools.ValQual.Good\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Signal RxPower\"), str(v) + \" dBm\", aQual)\n\n            v = d.get(\"SignalTxPower\")\n            if v is not None:\n                v /= 1000\n                if self._link_type == \"XGS-PON\":\n                    if (v < 4.0) or (v > 9.0):\n                        aQual = LmQtTools.ValQual.Error\n                    elif (v < 4.5) or (v > 8.5):\n                        aQual = LmQtTools.ValQual.Warn\n                    else:\n                        aQual = LmQtTools.ValQual.Good\n                else:\n                    if (v < 0.5) or (v > 5.0):\n                        aQual = LmQtTools.ValQual.Error\n                    elif (v < 1.0) or (v > 4.5):\n                        aQual = LmQtTools.ValQual.Warn\n                    else:\n                        aQual = LmQtTools.ValQual.Good\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Signal TxPower\"), str(v) + \" dBm\", aQual)\n\n            v = d.get(\"Temperature\")\n            if v is not None:\n                if (v < -40) or (v > 100):\n                    aQual = LmQtTools.ValQual.Error\n                elif (v < -10) or (v > 70):\n                    aQual = LmQtTools.ValQual.Warn\n                else:\n                    aQual = LmQtTools.ValQual.Good\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Temperature\"), str(v) + \"°\", aQual)\n\n            v = d.get(\"Voltage\")\n            if v is not None:\n                v /= 10000\n                if (v < 3.0) or (v > 3.5):\n                    aQual = LmQtTools.ValQual.Error\n                elif (v < 3.1) or (v > 3.4):\n                    aQual = LmQtTools.ValQual.Warn\n                else:\n                    aQual = LmQtTools.ValQual.Good\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Voltage\"), str(round(v, 2)) + \" V\", aQual)\n\n            v = d.get(\"Bias\")\n            if v is not None:\n                if self._api._info.get_model() >= 6:\n                    v /= 10000\n                if (v < 0) or (v > 150):\n                    aQual = LmQtTools.ValQual.Error\n                elif v > 75:\n                    aQual = LmQtTools.ValQual.Warn\n                else:\n                    aQual = LmQtTools.ValQual.Good\n                i = self.add_info_line(self._livebox_alist, i, lx(\"BIAS\"), str(v) + \" mA\", aQual)\n\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Serial Number\"), d.get(\"SerialNumber\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Hardware Version\"), d.get(\"HardwareVersion\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Equipment ID\"), d.get(\"EquipmentId\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Vendor ID\"), d.get(\"VendorId\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Vendor Product Code\"), LmTools.fmt_int(d.get(\"VendorProductCode\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Pon ID\"), d.get(\"PonId\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Registration ID\"), d.get(\"RegistrationID\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"ONT Software Version 0\"), d.get(\"ONTSoftwareVersion0\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"ONT Software Version 1\"), d.get(\"ONTSoftwareVersion1\"))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"ONT Software Version Active\"), LmTools.fmt_int(d.get(\"ONTSoftwareVersionActive\")))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"ONU State\"), d.get(\"ONUState\"))\n            rate = d.get(\"DownstreamMaxRate\")\n            if rate is not None:\n                rate *= 1024\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Down Bit Rate\"), LmTools.fmt_bytes(rate))\n            rate = d.get(\"UpstreamMaxRate\")\n            if rate is not None:\n                rate *= 1024\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Max Up Bit Rate\"), LmTools.fmt_bytes(rate))\n            rate = d.get(\"DownstreamCurrRate\")\n            if rate is not None:\n                rate *= 1024\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Current Down Bit Rate\"), LmTools.fmt_bytes(rate))\n            rate = d.get(\"UpstreamCurrRate\")\n            if rate is not None:\n                rate *= 1024\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Current Up Bit Rate\"), LmTools.fmt_bytes(rate))\n\n        return i\n\n\n    ### Load VoIP infos\n    def load_voip_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"VoIP Information\"))\n\n        try:\n            d = self._api._voip.get_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"VoIP\"), \"VoiceService.VoiceApplication:listTrunks query error\", LmQtTools.ValQual.Error)\n        else:\n            for q in d:\n                i = self.add_info_line(self._livebox_alist, i, lx(\"VoIP Enabled\"), q.get(\"enable\"))\n                i = self.add_info_line(self._livebox_alist, i, lx(\"Protocol\"), q.get(\"signalingProtocol\"))\n                aLines = q.get(\"trunk_lines\")\n                if aLines is not None:\n                    for l in aLines:\n                        aName = l.get(\"name\", \"Line\")\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"{} Enabled\").format(aName), l.get(\"enable\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"{} Status\").format(aName), l.get(\"status\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"{} Status Info\").format(aName), l.get(\"statusInfo\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"{} Number\").format(aName), l.get(\"directoryNumber\"))\n\n        # No DECT from Livebox 6\n        if self._api._info.get_model() >= 6:\n            return i\n\n        i = self.add_title_line(self._livebox_alist, i, lx(\"DECT Information\"))\n\n        try:\n            d = self._api._voip.get_dect_name()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Name\"), \"DECT:getName query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Name\"), d)\n\n        try:\n            d = self._api._voip.get_dect_pin()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"PIN\"), \"DECT:getPIN query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"PIN\"), d)\n\n        try:\n            d = self._api._voip.get_dect_rfpi()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"RFPI\"), \"DECT:getRFPI query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"RFPI\"), d)\n\n        try:\n            d = self._api._voip.get_dect_software_version()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Software Version\"), \"DECT:getVersion query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Software Version\"), d)\n\n        try:\n            d = self._api._voip.get_dect_catiq_version()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"CAT-iq Version\"), \"DECT:getStandardVersion query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"CAT-iq Version\"), d)\n\n        try:\n            d = self._api._voip.get_dect_pairing_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Pairing Status\"), \"DECT:getPairingStatus query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Pairing Status\"), d)\n\n        try:\n            d = self._api._voip.get_dect_radio_state()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Radio State\"), \"DECT:getRadioState query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Radio State\"), LmTools.fmt_bool(d))\n\n        try:\n            d = self._api._voip.get_dect_repeater_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Repeater Status\"), \"DECT.Repeater:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Repeater Status\"), d.get(\"Status\"))\n\n        return i\n\n\n    ### Load IPTV infos\n    def load_iptv_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"IPTV Information\"))\n\n        try:\n            d = self._api._iptv.get_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPTV Status\"), \"NMC.OrangeTV:getIPTVStatus query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPTV Status\"), d)\n\n        try:\n            d = self._api._iptv.get_multi_screens_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Multi Screens Status\"), \"NMC.OrangeTV:getIPTVMultiScreens query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(self._livebox_alist, i, lx(\"Multi Screens Status\"), lx(\"Available\") if d else lx(\"Disabled\"))\n\n        try:\n            d = self._api._iptv.get_config()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"IPTV Config\"), \"NMC.OrangeTV:IPTVConfig query error\", LmQtTools.ValQual.Error)\n        else:\n            for q in d:\n                names_str = \", \".join(q.get(\"ChannelFlags\", \"\").split())\n\n                status = q.get(\"ChannelStatus\", False)\n                value = lx(\"Available\") if status else lx(\"Disabled\")\n\n                channel_type = q.get(\"ChannelType\")\n                if channel_type is not None:\n                    value += f\" - {channel_type}\"\n                    channel_number = q.get(\"ChannelNumber\")\n                    if channel_number is not None:\n                        value += f\" : {channel_number}\"\n\n                i = self.add_info_line(self._livebox_alist, i, names_str, value)\n\n        return i\n\n\n    ### Load USB infos\n    def load_usb_info(self, index=0):\n        i = self.add_title_line(self._livebox_alist, index, lx(\"USB Information\"))\n\n        try:\n            d = self._api._device.get_usb()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(self._livebox_alist, i, lx(\"USB\"), \"Devices:get query error\", LmQtTools.ValQual.Error)\n        else:\n            for q in d:\n                source = q.get(\"DiscoverySource\")\n                match source:\n                    case \"selfusb\":\n                        active = lx(\"Active\") if q.get(\"Active\", False) else lx(\"Inactive\")\n                        i = self.add_info_line(self._livebox_alist, i, q.get(\"Name\", lx(\"Unknown USB\")), active)\n\n                    case \"usb_storage\":\n                        i = self.add_title_line(self._livebox_alist, i, lx(\"USB Device Storage\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Key\"), q.get(\"Key\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Device Type\"), q.get(\"DeviceType\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(q.get(\"Active\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"First Seen\"), LmTools.fmt_livebox_timestamp(q.get(\"FirstSeen\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Last Connection\"), LmTools.fmt_livebox_timestamp(q.get(\"LastConnection\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"File System\"), q.get(\"FileSystem\"))\n                        n = q.get(\"Capacity\")\n                        if n is not None:\n                            n *= 1024 * 1024\n                            i = self.add_info_line(self._livebox_alist, i, lx(\"Capacity\"), LmTools.fmt_bytes(n))\n                        n = q.get(\"UsedSpace\")\n                        if n is not None:\n                            n *= 1024 * 1024\n                            i = self.add_info_line(self._livebox_alist, i, lx(\"Used Space\"), LmTools.fmt_bytes(n))\n\n                        names = q.get(\"Names\")\n                        if names:\n                            name_list = \", \".join((n.get(\"Name\", \"\") for n in names))\n                            i = self.add_info_line(self._livebox_alist, i, lx(\"Names\"), name_list)\n\n                    case \"usb_dev\":\n                        i = self.add_title_line(self._livebox_alist, i, lx(\"USB Device\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Name\"), q.get(\"Name\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Device Type\"), q.get(\"DeviceType\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Active\"), LmTools.fmt_bool(q.get(\"Active\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Last Connection\"), LmTools.fmt_livebox_timestamp(q.get(\"LastConnection\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Location\"), q.get(\"Location\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Owner\"), q.get(\"Owner\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"USB Version\"), q.get(\"USBVersion\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Device Version\"), LmTools.fmt_int(q.get(\"DeviceVersion\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Product ID\"), LmTools.fmt_int(q.get(\"ProductID\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Vendor ID\"), LmTools.fmt_int(q.get(\"VendorID\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Manufacturer\"), q.get(\"Manufacturer\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Serial Number\"), q.get(\"SerialNumber\"))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Port\"), LmTools.fmt_int(q.get(\"Port\")))\n                        i = self.add_info_line(self._livebox_alist, i, lx(\"Rate\"), q.get(\"Rate\"))\n\n        return i\n\n\n\n# ############# Livebox global stats collector thread #############\nclass LiveboxStatsThread(LmThread):\n    _stats_received = QtCore.pyqtSignal(dict)\n    _resume = QtCore.pyqtSignal()\n\n    def __init__(self, api):\n        super().__init__(api, LmConf.StatsFrequency)\n\n\n    def connect_processor(self, processor):\n        self._stats_received.connect(processor)\n\n\n    def task(self):\n        # WARNING counters are recycling at 4Gb only:\n        for s in self._api._intf.get_list():\n            if not s.get(\"StatsErr\", False):\n                try:\n                    d = self._api._stats.get_intf(s[\"Key\"])\n                except Exception as e:\n                    LmTools.error(str(e))\n                    s[\"StatsErr\"] = True\n                else:\n                    if isinstance(d, dict):\n                        e = {\"Key\": s[\"Key\"],\n                             \"Source\": \"nds\",     # NetDevStats\n                             \"Timestamp\": datetime.datetime.now()}\n                        if s[\"SwapStats\"]:\n                            e[\"RxBytes\"] = d.get(\"TxBytes\", 0)\n                            e[\"TxBytes\"] = d.get(\"RxBytes\", 0)\n                            e[\"RxErrors\"] = d.get(\"TxErrors\", 0)\n                            e[\"TxErrors\"] = d.get(\"RxErrors\", 0)\n                        else:\n                            e[\"RxBytes\"] = d.get(\"RxBytes\", 0)\n                            e[\"TxBytes\"] = d.get(\"TxBytes\", 0)\n                            e[\"RxErrors\"] = d.get(\"RxErrors\", 0)\n                            e[\"TxErrors\"] = d.get(\"TxErrors\", 0)\n                        self._stats_received.emit(e)\n\n\n'''\n        # EXPERIMENTAL - not successful:\n        # - HomeLan:getWANCounters generates wrong HomeLan veip0 stats events\n        # - HomeLan events do not cover all interfaces -> need to keep getNetDevStats()\n        for s in self._api._intf.get_list():\n            if s[\"Type\"] == \"wan\":\n                stats = self._api._stats.get_wan_counters()    # WARNING: Works but generates wrong HomeLan veip0 stats events\n                if isinstance(stats, dict):\n                    e = {}\n                    e[\"Key\"] = s[\"Key\"]\n                    e[\"Timestamp\"] = datetime.datetime.now()        # WARNING - can use timestamp coming from stat itself\n                    if s[\"SwapStats\"]:\n                        e[\"RxBytes\"] = stats.get(\"BytesSent\", 0)\n                        e[\"TxBytes\"] = stats.get(\"BytesReceived\", 0)\n                        e[\"RxErrors\"] = 0\n                        e[\"TxErrors\"] = 0\n                    else:\n                        e[\"RxBytes\"] = stats.get(\"BytesReceived\", 0)\n                        e[\"TxBytes\"] = stats.get(\"BytesSent\", 0)\n                        e[\"RxErrors\"] = 0\n                        e[\"TxErrors\"] = 0\n                    self._stats_received.emit(e)\n                break\n\n'''\n\n'''\n        # EXPERIMENTAL - not successful:\n        # - Stats are not real time, not relevant.\n        # - Counters look 64bits but are recycling chaotically, after 512Gb, or 3Gb, ...\n        for s in self._api._intf.get_list():\n            if s[\"Type\"] == \"wan\":\n                stats = self._api._stats.get_wan_counters()\n            else:\n                stats = self._api._stats.get_intf_counters(s[\"Key\"])\n            if isinstance(stats, dict):\n                e = {}\n                e[\"Key\"] = s[\"Key\"]\n                e[\"Timestamp\"] = datetime.datetime.now()\n                if s[\"SwapStats\"]:\n                    e[\"RxBytes\"] = stats.get(\"BytesSent\", 0)\n                    e[\"TxBytes\"] = stats.get(\"BytesReceived\", 0)\n                    e[\"RxErrors\"] = 0\n                    e[\"TxErrors\"] = 0\n                else:\n                    e[\"RxBytes\"] = stats.get(\"BytesReceived\", 0)\n                    e[\"TxBytes\"] = stats.get(\"BytesSent\", 0)\n                    e[\"RxErrors\"] = 0\n                    e[\"TxErrors\"] = 0\n                self._stats_received.emit(e)\n'''\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmNatPatTab.py",
    "content": "### Livebox Monitor NAT/PAT tab module ###\n\nimport json\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig, LmPatPtf\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, NumericSortItem, CenteredIconsDelegate\nfrom LiveboxMonitor.dlg.LmPatRule import PatRuleDialog\nfrom LiveboxMonitor.dlg.LmPtfRule import PtfRuleDialog\nfrom LiveboxMonitor.dlg.LmNatPatRuleType import NatPatRuleTypeDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_nat_pat_label as lx, get_nat_pat_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\nfrom LiveboxMonitor.__init__ import __build__\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"natPatTab\"\n\n# List columns\nclass PatCol(IntEnum):\n    Key = 0\n    Enabled = 1\n    Type = 2\n    ID = 3\n    Description = 4\n    Protocols = 5\n    IntPort = 6\n    ExtPort = 7\n    Device = 8\n    DestIP = 9\n    ExtIPs = 10\nPAT_ICON_COLUMNS = [PatCol.Enabled]\n\nclass PtfCol(IntEnum):\n    Key = 0\n    Enabled = 1\n    Type = 2\n    ID = 3\n    Description = 4\n    Protocols = 5\n    Device = 6\n    DestIP = 7\n    ExtIPs = 8\nPTF_ICON_COLUMNS = [PtfCol.Enabled]\n\n\n\n# ################################ LmNatPat class ################################\nclass LmNatPat:\n\n    ### Create NAT/PAT tab\n    def create_nat_pat_tab(self):\n        self._nat_pat_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # PAT - port forwarding list\n        self._pat_list = LmTableWidget(objectName=\"patList\")\n        self._pat_list.set_columns({PatCol.Key: [\"Key\", 0, None],\n                                    PatCol.Enabled: [lx(\"A\"), 10, \"plist_Enabled\"],\n                                    PatCol.Type: [lx(\"Type\"), 55, \"plist_Type\"],\n                                    PatCol.ID: [lx(\"Name\"), 120, \"plist_ID\"],\n                                    PatCol.Description: [lx(\"Port Forwarding Rule Description\"), 400, \"plist_Description\"],\n                                    PatCol.Protocols: [lx(\"Protocols\"), 70, \"plist_Protocols\"],\n                                    PatCol.IntPort: [lx(\"Internal Port\"), 95, \"plist_IntPort\"],\n                                    PatCol.ExtPort: [lx(\"External Port\"), 95, \"plist_ExtPort\"],\n                                    PatCol.Device: [lx(\"Device\"), 180, \"plist_Device\"],\n                                    PatCol.DestIP: [\"DestIP\", 0, None],\n                                    PatCol.ExtIPs: [lx(\"External IPs\"), 250, \"plist_ExtIPs\"]})\n        self._pat_list.set_header_resize([PatCol.Description])\n        self._pat_list.set_standard_setup(self)\n        self._pat_list.setItemDelegate(CenteredIconsDelegate(self, PAT_ICON_COLUMNS))\n        self._pat_list.itemSelectionChanged.connect(self.pat_list_click)\n        self._pat_list.doubleClicked.connect(self.edit_pat_rule_button_click)\n\n        # PAT - port forwarding button bar\n        pat_buttons_box = QtWidgets.QHBoxLayout()\n        pat_buttons_box.setSpacing(30)\n        refresh_pat_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshPat\")\n        refresh_pat_button.clicked.connect(self.refresh_pat_button_click)\n        pat_buttons_box.addWidget(refresh_pat_button)\n        self._pat_enable_button = QtWidgets.QPushButton(lx(\"Enable\"), objectName=\"enablePat\")\n        self._pat_enable_button.clicked.connect(self.enable_pat_button_click)\n        pat_buttons_box.addWidget(self._pat_enable_button)\n        add_rule_button = QtWidgets.QPushButton(lx(\"Add...\"), objectName=\"addPat\")\n        add_rule_button.clicked.connect(self.add_pat_rule_button_click)\n        pat_buttons_box.addWidget(add_rule_button)\n        self._pat_edit_rule_button = QtWidgets.QPushButton(lx(\"Edit...\"), objectName=\"editPat\")\n        self._pat_edit_rule_button.clicked.connect(self.edit_pat_rule_button_click)\n        pat_buttons_box.addWidget(self._pat_edit_rule_button)\n        self._pat_del_rule_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"deletePat\")\n        self._pat_del_rule_button.clicked.connect(self.del_pat_rule_button_click)\n        pat_buttons_box.addWidget(self._pat_del_rule_button)\n        del_all_rules_button = QtWidgets.QPushButton(lx(\"Delete All...\"), objectName=\"deleteAllPat\")\n        del_all_rules_button.clicked.connect(self.del_all_pat_rules_button_click)\n        pat_buttons_box.addWidget(del_all_rules_button)\n        export_pat_rules_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"exportPat\")\n        export_pat_rules_button.clicked.connect(self.export_pat_rules_button_click)\n        pat_buttons_box.addWidget(export_pat_rules_button)\n        import_pat_rules_button = QtWidgets.QPushButton(lx(\"Import...\"), objectName=\"importPat\")\n        import_pat_rules_button.clicked.connect(self.import_pat_rules_button_click)\n        pat_buttons_box.addWidget(import_pat_rules_button)\n\n        # PTF - Layer 3 protocol forwarding list\n        self._ptf_list = LmTableWidget(objectName=\"ptfList\")\n        self._ptf_list.set_columns({PtfCol.Key: [\"Key\", 0, None],\n                                    PtfCol.Enabled: [lx(\"A\"), 10, \"tlist_Enabled\"],\n                                    PtfCol.Type: [lx(\"Type\"), 55, \"tlist_Type\"],\n                                    PtfCol.ID: [lx(\"Name\"), 120, \"tlist_ID\"],\n                                    PtfCol.Description: [lx(\"Protocol Forwarding Rule Description\"), 360, \"tlist_Description\"],\n                                    PtfCol.Protocols: [lx(\"Protocols\"), 180, \"tlist_Protocols\"],\n                                    PtfCol.Device: [lx(\"Device\"), 220, \"tlist_Device\"],\n                                    PtfCol.DestIP: [\"DestIP\", 0, None],\n                                    PtfCol.ExtIPs: [lx(\"External IPs\"), 250, \"tlist_ExtIPs\"]})\n        self._ptf_list.set_header_resize([PtfCol.Description])\n        self._ptf_list.set_standard_setup(self)\n        self._ptf_list.setItemDelegate(CenteredIconsDelegate(self, PTF_ICON_COLUMNS))\n        self._ptf_list.itemSelectionChanged.connect(self.ptf_list_click)\n        self._ptf_list.doubleClicked.connect(self.edit_ptf_rule_button_click)\n        list_size = LmConfig.table_height(5)\n        self._ptf_list.setMinimumHeight(list_size)\n        self._ptf_list.setMaximumHeight(list_size)\n\n        # PTF - Layer 3 protocol forwarding button bar\n        ptf_buttons_box = QtWidgets.QHBoxLayout()\n        ptf_buttons_box.setSpacing(30)\n        refresh_ptf_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshPtf\")\n        refresh_ptf_button.clicked.connect(self.refresh_ptf_button_click)\n        ptf_buttons_box.addWidget(refresh_ptf_button)\n        self._ptf_enable_button = QtWidgets.QPushButton(lx(\"Enable\"), objectName=\"enablePtf\")\n        self._ptf_enable_button.clicked.connect(self.enable_ptf_button_click)\n        ptf_buttons_box.addWidget(self._ptf_enable_button)\n        add_rule_button = QtWidgets.QPushButton(lx(\"Add...\"), objectName=\"addPtf\")\n        add_rule_button.clicked.connect(self.add_ptf_rule_button_click)\n        ptf_buttons_box.addWidget(add_rule_button)\n        self._ptf_edit_rule_button = QtWidgets.QPushButton(lx(\"Edit...\"), objectName=\"editPtf\")\n        self._ptf_edit_rule_button.clicked.connect(self.edit_ptf_rule_button_click)\n        ptf_buttons_box.addWidget(self._ptf_edit_rule_button)\n        self._ptf_del_rule_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"deletePtf\")\n        self._ptf_del_rule_button.clicked.connect(self.del_ptf_rule_button_click)\n        ptf_buttons_box.addWidget(self._ptf_del_rule_button)\n        del_all_rules_button = QtWidgets.QPushButton(lx(\"Delete All...\"), objectName=\"deleteAllPtf\")\n        del_all_rules_button.clicked.connect(self.del_all_ptf_rules_button_click)\n        ptf_buttons_box.addWidget(del_all_rules_button)\n        export_ptf_rules_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"exportPtf\")\n        export_ptf_rules_button.clicked.connect(self.export_ptf_rules_button_click)\n        ptf_buttons_box.addWidget(export_ptf_rules_button)\n        import_ptf_rules_button = QtWidgets.QPushButton(lx(\"Import...\"), objectName=\"importPtf\")\n        import_ptf_rules_button.clicked.connect(self.import_ptf_rules_button_click)\n        ptf_buttons_box.addWidget(import_ptf_rules_button)\n\n        # Layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addWidget(self._pat_list, 1)\n        vbox.addLayout(pat_buttons_box, 0)\n        vbox.insertSpacing(-1, 3)\n        vbox.addWidget(separator)\n        vbox.insertSpacing(-1, 3)\n        vbox.addWidget(self._ptf_list, 0)\n        vbox.addLayout(ptf_buttons_box, 0)\n        self._nat_pat_tab.setLayout(vbox)\n\n        LmConfig.set_tooltips(self._nat_pat_tab, \"natpat\")\n        self._tab_widget.addTab(self._nat_pat_tab, lx(\"NAT/PAT\"))\n\n        # Init context\n        self.nat_pat_tab_init()\n\n\n    ### Init NAT/PAT tab context\n    def nat_pat_tab_init(self):\n        self._nat_pat_data_loaded = False\n        self._protocol_numbers = {}\n\n\n    ### Click on NAT/PAT tab\n    def nat_pat_tab_click(self):\n        if not self._nat_pat_data_loaded:\n            self._nat_pat_data_loaded = True       # Must be first to avoid reentrency during tab drag&drop\n            self.load_protocol_numbers()\n            self.load_device_ip_name_map()\n            self.load_pat_rules()\n            self.load_ptf_rules()\n\n\n    ### Click on PAT list item\n    def pat_list_click(self):\n        current_selection = self._pat_list.currentRow()\n        if current_selection >= 0:\n            self._pat_enable_button.setEnabled(True)\n            self._pat_edit_rule_button.setEnabled(True)\n            self._pat_del_rule_button.setEnabled(True)\n            enable = self._pat_list.item(current_selection, PatCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole)\n            self._pat_enable_button.setText(lx(\"Disable\") if enable else lx(\"Enable\"))\n        else:\n            self._pat_enable_button.setEnabled(False)\n            self._pat_edit_rule_button.setEnabled(False)\n            self._pat_del_rule_button.setEnabled(False)\n\n\n    ### Click on refresh PAT rules button\n    def refresh_pat_button_click(self):\n        self.refresh_pat_list()\n\n\n    ### Click on enable/disable PAT rule button\n    def enable_pat_button_click(self):\n        r = self.get_selected_pat_rule()\n        if r:\n            r[\"Enable\"] = not r[\"Enable\"]\n            self._task.start(lx(\"Saving rule...\"))\n            try:\n                if self.save_pat_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    i = self._pat_list.currentRow()\n                    self._pat_list.setItem(i, PatCol.Enabled, self.format_active_table_widget(r[\"Enable\"]))\n                    self.pat_list_click()\n            finally:\n                self._task.end()\n\n\n    ### Click on add PAT rule button\n    def add_pat_rule_button_click(self):\n        dialog = PatRuleDialog(None, self)\n        if dialog.exec():\n            self._task.start(lx(\"Saving rule...\"))\n            try:\n                r = dialog.get_rule()\n                if self.save_pat_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    self.refresh_pat_list()\n            finally:\n                self._task.end()\n\n\n    ### Click on edit PAT rule button\n    def edit_pat_rule_button_click(self):\n        rule = self.get_selected_pat_rule()\n        if rule:\n            dialog = PatRuleDialog(rule, self)\n            if dialog.exec():\n                self._task.start(lx(\"Saving rule...\"))\n                try:\n                    new_rule = dialog.get_rule()\n\n                    # Delete old rule if ID or type changed\n                    if (rule[\"Name\"] != new_rule[\"Name\"]) or (rule[\"Type\"] != new_rule[\"Type\"]):\n                        self.del_pat_rule(rule)\n\n                    # Then save new one\n                    if self.save_pat_rule(new_rule):\n                        self.commit_nat_pat_rule_change()\n                    self.refresh_pat_list()\n                finally:\n                    self._task.end()\n\n\n    ### Click on delete PAT rule rules button\n    def del_pat_rule_button_click(self):\n        r = self.get_selected_pat_rule()\n        if r:\n            self._task.start(lx(\"Deleting rule...\"))\n            try:\n                if self.del_pat_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    self.refresh_pat_list()\n            finally:\n                self._task.end()\n\n\n    ### Click on delete all PAT rules button\n    def del_all_pat_rules_button_click(self):\n        dialog = NatPatRuleTypeDialog(True, self)\n        if dialog.exec():\n            self._task.start(lx(\"Deleting rules...\"))\n            try:\n                t = dialog.get_types()\n\n                # Delete all IPv4 rules if selected\n                if t[LmPatPtf.RULE_TYPE_IPv4]:\n                    self.del_all_ipv4_pat_rule(False)\n\n                # Delete all UPnP rules if selected\n                if t[LmPatPtf.RULE_TYPE_UPnP]:\n                    self.del_all_ipv4_pat_rule(True)\n\n                # Delete one by one IPv6 rules if selected\n                if t[LmPatPtf.RULE_TYPE_IPv6]:\n                    for i in range(self._pat_list.rowCount()):\n                        r = self.get_pat_rule_from_list(i)\n                        if r and (r[\"Type\"] == LmPatPtf.RULE_TYPE_IPv6):\n                            self.del_pat_rule(r)\n\n                # Commit & refresh\n                self.commit_nat_pat_rule_change()\n                self.refresh_pat_list()\n            finally:\n                self._task.end()\n\n            self.display_status(mx(\"All selected rule(s) deleted.\", \"delAllPat\"))\n\n\n    ### Click on export PAT rules button\n    def export_pat_rules_button_click(self):\n        dialog = NatPatRuleTypeDialog(True, self)\n        if dialog.exec():\n            t = dialog.get_types()\n\n            file_name = QtWidgets.QFileDialog.getSaveFileName(self, lx(\"Export File\"), lx(\"Port Forwarding Rules\") + \".txt\", \"*.txt\")[0]\n            if not file_name:\n                return\n\n            try:\n                export_file = open(file_name, \"w\")\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n                return\n\n            self._task.start(lx(\"Exporting port forwarding rules...\"))\n            try:\n                c = 0\n                rules = []\n                for i in range(self._pat_list.rowCount()):\n                    r = self.get_pat_rule_from_list(i)\n                    if r and t[r[\"Type\"]]:\n                        rules.append(r)\n                        c += 1\n\n                file = {\"Version\": __build__,\n                        \"Type\": \"PAT\",\n                        \"Rules\": rules}\n                json.dump(file, export_file, indent=4)\n            finally:\n                self._task.end()\n\n            try:\n                export_file.close()\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n            self.display_status(mx(\"{} rule(s) exported.\", \"ruleExport\").format(c))\n\n\n    ### Click on import PAT rules button\n    def import_pat_rules_button_click(self):\n        file_name = QtWidgets.QFileDialog.getOpenFileName(self, lx(\"Select file to import\"), \"\", \"*.txt\")[0]\n        if not file_name:\n            return\n\n        try:\n            import_file = open(file_name, \"r\")\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot open the file.\", \"openFileErr\"))\n            return\n\n        error = False\n        try:\n            file = json.load(import_file)\n        except Exception as e:\n            LmTools.error(f\"Error loading file: {e}\")\n            self.display_error(mx(\"Wrong file format.\", \"fileFormatErr\"))\n            error = True\n\n        if not error:\n            rules = file.get(\"Rules\")\n\n            if (file.get(\"Type\", \"\") != \"PAT\") or (rules is None):\n                self.display_error(mx(\"Wrong file type.\", \"fileTypeErr\"))\n                error = True\n\n        if not error:\n            self._task.start(lx(\"Importing port forwarding rules...\"))\n            try:\n                c = 0\n                for r in rules:\n                    if self.check_pat_rule(r) and self.save_pat_rule(r):\n                        c += 1\n            finally:\n                self._task.end()\n\n        try:\n            import_file.close()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot close the file.\", \"closeFileErr\"))\n\n        if not error:\n            self.commit_nat_pat_rule_change()\n            self.refresh_pat_list()\n\n            self.display_status(mx(\"{} rule(s) imported.\", \"ruleImport\").format(c))\n\n\n    ### Click on PTF list item\n    def ptf_list_click(self):\n        current_selection = self._ptf_list.currentRow()\n        if current_selection >= 0:\n            self._ptf_enable_button.setEnabled(True)\n            self._ptf_edit_rule_button.setEnabled(True)\n            self._ptf_del_rule_button.setEnabled(True)\n            enable = self._ptf_list.item(current_selection, PtfCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole)\n            self._ptf_enable_button.setText(lx(\"Disable\") if enable else lx(\"Enable\"))\n        else:\n            self._ptf_enable_button.setEnabled(False)\n            self._ptf_edit_rule_button.setEnabled(False)\n            self._ptf_del_rule_button.setEnabled(False)\n\n\n    ### Click on refresh PTF rules button\n    def refresh_ptf_button_click(self):\n        self.refresh_ptf_list()\n\n\n    ### Click on enable/disable PTF rule button\n    def enable_ptf_button_click(self):\n        r = self.get_selected_ptf_rule()\n        if r:\n            r[\"Enable\"] = not r[\"Enable\"]\n            self._task.start(lx(\"Saving rule...\"))\n            try:\n                if self.save_ptf_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    i = self._ptf_list.currentRow()\n                    self._ptf_list.setItem(i, PtfCol.Enabled, self.format_active_table_widget(r[\"Enable\"]))\n                    self.ptf_list_click()\n            finally:\n                self._task.end()\n\n\n    ### Click on add PTF rule button\n    def add_ptf_rule_button_click(self):\n        dialog = PtfRuleDialog(None, self)\n        if dialog.exec():\n            self._task.start(lx(\"Saving rule...\"))\n            try:\n                r = dialog.get_rule()\n                if self.save_ptf_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    self.refresh_ptf_list()\n            finally:\n                self._task.end()\n\n\n    ### Click on edit PTF rule button\n    def edit_ptf_rule_button_click(self):\n        rule = self.get_selected_ptf_rule()\n        if rule:\n            dialog = PtfRuleDialog(rule, self)\n            if dialog.exec():\n                self._task.start(lx(\"Saving rule...\"))\n                try:\n                    new_rule = dialog.get_rule()\n\n                    # Delete old rule if ID or type changed\n                    if (rule[\"Name\"] != new_rule[\"Name\"]) or (rule[\"Type\"] != new_rule[\"Type\"]):\n                        self.del_ptf_rule(rule)\n\n                    # Then save new one\n                    if self.save_ptf_rule(new_rule):\n                        self.commit_nat_pat_rule_change()\n                    self.refresh_ptf_list()\n                finally:\n                    self._task.end()\n\n\n    ### Click on delete PTF rule rules button\n    def del_ptf_rule_button_click(self):\n        r = self.get_selected_ptf_rule()\n        if r:\n            self._task.start(lx(\"Deleting rule...\"))\n            try:\n                if self.del_ptf_rule(r):\n                    self.commit_nat_pat_rule_change()\n                    self.refresh_ptf_list()\n            finally:\n                self._task.end()\n\n\n    ### Click on delete all PTF rules button\n    def del_all_ptf_rules_button_click(self):\n        dialog = NatPatRuleTypeDialog(False, self)\n        if dialog.exec():\n            self._task.start(lx(\"Deleting rules...\"))\n            try:\n                t = dialog.get_types()\n                c = 0\n                for i in range(self._ptf_list.rowCount()):\n                    r = self.get_ptf_rule_from_list(i)\n                    if r and t[r[\"Type\"]]:\n                        self.del_ptf_rule(r)\n                        c += 1\n                self.commit_nat_pat_rule_change()\n                self.refresh_ptf_list()\n            finally:\n                self._task.end()\n\n            self.display_status(mx(\"{} rule(s) deleted.\", \"ruleDel\").format(c))\n\n\n    ### Click on export PTF rules button\n    def export_ptf_rules_button_click(self):\n        dialog = NatPatRuleTypeDialog(False, self)\n        if dialog.exec():\n            t = dialog.get_types()\n\n            file_name = QtWidgets.QFileDialog.getSaveFileName(self, lx(\"Export File\"), lx(\"Protocol Forwarding Rules\") + \".txt\", \"*.txt\")[0]\n            if not file_name:\n                return\n\n            try:\n                export_file = open(file_name, \"w\")\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n                return\n\n            self._task.start(lx(\"Exporting protocol forwarding rules...\"))\n            try:\n                c = 0\n                rules = []\n                for i in range(self._ptf_list.rowCount()):\n                    r = self.get_ptf_rule_from_list(i)\n                    if r and t[r[\"Type\"]]:\n                        rules.append(r)\n                        c += 1\n\n                file = {\"Version\": __build__,\n                        \"Type\": \"PTF\",\n                        \"Rules\": rules}\n                json.dump(file, export_file, indent=4)\n            finally:\n                self._task.end()\n\n            try:\n                export_file.close()\n            except Exception as e:\n                LmTools.error(str(e))\n                self.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n            self.display_status(mx(\"{} rule(s) exported.\", \"ruleExport\").format(c))\n\n\n    ### Click on import PTF rules button\n    def import_ptf_rules_button_click(self):\n        file_name = QtWidgets.QFileDialog.getOpenFileName(self, lx(\"Select file to import\"), \"\", \"*.txt\")[0]\n        if not file_name:\n            return\n\n        try:\n            import_file = open(file_name, \"r\")\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot open the file.\", \"openFileErr\"))\n            return\n\n        error = False\n        try:\n            file = json.load(import_file)\n        except Exception as e:\n            LmTools.error(f\"Error loading file: {e}\")\n            self.display_error(mx(\"Wrong file format.\", \"fileFormatErr\"))\n            error = True\n\n        if not error:\n            rules = file.get(\"Rules\", None)\n\n            if (file.get(\"Type\", \"\") != \"PTF\") or (rules is None):\n                self.display_error(mx(\"Wrong file type.\", \"fileTypeErr\"))\n                error = True\n\n        if not error:\n            self._task.start(lx(\"Importing protocol forwarding rules...\"))\n            try:\n                c = 0\n                for r in rules:\n                    if self.check_ptf_rule(r) and self.save_ptf_rule(r):\n                        c += 1\n            finally:\n                self._task.end()\n\n        try:\n            import_file.close()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot close the file.\", \"closeFileErr\"))\n\n        if not error:\n            self.commit_nat_pat_rule_change()\n            self.refresh_ptf_list()\n\n            self.display_status(mx(\"{} rule(s) imported.\", \"ruleImport\").format(c))\n\n\n    ### Load protocol name to number reverse map from number to name\n    def load_protocol_numbers(self):\n       # Build reverse map\n        self._protocol_numbers = {v: k for k, v in LmPatPtf.PROTOCOL_NAMES.items()}\n\n\n    ### Refresh PAT list\n    def refresh_pat_list(self):\n        self._pat_list.clearContents()\n        self._pat_list.setRowCount(0)\n        self.load_device_ip_name_map()\n        self.load_pat_rules()\n\n\n    ### Load PAT rules\n    def load_pat_rules(self):\n        self._task.start(lx(\"Loading port forwarding rules...\"))\n        try:\n            self._pat_list.setSortingEnabled(False)\n\n            # IPv4 types (webui / upnp / others?)\n            self.load_ipv4_pat_rules()\n\n            # IPv6 types\n            self.load_ipv6_pat_rules()\n\n            self._pat_list.sortItems(PatCol.Type, QtCore.Qt.SortOrder.AscendingOrder)\n            self._pat_list.setSortingEnabled(True)\n\n            self._pat_list.setCurrentCell(-1, -1)\n            self.pat_list_click()\n        finally:\n            self._task.end()\n\n\n    ### Load IPv4 (webui / upnp / others?) PAT rules\n    def load_ipv4_pat_rules(self):\n        try:\n            d = self._api._firewall.get_ipv4_port_forwarding()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot load IPv4 port forwarding rules.\", \"patLoadErr\"))\n            return\n\n        i = self._pat_list.rowCount()\n        for k in d:\n            self._pat_list.insertRow(i)\n            r = d[k]\n\n            active_status = r.get(\"Enable\", False)\n            self._pat_list.setItem(i, PatCol.Enabled, self.format_active_table_widget(active_status))\n\n            origin = r.get(\"Origin\", \"\")\n            self._pat_list.setItem(i, PatCol.Type, self.format_nat_pat_origin_table_widget(origin, False))\n\n            rule_id = r.get(\"Id\", \"\")\n            self._pat_list.setItem(i, PatCol.Key, QtWidgets.QTableWidgetItem(\"v4_\" + rule_id))\n\n            if len(rule_id) > len(origin) + 1:\n                rule_id = rule_id[len(origin) + 1:]\n            self._pat_list.setItem(i, PatCol.ID, QtWidgets.QTableWidgetItem(rule_id))\n\n            self._pat_list.setItem(i, PatCol.Description, QtWidgets.QTableWidgetItem(r.get(\"Description\", \"\")))\n\n            protocols = r.get(\"Protocol\", \"\")\n            self._pat_list.setItem(i, PatCol.Protocols, self.format_nat_pat_protocols_table_widget(protocols))\n\n            self._pat_list.setItem(i, PatCol.IntPort, self.format_port_table_widget(r.get(\"InternalPort\", \"\")))\n            self._pat_list.setItem(i, PatCol.ExtPort, self.format_port_table_widget(r.get(\"ExternalPort\", \"\")))\n\n            destination_ip = r.get(\"DestinationIPAddress\", \"\")\n            self._pat_list.setItem(i, PatCol.DestIP, QtWidgets.QTableWidgetItem(destination_ip))\n            self._pat_list.setItem(i, PatCol.Device, QtWidgets.QTableWidgetItem(self.get_device_name_from_ip(destination_ip)))\n\n            external_ips = r.get(\"SourcePrefix\", \"\")\n            if len(external_ips) == 0:\n                external_ips = lx(\"All\")\n            self._pat_list.setItem(i, PatCol.ExtIPs, QtWidgets.QTableWidgetItem(external_ips))\n\n            i += 1\n\n\n    ### Load IPv6 PAT rules\n    def load_ipv6_pat_rules(self):\n        try:\n            d = self._api._firewall.get_ipv6_pinhole()\n        except Exception as e:\n            LmTools.error(str(e))\n            LmTools.error(\"Cannot load IPv6 port forwarding rules.\")    # Do not display a dialog as not all LB models have this API\n            return\n\n        i = self._pat_list.rowCount()\n        for k in d:\n            r = d[k]\n\n            # If destination port is not set, this is a protocol forwarding rule -> skip\n            destination_port = r.get(\"DestinationPort\", \"\")\n            if len(destination_port) == 0:\n                continue\n\n            self._pat_list.insertRow(i)\n\n            active_status = r.get(\"Enable\", False)\n            self._pat_list.setItem(i, PatCol.Enabled, self.format_active_table_widget(active_status))\n\n            origin = r.get(\"Origin\", \"\")\n            self._pat_list.setItem(i, PatCol.Type, self.format_nat_pat_origin_table_widget(origin, True))\n\n            rule_id = r.get(\"Id\", \"\")\n            self._pat_list.setItem(i, PatCol.Key, QtWidgets.QTableWidgetItem(\"v6_\" + rule_id))\n\n            if len(rule_id) > len(origin) + 1:\n                rule_id = rule_id[len(origin) + 1:]\n            self._pat_list.setItem(i, PatCol.ID, QtWidgets.QTableWidgetItem(rule_id))\n\n            self._pat_list.setItem(i, PatCol.Description, QtWidgets.QTableWidgetItem(r.get(\"Description\", \"\")))\n\n            protocols = r.get(\"Protocol\", \"\")\n            self._pat_list.setItem(i, PatCol.Protocols, self.format_nat_pat_protocols_table_widget(protocols))\n\n            self._pat_list.setItem(i, PatCol.IntPort, self.format_port_table_widget(destination_port))\n            self._pat_list.setItem(i, PatCol.ExtPort, self.format_port_table_widget(r.get(\"SourcePort\", \"\")))\n\n            destination_ip = r.get(\"DestinationIPAddress\", \"\")\n            self._pat_list.setItem(i, PatCol.DestIP, QtWidgets.QTableWidgetItem(destination_ip))\n            self._pat_list.setItem(i, PatCol.Device, QtWidgets.QTableWidgetItem(self.get_device_name_from_ip(destination_ip)))\n\n            external_ips = r.get(\"SourcePrefix\", \"\")\n            if len(external_ips) == 0:\n                external_ips = lx(\"All\")\n            self._pat_list.setItem(i, PatCol.ExtIPs, QtWidgets.QTableWidgetItem(external_ips))\n\n            i += 1\n\n\n    ### Get the PAT rule object selected in the list\n    def get_selected_pat_rule(self):\n        return self.get_pat_rule_from_list(self._pat_list.currentRow())\n\n\n    ### Get a PAT rule object from list row index\n    def get_pat_rule_from_list(self, index):\n        if (index >= 0) and (index < self._pat_list.rowCount()):\n            r = {}\n            r[\"Enable\"] = self._pat_list.item(index, PatCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole) != 0\n            r[\"Type\"] = self._pat_list.item(index, PatCol.Type).text()\n            r[\"Name\"] = self._pat_list.item(index, PatCol.ID).text()\n            r[\"Desc\"] = self._pat_list.item(index, PatCol.Description).text()\n            p = self._pat_list.item(index, PatCol.Protocols).text()\n            r[\"ProtoNames\"] = p\n            r[\"ProtoNumbers\"] = self.translate_nat_pat_protocols(p)\n            p = self._pat_list.item(index, PatCol.IntPort).text()\n            r[\"IntPort\"] = p if len(p) else None\n            p = self._pat_list.item(index, PatCol.ExtPort).text()\n            r[\"ExtPort\"] = p if len(p) else None\n            r[\"IP\"] = self._pat_list.item(index, PatCol.DestIP).text()\n            e = self._pat_list.item(index, PatCol.ExtIPs).text()\n            r[\"ExtIPs\"] = \"\" if e == lx(\"All\") else e\n            return r\n        return None\n\n\n    ### Check a PAT rule object consistency\n    def check_pat_rule(self, rule):\n        if rule.get(\"Enable\") is None:\n            LmTools.error(\"Rule as no Enable tag.\")\n            return False\n\n        t = rule.get(\"Type\", \"UNK\")\n        if t not in LmPatPtf.RULE_PAT_TYPES:\n            LmTools.error(f\"Rule has unknown {t} type.\")\n            return False\n\n        if len(rule.get(\"Name\", \"\")) == 0:\n            LmTools.error(\"Rule has no Name.\")\n            return False\n\n        protocols = rule.get(\"ProtoNumbers\", \"\")\n        if len(protocols) == 0:\n            LmTools.error(\"Rule has no protocol.\")\n            return False\n\n        for p in protocols.split(\",\"):\n            n = LmPatPtf.PROTOCOL_NAMES.get(p)\n            if n is None:\n                LmTools.error(f\"Rule has wrong protocol {p} set.\")\n                return False\n            n = int(p)\n            if (n != LmPatPtf.Protocols.TCP) and (n != LmPatPtf.Protocols.UDP):\n                LmTools.error(f\"Rule has wrong protocol {p} set.\")\n                return False\n\n        n = rule.get(\"IntPort\", \"\")\n        if n:\n            if not LmTools.is_tcp_udp_port(n):\n                LmTools.error(f\"Rule has wrong internal port {n} set.\")\n                return False\n\n        n = rule.get(\"ExtPort\", \"\")\n        if n:\n            if not LmTools.is_tcp_udp_port(n):\n                LmTools.error(f\"Rule has wrong external port {n} set.\")\n                return False\n\n        ip = rule.get(\"IP\", \"\")\n        if len(ip) == 0:\n            return False\n        if t == LmPatPtf.RULE_TYPE_IPv6:\n            if not LmTools.is_ipv6(ip):\n                LmTools.error(f\"Rule has wrong IPv6 {ip} set.\")\n                return False\n        else:\n            if not LmTools.is_ipv4(ip):\n                LmTools.error(f\"Rule has wrong IPv4 {ip} set.\")\n                return False\n\n        e = rule.get(\"ExtIPs\", \"\")\n        if len(e):\n            ext_ips = e.split(\",\")\n            for ip in ext_ips:\n                if len(ip) == 0:\n                    LmTools.error(\"Rule external IPs has an empty IP address.\")\n                    return False\n\n                if t == LmPatPtf.RULE_TYPE_IPv6:\n                    if not LmTools.is_ipv6(ip):\n                        LmTools.error(f\"Rule external IPs has a wrong IPv6 {ip} set.\")\n                        return False\n                else:\n                    if not LmTools.is_ipv4(ip):\n                        LmTools.error(f\"Rule external IPs has a wrong IPv4 {ip} set.\")\n                        return False\n\n        return True\n\n\n    ### Save a PAT rule in Livebox, return True if successful\n    def save_pat_rule(self, rule, silent=False):\n        if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv6:\n            return self.save_ipv6_pat_rule(rule, silent)\n        return self.save_ipv4_pat_rule(rule, silent)\n\n\n    ### Save a IPv4 PAT rule in Livebox, return True if successful\n    def save_ipv4_pat_rule(self, rule, silent=False):\n        # Map rule to Livebox model\n        r = {}\n        r[\"id\"] = rule[\"Name\"]\n        r[\"internalPort\"] = rule[\"IntPort\"]\n        p = rule[\"ExtPort\"]\n        if p is not None:\n            r[\"externalPort\"] = p\n        r[\"destinationIPAddress\"] = rule[\"IP\"]\n        r[\"enable\"] = rule[\"Enable\"]\n        r[\"persistent\"] = True\n        r[\"protocol\"] = rule[\"ProtoNumbers\"]\n        r[\"description\"] = rule[\"Desc\"]\n        r[\"sourceInterface\"] = \"data\"\n        r[\"origin\"] = \"webui\" if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv4 else \"upnp\"\n        r[\"destinationMACAddress\"] = \"\"\n        external_ips = rule[\"ExtIPs\"]\n        if len(external_ips):\n            r[\"sourcePrefix\"] = external_ips\n\n        # Call Livebox API\n        try:\n            self._api._firewall.set_ipv4_port_forwarding(r)\n        except Exception as e:\n            self.display_error(str(e), silent)\n            return False\n\n        return True\n \n\n    ### Save a IPv6 PAT rule in Livebox, return True if successful\n    def save_ipv6_pat_rule(self, rule, silent=False):\n        # Map rule to Livebox model\n        r = {}\n        r[\"id\"] = rule[\"Name\"]\n        r[\"origin\"] = \"webui\"\n        r[\"sourceInterface\"] = \"data\"\n        p = rule[\"ExtPort\"]\n        r[\"sourcePort\"] = p if LmPatPtf.IPV6_SOURCE_PORT_WORKING and (p is not None) else \"\"\n        r[\"destinationPort\"] = rule[\"IntPort\"]\n        r[\"destinationIPAddress\"] = rule[\"IP\"]\n        r[\"sourcePrefix\"] = rule[\"ExtIPs\"]\n        r[\"protocol\"] = rule[\"ProtoNumbers\"]\n        r[\"ipversion\"] = 6\n        r[\"enable\"] = rule[\"Enable\"]\n        r[\"persistent\"] = True\n        r[\"description\"] = rule[\"Desc\"]\n        r[\"destinationMACAddress\"] = \"\"\n\n        # Call Livebox API\n        try:\n            self._api._firewall.set_ipv6_pinhole(r)\n        except Exception as e:\n            self.display_error(str(e), silent)\n            return False\n\n        return True\n\n\n    ### Delete a PAT rule from Livebox, return True if successful\n    def del_pat_rule(self, rule):\n        if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv6:\n            return self.del_ipv6_pat_rule(rule)\n        return self.del_ipv4_pat_rule(rule)\n\n\n    ### Delete a IPv4 PAT rule from Livebox, return True if successful\n    def del_ipv4_pat_rule(self, rule):\n        origin = \"webui\" if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv4 else \"upnp\"\n        try:\n            self._api._firewall.del_ipv4_port_forwarding(rule[\"Name\"], rule[\"IP\"], origin)\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n        return True\n\n\n    ### Delete a IPv6 PAT rule from Livebox, return True if successful\n    def del_ipv6_pat_rule(self, rule):\n        try:\n            self._api._firewall.del_ipv6_pinhole(rule[\"Name\"], \"webui\")\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n        return True\n\n\n    ### Delete all IPv4 or UPnP PAT rules from Livebox, return True if successful\n    def del_all_ipv4_pat_rule(self, upnp):\n        origin = \"upnp\" if upnp else \"webui\"\n        try:\n            self._api._firewall.del_all_ipv4_port_forwarding(origin)\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n        return True\n\n\n    ### Refresh PTF list\n    def refresh_ptf_list(self):\n        self._ptf_list.clearContents()\n        self._ptf_list.setRowCount(0)\n        self.load_device_ip_name_map()\n        self.load_ptf_rules()\n\n\n    ### Load PTF rules\n    def load_ptf_rules(self):\n        self._task.start(lx(\"Loading protocol forwarding rules...\"))\n        try:\n            self._ptf_list.setSortingEnabled(False)\n\n            # IPv4 types\n            self.load_ipv4_ptf_rules()\n\n            # IPv6 types\n            self.load_ipv6_ptf_rules()\n\n            self._ptf_list.sortItems(PtfCol.Type, QtCore.Qt.SortOrder.AscendingOrder)\n            self._ptf_list.setSortingEnabled(True)\n\n            self._ptf_list.setCurrentCell(-1, -1)\n            self.ptf_list_click()\n        finally:\n            self._task.end()\n\n\n    ### Load IPv4 PTF rules\n    def load_ipv4_ptf_rules(self):\n        try:\n            d = self._api._firewall.get_ipv4_protocol_forwarding()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot load IPv4 protocol forwarding rules.\", \"ptfLoadErr\"))\n            return\n\n        i = self._ptf_list.rowCount()\n        for k in d:\n            self._ptf_list.insertRow(i)\n            r = d[k]\n\n            active_status = r.get(\"Status\", \"Disabled\") == \"Enabled\"\n            self._ptf_list.setItem(i, PtfCol.Enabled, self.format_active_table_widget(active_status))\n\n            origin = r.get(\"SourceInterface\", \"\")\n            rule_type = LmPatPtf.RULE_TYPE_IPv4 if origin == \"data\" else origin\n            self._ptf_list.setItem(i, PtfCol.Type, QtWidgets.QTableWidgetItem(rule_type))\n\n            rule_id = r.get(\"Id\", \"\")\n            self._ptf_list.setItem(i, PtfCol.Key, QtWidgets.QTableWidgetItem(f\"v4_{rule_id}\"))\n            self._ptf_list.setItem(i, PtfCol.ID, QtWidgets.QTableWidgetItem(rule_id))\n\n            self._ptf_list.setItem(i, PtfCol.Description, QtWidgets.QTableWidgetItem(r.get(\"Description\", \"\")))\n\n            protocols = r.get(\"Protocol\", \"\")\n            self._ptf_list.setItem(i, PtfCol.Protocols, self.format_nat_pat_protocols_table_widget(protocols))\n\n            destination_ip = r.get(\"DestinationIPAddress\", \"\")\n            self._ptf_list.setItem(i, PtfCol.DestIP, QtWidgets.QTableWidgetItem(destination_ip))\n            self._ptf_list.setItem(i, PtfCol.Device, QtWidgets.QTableWidgetItem(self.get_device_name_from_ip(destination_ip)))\n\n            external_ips = r.get(\"SourcePrefix\", \"\")\n            if len(external_ips) == 0:\n                external_ips = lx(\"All\")\n            self._ptf_list.setItem(i, PtfCol.ExtIPs, QtWidgets.QTableWidgetItem(external_ips))\n\n            i += 1\n\n\n    ### Load IPv6 PTF rules\n    def load_ipv6_ptf_rules(self):\n        try:\n            d = self._api._firewall.get_ipv6_pinhole()\n        except Exception as e:\n            LmTools.error(str(e))\n            LmTools.error(\"Cannot load IPv6 protocol forwarding rules.\")    # Do not display a dialog as not all LB models have this API\n            return\n\n        i = self._ptf_list.rowCount()\n        for k in d:\n            r = d[k]\n\n            # If destination port is set, this is a port forwarding rule -> skip\n            destination_port = r.get(\"DestinationPort\", \"\")\n            if len(destination_port):\n                continue\n\n            self._ptf_list.insertRow(i)\n\n            active_status = r.get(\"Status\", \"Disabled\") == \"Enabled\"\n            self._ptf_list.setItem(i, PtfCol.Enabled, self.format_active_table_widget(active_status))\n\n            origin = r.get(\"Origin\", \"\")\n            self._ptf_list.setItem(i, PtfCol.Type, self.format_nat_pat_origin_table_widget(origin, True))\n\n            rule_id = r.get(\"Id\", \"\")\n            self._ptf_list.setItem(i, PtfCol.Key, QtWidgets.QTableWidgetItem(\"v6_\" + rule_id))\n\n            if len(rule_id) > len(origin) + 1:\n                rule_id = rule_id[len(origin) + 1:]\n            self._ptf_list.setItem(i, PtfCol.ID, QtWidgets.QTableWidgetItem(rule_id))\n\n            self._ptf_list.setItem(i, PtfCol.Description, QtWidgets.QTableWidgetItem(r.get(\"Description\", \"\")))\n\n            protocols = r.get(\"Protocol\", \"\")\n            self._ptf_list.setItem(i, PtfCol.Protocols, self.format_nat_pat_protocols_table_widget(protocols))\n\n            destination_ip = r.get(\"DestinationIPAddress\", \"\")\n            self._ptf_list.setItem(i, PtfCol.DestIP, QtWidgets.QTableWidgetItem(destination_ip))\n            self._ptf_list.setItem(i, PtfCol.Device, QtWidgets.QTableWidgetItem(self.get_device_name_from_ip(destination_ip)))\n\n            external_ips = r.get(\"SourcePrefix\", \"\")\n            if len(external_ips) == 0:\n                external_ips = lx(\"All\")\n            self._ptf_list.setItem(i, PtfCol.ExtIPs, QtWidgets.QTableWidgetItem(external_ips))\n\n            i += 1\n\n\n    ### Get the PTF rule object selected in the list\n    def get_selected_ptf_rule(self):\n        return self.get_ptf_rule_from_list(self._ptf_list.currentRow())\n\n\n    ### Get a PTF rule object from list row index\n    def get_ptf_rule_from_list(self, index):\n        if (index >= 0) and (index < self._ptf_list.rowCount()):\n            r = {}\n            r[\"Enable\"] = self._ptf_list.item(index, PtfCol.Enabled).data(QtCore.Qt.ItemDataRole.UserRole) != 0\n            r[\"Type\"] = self._ptf_list.item(index, PtfCol.Type).text()\n            r[\"Name\"] = self._ptf_list.item(index, PtfCol.ID).text()\n            r[\"Desc\"] = self._ptf_list.item(index, PtfCol.Description).text()\n            p = self._ptf_list.item(index, PtfCol.Protocols).text()\n            r[\"ProtoNames\"] = p\n            r[\"ProtoNumbers\"] = self.translate_nat_pat_protocols(p)\n            r[\"IP\"] = self._ptf_list.item(index, PtfCol.DestIP).text()\n            e = self._ptf_list.item(index, PtfCol.ExtIPs).text()\n            r[\"ExtIPs\"] = \"\" if e == lx(\"All\") else e\n            return r\n        return None\n\n\n    ### Check a PTF rule object consistency\n    def check_ptf_rule(self, rule):\n        if rule.get(\"Enable\") is None:\n            LmTools.error(\"Rule as no Enable tag.\")\n            return False\n\n        t = rule.get(\"Type\", \"UNK\")\n        if t not in LmPatPtf.RULE_PTF_TYPES:\n            LmTools.error(f\"Rule has unknown {t} type.\")\n            return False\n\n        if len(rule.get(\"Name\", \"\")) == 0:\n            LmTools.error(\"Rule has no Name.\")\n            return False\n\n        protocols = rule.get(\"ProtoNumbers\", \"\")\n        if len(protocols) == 0:\n            LmTools.error(\"Rule has no protocol.\")\n            return False\n\n        for p in protocols.split(\",\"):\n            if LmPatPtf.PROTOCOL_NAMES.get(p) is None:\n                LmTools.error(f\"Rule has wrong protocol {p} set.\")\n                return False\n\n        ip = rule.get(\"IP\", \"\")\n        if len(ip) == 0:\n            return False\n        if t == LmPatPtf.RULE_TYPE_IPv6:\n            if not LmTools.is_ipv6_pfix(ip):\n                LmTools.error(f\"Rule has wrong IPv6 {ip} set.\")\n                return False\n        else:\n            if not LmTools.is_ipv4(ip):\n                LmTools.error(f\"Rule has wrong IPv4 {ip} set.\")\n                return False\n\n        e = rule.get(\"ExtIPs\", \"\")\n        if len(e):\n            ext_ips = e.split(\",\")\n            for ip in ext_ips:\n                if len(ip) == 0:\n                    LmTools.error(\"Rule external IPs has an empty IP address.\")\n                    return False\n\n                if t == LmPatPtf.RULE_TYPE_IPv6:\n                    if not LmTools.is_ipv6(ip):\n                        LmTools.error(f\"Rule external IPs has a wrong IPv6 {ip} set.\")\n                        return False\n                else:\n                    if not LmTools.is_ipv4(ip):\n                        LmTools.error(f\"Rule external IPs has a wrong IPv4 {ip} set.\")\n                        return False\n\n        return True\n\n\n    ### Save a PTF rule in Livebox, return True if successful\n    def save_ptf_rule(self, rule, silent=False):\n        if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv6:\n            return self.save_ipv6_ptf_rule(rule, silent)\n        return self.save_ipv4_ptf_rule(rule, silent)\n\n\n    ### Save a IPv4 PTF rule in Livebox, return True if successful\n    def save_ipv4_ptf_rule(self, rule, silent=False):\n        # Map rule to Livebox model\n        r = {}\n        r[\"id\"] = rule[\"Name\"]\n        r[\"enable\"] = rule[\"Enable\"]\n        r[\"destinationIPAddress\"] = rule[\"IP\"]\n        r[\"protocol\"] = rule[\"ProtoNumbers\"]\n        r[\"persistent\"] = True\n        r[\"description\"] = rule[\"Desc\"]\n        external_ips = rule[\"ExtIPs\"]\n        if len(external_ips):\n            r[\"sourcePrefix\"] = external_ips\n\n        # Call Livebox API\n        try:\n            self._api._firewall.set_ipv4_protocol_forwarding(r)\n        except Exception as e:\n            self.display_error(str(e), silent)\n            return False\n\n        return True\n\n\n    ### Save a IPv6 PTF rule in Livebox, return True if successful\n    def save_ipv6_ptf_rule(self, rule, silent=False):\n        # Map rule to Livebox model\n        r = {}\n        r[\"id\"] = rule[\"Name\"]\n        r[\"origin\"] = \"webui\"\n        r[\"sourceInterface\"] = \"data\"\n        r[\"sourcePort\"] = \"\"\n        r[\"destinationPort\"] = \"\"\n        r[\"destinationIPAddress\"] = rule[\"IP\"]\n        r[\"sourcePrefix\"] = rule[\"ExtIPs\"]\n        r[\"protocol\"] = rule[\"ProtoNumbers\"]\n        r[\"ipversion\"] = 6\n        r[\"enable\"] = rule[\"Enable\"]\n        r[\"persistent\"] = True\n        r[\"description\"] = rule[\"Desc\"]\n        r[\"destinationMACAddress\"] = \"\"\n\n        # Call Livebox API\n        try:\n            self._api._firewall.set_ipv6_pinhole(r)\n        except Exception as e:\n            self.display_error(str(e), silent)\n            return False\n\n        return True\n\n\n    ### Delete a PTF rule from Livebox, return True if successful\n    def del_ptf_rule(self, rule):\n        if rule[\"Type\"] == LmPatPtf.RULE_TYPE_IPv6:\n            return self.del_ipv6_ptf_rule(rule)\n        return self.del_ipv4_ptf_rule(rule)\n\n\n    ### Delete a IPv4 PTF rule from Livebox, return True if successful\n    def del_ipv4_ptf_rule(self, rule):\n        # Call Livebox API\n        try:\n            self._api._firewall.del_ipv4_protocol_forwarding(rule[\"Name\"])\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n        return True\n\n\n    ### Delete a IPv6 PTF rule from Livebox, return True if successful\n    def del_ipv6_ptf_rule(self, rule):\n        try:\n            self._api._firewall.del_ipv6_pinhole(rule[\"Name\"], \"webui\")\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n        return True\n\n\n    ### Commit Firewall rule changes, return True if successful\n    def commit_nat_pat_rule_change(self):\n        try:\n            self._api._firewall.commit()\n        except Exception as e:\n            LmTools.error(str(e))\n            return False\n        return True\n\n\n    ### Translate Protocols for Livebox API\n    def translate_nat_pat_protocols(self, protocols):\n        t = [self._protocol_numbers[p] for p in protocols.split(\"/\") if p in self._protocol_numbers]\n        return \",\".join(t)\n\n\n    ### Format Origin cell\n    @staticmethod\n    def format_nat_pat_origin_table_widget(origin, ipv6):\n        ###WARNING### : names must match those set by NatPatRuleTypeDialog.get_types() method\n        match origin:\n            case \"webui\":\n                if ipv6:\n                    return QtWidgets.QTableWidgetItem(LmPatPtf.RULE_TYPE_IPv6)\n                return QtWidgets.QTableWidgetItem(LmPatPtf.RULE_TYPE_IPv4)\n            case \"upnp\":\n                return QtWidgets.QTableWidgetItem(LmPatPtf.RULE_TYPE_UPnP)\n            case _:\n                return QtWidgets.QTableWidgetItem(origin)\n\n\n    ### Format Protocols cell\n    @staticmethod\n    def format_nat_pat_protocols_table_widget(protocols):\n        names = [LmPatPtf.PROTOCOL_NAMES.get(p, \"UNK\") for p in protocols.split(\",\")]\n        return QtWidgets.QTableWidgetItem(\"/\".join(names))\n\n\n    ### Format Port cell\n    @staticmethod\n    def format_port_table_widget(port):\n        port_item = NumericSortItem(port)\n        p = port.split(\"-\")[0]     # If range is used, sort with the first port\n        try:\n            i = int(p)\n        except ValueError:\n            i = 0\n        port_item.setData(QtCore.Qt.ItemDataRole.UserRole, i)\n        return port_item\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmPhoneTab.py",
    "content": "### Livebox Monitor phone tab module ###\n\nimport os\nimport webbrowser\nimport requests\n\nfrom enum import IntEnum\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget, NumericSortItem, CenteredIconsDelegate\nfrom LiveboxMonitor.dlg.LmEditContact import EditContactDialog\nfrom LiveboxMonitor.lang.LmLanguages import get_phone_label as lx, get_phone_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"phoneTab\"\n\n# List columns\nclass CallCol(IntEnum):\n    Key = 0\n    Type = 1\n    Time = 2\n    Number = 3\n    ContactSource = 4   # N=None, L=Livebox, P=Program dynamic guess, S=Spam\n    Contact = 5\n    Duration = 6\nICON_COLUMNS = [CallCol.Type]\n\nclass ContactCol(IntEnum):\n    Key = 0\n    Name = 1\n    Cell = 2\n    Home = 3\n    Work = 4\n    Ring = 5\n\n# Contact sources\nclass Source:\n    NoSource = \"N\"\n    Livebox = \"L\"\n    Program = \"P\"\n    Spam = \"S\"\n\n# Call types\nclass CallType(IntEnum):\n    Missed = 1\n    Emitted = 2\n    Received = 3\n    Failed = 4\n\n# Check spam URLs\nCHECK_SPAM_URLS = [\n    { \"url\": \"https://www.numeroinconnu.fr/numero/{}\", \"intl\": True },\n    { \"url\": \"https://callfilter.app/{}\", \"intl\": True },\n    { \"url\": \"https://orange-telephone.com/fr/antispam/{}\", \"intl\": False }\n]\n\n# CallFilter URL\nCALLFILTER_URL = \"https://api.callfilter.app/apis/{0}/1/{1}\"\n\n# Spam indicator in call list\nSPAM_CONTACT_NAME = \"# SPAM #\"\n\n\n\n# ################################ LmPhone class ################################\nclass LmPhone:\n\n    ### Create phone tab\n    def create_phone_tab(self):\n        self._phone_tab = QtWidgets.QWidget(objectName=TAB_NAME)\n\n        # Call list\n        self._call_list = LmTableWidget(objectName=\"callList\")\n        self._call_list.set_columns({CallCol.Key: [\"Key\", 0, None],\n                                     CallCol.Type: [lx(\"T\"), 30, \"calist_Type\"],\n                                     CallCol.Time: [lx(\"Time\"), 130, \"calist_Time\"],\n                                     CallCol.Number: [lx(\"Number\"), 110, \"calist_Number\"],\n                                     CallCol.ContactSource: [\"CS\", 0, None],\n                                     CallCol.Contact: [lx(\"Contact\"), 250, \"calist_Contact\"],\n                                     CallCol.Duration: [lx(\"Duration\"), 80, \"calist_Duration\"]})\n        self._call_list.set_header_resize([CallCol.Contact])\n        self._call_list.set_standard_setup(self)\n        self._call_list.itemSelectionChanged.connect(self.call_list_click)\n        self._call_list.doubleClicked.connect(self.edit_contact_from_call_list_click)\n        self._call_list.setMinimumWidth(480)\n        self._call_list.setMaximumWidth(540)\n        self._call_list.setItemDelegate(CenteredIconsDelegate(self, ICON_COLUMNS))\n\n        # Call button bar\n        call_buttons_box = QtWidgets.QHBoxLayout()\n        call_buttons_box.setSpacing(30)\n        refresh_call_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshCall\")\n        refresh_call_button.clicked.connect(self.refresh_call_button_click)\n        call_buttons_box.addWidget(refresh_call_button)\n        self._delete_call_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"deleteCall\")\n        self._delete_call_button.clicked.connect(self.delete_call_button_click)\n        call_buttons_box.addWidget(self._delete_call_button)\n        delete_all_calls_button = QtWidgets.QPushButton(lx(\"Delete All...\"), objectName=\"deleteAllCalls\")\n        delete_all_calls_button.clicked.connect(self.delete_all_calls_button_click)\n        call_buttons_box.addWidget(delete_all_calls_button)\n\n        # Spam tools button bar\n        spam_buttons_box = QtWidgets.QHBoxLayout()\n        spam_buttons_box.setSpacing(30)\n        spam_call_scan_button = QtWidgets.QPushButton(lx(\"Spams scan\"), objectName=\"spamCallScan\")\n        spam_call_scan_button.clicked.connect(self.spam_call_scan_button_click)\n        spam_buttons_box.addWidget(spam_call_scan_button)\n        self._spam_call_sites_button = QtWidgets.QPushButton(lx(\"Spam sites\"), objectName=\"spamCallSites\")\n        self._spam_call_sites_button.clicked.connect(self.spam_call_sites_button_click)\n        spam_buttons_box.addWidget(self._spam_call_sites_button)\n        self._set_spam_call_button = QtWidgets.QPushButton(lx(\"Set as spam\"), objectName=\"setSpamCall\")\n        self._set_spam_call_button.clicked.connect(self.set_spam_call_button_click)\n        spam_buttons_box.addWidget(self._set_spam_call_button)\n\n        # Call layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        call_box = QtWidgets.QVBoxLayout()\n        call_box.setSpacing(13)\n        call_box.addWidget(self._call_list, 1)\n        call_box.addLayout(call_buttons_box, 0)\n        call_box.insertSpacing(-1, 2)\n        call_box.addWidget(separator)\n        call_box.insertSpacing(-1, 2)\n        call_box.addLayout(spam_buttons_box, 0)\n\n        # Contact list\n        self._contact_list = LmTableWidget(objectName=\"contactList\")\n        self._contact_list.set_columns({ContactCol.Key: [\"Key\", 0, None],\n                                        ContactCol.Name: [lx(\"Name\"), 250, \"colist_Name\"],\n                                        ContactCol.Cell: [lx(\"Mobile\"), 110, \"colist_Cell\"],\n                                        ContactCol.Home: [lx(\"Home\"), 110, \"colist_Home\"],\n                                        ContactCol.Work: [lx(\"Work\"), 110, \"colist_Work\"],\n                                        ContactCol.Ring: [lx(\"Ring\"), 60, \"colist_Ring\"]})\n        self._contact_list.set_header_resize([ContactCol.Name])\n        self._contact_list.set_standard_setup(self)\n        self._contact_list.itemSelectionChanged.connect(self.contact_list_click)\n        self._contact_list.doubleClicked.connect(self.edit_contact_button_click)\n\n        # Contact button bar\n        contact_buttons_box = QtWidgets.QHBoxLayout()\n        contact_buttons_box.setSpacing(10)\n        refresh_contact_button = QtWidgets.QPushButton(lx(\"Refresh\"), objectName=\"refreshContact\")\n        refresh_contact_button.clicked.connect(self.refresh_contact_button_click)\n        contact_buttons_box.addWidget(refresh_contact_button)\n        add_contact_button = QtWidgets.QPushButton(lx(\"Add...\"), objectName=\"addContact\")\n        add_contact_button.clicked.connect(self.add_contact_button_click)\n        contact_buttons_box.addWidget(add_contact_button)\n        self._edit_contact_button = QtWidgets.QPushButton(lx(\"Edit...\"), objectName=\"editContact\")\n        self._edit_contact_button.clicked.connect(self.edit_contact_button_click)\n        contact_buttons_box.addWidget(self._edit_contact_button)\n        self._delete_contact_button = QtWidgets.QPushButton(lx(\"Delete\"), objectName=\"deleteContact\")\n        self._delete_contact_button.clicked.connect(self.delete_contact_button_click)\n        contact_buttons_box.addWidget(self._delete_contact_button)\n        delete_all_contacts_button = QtWidgets.QPushButton(lx(\"Delete All...\"), objectName=\"deleteAllContacts\")\n        delete_all_contacts_button.clicked.connect(self.delete_all_contacts_button_click)\n        contact_buttons_box.addWidget(delete_all_contacts_button)\n\n        # Tool button bar\n        tool_buttons_box = QtWidgets.QHBoxLayout()\n        tool_buttons_box.setSpacing(30)\n\n        phone_ring_set = QtWidgets.QHBoxLayout()\n        phone_ring_set.setSpacing(2)\n        self._ringtone_combo = QtWidgets.QComboBox(objectName=\"ringToneCombo\")\n        self._ringtone_combo.addItem(\"-\")\n        for i in range(1, 8):\n            self._ringtone_combo.addItem(str(i))\n        self._ringtone_combo.setMaximumWidth(55)\n        phone_ring_set.addWidget(self._ringtone_combo)\n        phone_ring_button = QtWidgets.QPushButton(lx(\"Phone Ring\"), objectName=\"phoneRing\")\n        phone_ring_button.clicked.connect(self.phone_ring_button_click)\n        phone_ring_set.addWidget(phone_ring_button)\n        tool_buttons_box.addLayout(phone_ring_set, 0)\n\n        export_contacts_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"exportContacts\")\n        export_contacts_button.clicked.connect(self.export_contacts_button_click)\n        tool_buttons_box.addWidget(export_contacts_button)\n        import_contacts_button = QtWidgets.QPushButton(lx(\"Import...\"), objectName=\"importContacts\")\n        import_contacts_button.clicked.connect(self.import_contacts_button_click)\n        tool_buttons_box.addWidget(import_contacts_button)\n\n        # Contact layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.HLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        contact_box = QtWidgets.QVBoxLayout()\n        contact_box.setSpacing(13)\n        contact_box.addWidget(self._contact_list, 1)\n        contact_box.addLayout(contact_buttons_box, 0)\n        contact_box.insertSpacing(-1, 2)\n        contact_box.addWidget(separator)\n        contact_box.insertSpacing(-1, 2)\n        contact_box.addLayout(tool_buttons_box, 0)\n\n        # Layout\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.VLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setSpacing(10)\n        hbox.addLayout(call_box, 1)\n        hbox.addWidget(separator)\n        hbox.addLayout(contact_box, 1)\n        self._phone_tab.setLayout(hbox)\n\n        LmConfig.set_tooltips(self._phone_tab, \"phone\")\n        self._tab_widget.addTab(self._phone_tab, lx(\"Phone\"))\n\n        # Init context\n        self.phone_tab_init()\n\n\n    ### Init phone tab context\n    def phone_tab_init(self):\n        self._phone_data_loaded = False\n        self._contact_matching = {}\n\n\n    ### Reset phone tab (not used)\n    def phone_tab_reset(self):\n        self._call_list.clearContents()\n        self._call_list.setRowCount(0)\n        self._contact_list.clearContents()\n        self._contact_list.setRowCount(0)\n        self.phone_tab_init()\n\n\n    ### Click on phone tab\n    def phone_tab_click(self):\n        if not self._phone_data_loaded:\n            self._phone_data_loaded = True    # Must be first to avoid reentrency during tab drag&drop\n            self.load_contact_list()          # Load it first for dynamic contact matching in call list\n            self.load_call_list()\n\n\n    ### Click on call list item\n    def call_list_click(self):\n        i = self._call_list.currentRow()\n        if i >= 0:\n            self._delete_call_button.setEnabled(True)\n            self._spam_call_sites_button.setEnabled(True)\n\n            # Activate & set Set Spam button title according to call type\n            call_type = self._call_list.item(i, CallCol.Type).data(QtCore.Qt.ItemDataRole.UserRole)\n            if (call_type == CallType.Missed) or (call_type == CallType.Received):\n                contact_source = self._call_list.item(i, CallCol.ContactSource).text()\n                if (contact_source == Source.NoSource) or (contact_source == Source.Spam):\n                    self._set_spam_call_button.setEnabled(True)\n                    if contact_source == Source.Spam:\n                        self._set_spam_call_button.setText(lx(\"Unset as spam\"))\n                    else:\n                        self._set_spam_call_button.setText(lx(\"Set as spam\"))\n                else:\n                    self._set_spam_call_button.setEnabled(False)\n            else:\n                self._set_spam_call_button.setEnabled(False)\n        else:\n            self._delete_call_button.setEnabled(False)\n            self._spam_call_sites_button.setEnabled(False)\n            self._set_spam_call_button.setEnabled(False)\n\n\n    ### Click on contact list item\n    def contact_list_click(self):\n        if self._contact_list.currentRow() >= 0:\n            self._edit_contact_button.setEnabled(True)\n            self._delete_contact_button.setEnabled(True)\n        else:\n            self._edit_contact_button.setEnabled(False)\n            self._delete_contact_button.setEnabled(False)\n\n\n    ### Click on call list refresh button\n    def refresh_call_button_click(self):\n        self._call_list.clearContents()\n        self._call_list.setRowCount(0)\n        self.load_call_list()\n\n\n    ### Click on spam calls scan button\n    def spam_call_scan_button_click(self):\n        if LmConf.CallFilterApiKey:\n            self.scan_spams()\n        else:\n            self.display_error(mx(\"You must configure a CallFilter API Key in the preferences first.\", \"callFilterAPIKeyErr\"))\n\n\n    ### Click on spam call sites button\n    def spam_call_sites_button_click(self):\n        i = self._call_list.currentRow()\n        if i >= 0:\n            phone_nb = self._call_list.item(i, CallCol.Number).text()\n            intl_phone_nb = LmPhone.intl_phone_number(phone_nb, False)\n            for spam_web in CHECK_SPAM_URLS:\n                webbrowser.open_new_tab(spam_web[\"url\"].format(intl_phone_nb if spam_web[\"intl\"] else phone_nb))\n        else:\n            self.display_error(mx(\"Please select a phone call.\", \"callSelect\"))\n\n\n    ### Click on set/unset spam call button\n    def set_spam_call_button_click(self):\n        i = self._call_list.currentRow()\n        if i >= 0:\n            call_type = self._call_list.item(i, CallCol.Type).data(QtCore.Qt.ItemDataRole.UserRole)\n            if (call_type == CallType.Missed) or (call_type == CallType.Received):\n                phone_nb = LmPhone.intl_phone_number(self._call_list.item(i, CallCol.Number).text())\n                source = self._call_list.item(i, CallCol.ContactSource).text()\n                if source == Source.Spam:\n                    LmConf.unset_spam_call(phone_nb)\n                    set_as_spam = False\n                else:\n                    LmConf.set_spam_call(phone_nb)\n                    set_as_spam = True\n        else:\n            self.display_error(mx(\"Please select a phone call.\", \"callSelect\"))\n            return\n\n        # Update all lines with same number\n        self._call_list.setSortingEnabled(False)\n        for i in range(self._call_list.rowCount()):\n            call_type = self._call_list.item(i, CallCol.Type).data(QtCore.Qt.ItemDataRole.UserRole)\n            if (call_type == CallType.Missed) or (call_type == CallType.Received):\n                line_phone_nb = LmPhone.intl_phone_number(self._call_list.item(i, CallCol.Number).text())\n                if line_phone_nb == phone_nb:\n                    self.display_spam_call(i, set_as_spam)\n        self._call_list.setSortingEnabled(True)\n\n        self.call_list_click()\n\n\n    ### Click on delete call button\n    def delete_call_button_click(self):\n        current_selection = self._call_list.currentRow()\n        if current_selection >= 0:\n            key = self._call_list.item(current_selection, CallCol.Key).text()\n            try:\n                self._api._voip.delete_call(key)\n            except Exception as e:\n                self.display_error(str(e))\n                return\n\n            self._call_list.removeRow(current_selection)\n        else:\n            self.display_error(mx(\"Please select a phone call.\", \"callSelect\"))\n\n\n    ### Click on delete all calls button\n    def delete_all_calls_button_click(self):\n        if self.ask_question(mx(\"Are you sure you want to delete all phone calls?\", \"delAllCalls\")):\n            self._task.start(lx(\"Deleting phone call list...\"))\n            try:\n                self._api._voip.delete_call()\n            except Exception as e:\n                self.display_error(str(e))\n                return\n            finally:\n                self._task.end()\n\n            self.refresh_call_button_click()\n\n\n    ### Double click on a call to add/edit corresponding contact\n    def edit_contact_from_call_list_click(self):\n        current_selection = self._call_list.currentRow()\n        if current_selection >= 0:\n            name = self._call_list.item(current_selection, CallCol.Contact).text()\n            n = self._contact_list.rowCount()\n\n            # Try first to find the contact by phone number\n            raw_phone_nb = self._call_list.item(current_selection, CallCol.Number).text()\n            phone_nb  = LmPhone.intl_phone_number(raw_phone_nb)\n            if phone_nb:\n                for i in range(n):\n                    if ((LmPhone.intl_phone_number(self._contact_list.item(i, ContactCol.Cell).text()) == phone_nb) or\n                        (LmPhone.intl_phone_number(self._contact_list.item(i, ContactCol.Home).text()) == phone_nb) or\n                        (LmPhone.intl_phone_number(self._contact_list.item(i, ContactCol.Work).text()) == phone_nb)):\n                        self.edit_contact_dialog(i)\n                        return\n\n            # Then try to find the contact by name\n            if name:\n                for i in range(n):\n                    if self._contact_list.item(i, ContactCol.Name).text() == name:\n                        self.edit_contact_dialog(i)\n                        return\n\n            # If not found then propose to create a contact from phone call data\n            contact = {}\n            sep = name.find(\" \")\n            if sep > 0:\n                contact[\"name\"] = name[0:sep]\n                contact[\"firstname\"] = name[sep + 1:]\n            else:\n                contact[\"name\"] = name\n                contact[\"firstname\"] = \"\"\n            contact[\"cell\"] = raw_phone_nb\n            contact[\"home\"] = \"\"\n            contact[\"work\"] = \"\"\n            contact[\"ringtone\"] = \"1\"\n            self.add_contact_dialog(contact)\n\n\n    ### Load phone call list\n    def load_call_list(self):\n        self._task.start(lx(\"Loading phone call list...\"))\n\n        self._call_list.setSortingEnabled(False)\n\n        try:\n            call_list = self._api._voip.get_call_list()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Error getting phone call list.\", \"callLoad\"))\n        else:\n            for i, c in enumerate(call_list):\n                self._call_list.insertRow(i)\n\n                key = QtWidgets.QTableWidgetItem(c.get(\"callId\", \"\"))\n\n                call_type_icon = NumericSortItem()\n                status = c.get(\"callType\", \"\")\n                origin = c.get(\"callOrigin\", \"\")\n                if status == \"succeeded\":\n                    if origin == \"local\":\n                        call_type_icon.setIcon(QtGui.QIcon(LmIcon.CallOutPixmap))\n                        call_type_icon.setData(QtCore.Qt.ItemDataRole.UserRole, CallType.Emitted)\n                        missed_call = False\n                    else:\n                        call_type_icon.setIcon(QtGui.QIcon(LmIcon.CallInPixmap))\n                        call_type_icon.setData(QtCore.Qt.ItemDataRole.UserRole, CallType.Received)\n                        missed_call = False\n                else:\n                    if origin == \"local\":\n                        call_type_icon.setIcon(QtGui.QIcon(LmIcon.CallFailedPixmap))\n                        call_type_icon.setData(QtCore.Qt.ItemDataRole.UserRole, CallType.Failed)\n                        missed_call = False\n                    else:\n                        call_type_icon.setIcon(QtGui.QIcon(LmIcon.CallMissedPixmap))\n                        call_type_icon.setData(QtCore.Qt.ItemDataRole.UserRole, CallType.Missed)\n                        missed_call = True\n\n                time = QtWidgets.QTableWidgetItem(LmTools.fmt_livebox_timestamp(c.get(\"startTime\")))\n                time.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n                number = QtWidgets.QTableWidgetItem(c.get(\"remoteNumber\"))\n                number.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n                contact_str = c.get(\"remoteName\")\n                contact_source = QtWidgets.QTableWidgetItem(Source.Livebox if contact_str else Source.NoSource)\n                contact = QtWidgets.QTableWidgetItem(contact_str)\n\n                seconds = c.get(\"duration\")\n                duration = NumericSortItem(LmTools.fmt_time(seconds, True))\n                duration.setData(QtCore.Qt.ItemDataRole.UserRole, seconds)\n                duration.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n\n                if missed_call:\n                    time.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    number.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    contact.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n                    duration.setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))\n\n                self._call_list.setItem(i, CallCol.Key, key)\n                self._call_list.setItem(i, CallCol.Type, call_type_icon)\n                self._call_list.setItem(i, CallCol.Time, time)\n                self._call_list.setItem(i, CallCol.Number, number)\n                self._call_list.setItem(i, CallCol.ContactSource, contact_source)\n                self._call_list.setItem(i, CallCol.Contact, contact)\n                self._call_list.setItem(i, CallCol.Duration, duration)\n\n            self.assign_contact_to_calls()\n            self.indicate_spam_calls()\n        finally:\n            self._call_list.sortItems(CallCol.Time, QtCore.Qt.SortOrder.DescendingOrder)\n\n            self._call_list.setSortingEnabled(True)\n            self.call_list_click()\n\n            self._task.end()\n\n\n    ### Assign contacts to calls via matching context\n    def assign_contact_to_calls(self):\n        self._call_list.setSortingEnabled(False)\n\n        try:\n            for i in range(self._call_list.rowCount()):\n                if self._call_list.item(i, CallCol.ContactSource).text() != Source.Livebox:\n                    phone_nb = LmPhone.intl_phone_number(self._call_list.item(i, CallCol.Number).text())\n                    contact_name = self.find_matching_contact(phone_nb)\n                    if contact_name is not None:\n                        contact_source = QtWidgets.QTableWidgetItem(Source.Program)\n                        foreground = self._call_list.item(i, CallCol.Contact).foreground()\n                        contact = QtWidgets.QTableWidgetItem(contact_name)\n                        contact.setForeground(foreground)\n                        self._call_list.setItem(i, CallCol.ContactSource, contact_source)\n                        self._call_list.setItem(i, CallCol.Contact, contact)\n        finally:\n            self._call_list.setSortingEnabled(True)\n\n\n    ### Assign spam contact name to all calls in the spam table\n    def indicate_spam_calls(self):\n        self._call_list.setSortingEnabled(False)\n\n        try:\n            for i in range(self._call_list.rowCount()):\n                call_type = self._call_list.item(i, CallCol.Type).data(QtCore.Qt.ItemDataRole.UserRole)\n                if (((call_type == CallType.Missed) or (call_type == CallType.Received)) and\n                    self._call_list.item(i, CallCol.ContactSource).text() == Source.NoSource):\n                    phone_nb = LmPhone.intl_phone_number(self._call_list.item(i, CallCol.Number).text())\n                    if phone_nb in LmConf.SpamCallsTable:\n                        self.display_spam_call(i)\n        finally:\n            self._call_list.setSortingEnabled(True)\n\n\n    ### Scan call list to detect spams via CallFilter API\n    def scan_spams(self):\n        self._call_list.setSortingEnabled(False)\n\n        try:\n            spam_count = 0\n            already_checked = []\n            for i in range(self._call_list.rowCount()):\n                call_type = self._call_list.item(i, CallCol.Type).data(QtCore.Qt.ItemDataRole.UserRole)\n                if (((call_type == CallType.Missed) or (call_type == CallType.Received)) and\n                    self._call_list.item(i, CallCol.ContactSource).text() == Source.NoSource):\n                    raw_phone_nb = self._call_list.item(i, CallCol.Number).text()\n                    full_phone_nb = LmPhone.intl_phone_number(raw_phone_nb)\n                    if full_phone_nb not in already_checked:\n                        already_checked.append(full_phone_nb)\n                        phone_nb = LmPhone.intl_phone_number(raw_phone_nb, False)\n                        if LmPhone.is_spam(phone_nb):\n                            LmConf.set_spam_call(full_phone_nb)\n                            spam_count += 1\n        finally:\n            self._call_list.setSortingEnabled(True)\n\n        if spam_count:\n            self.indicate_spam_calls()\n        self.display_status(mx(\"Number of detected spam numbers: {}.\", \"spamCount\").format(spam_count))\n\n\n    ### Assign spam contact name to calls in the spam table\n    def display_spam_call(self, index, spam=True):\n        if spam:\n            source = Source.Spam\n            name = SPAM_CONTACT_NAME\n        else:\n            source = Source.NoSource\n            name = \"\"\n        contact_source = QtWidgets.QTableWidgetItem(source)\n        foreground = self._call_list.item(index, CallCol.Contact).foreground()\n        contact = QtWidgets.QTableWidgetItem(name)\n        contact.setForeground(foreground)\n        self._call_list.setItem(index, CallCol.ContactSource, contact_source)\n        self._call_list.setItem(index, CallCol.Contact, contact)\n\n\n    ### Check if number is spam via CallFilter API\n    @staticmethod\n    def is_spam(phone_number):\n        if LmConf.CallFilterApiKey and phone_number:\n            try:\n                resp = requests.get(CALLFILTER_URL.format(LmConf.CallFilterApiKey, phone_number), timeout=2)\n                resp.raise_for_status()     # Check HTTP status code\n                data = resp.json()\n                spam = data.get(\"blocked\")\n                if spam is not None:\n                    return spam != 0\n                LmTools.error(\"CallFilter response error: no blocked field\")\n            except Exception as e:\n                LmTools.error(f\"CallFilter error: {e}\")\n        return False\n\n\n    ### Click on contact list refresh button\n    def refresh_contact_button_click(self):\n        self._contact_list.clearContents()\n        self._contact_list.setRowCount(0)\n        self.load_contact_list()\n\n\n    ### Click on add contact button\n    def add_contact_button_click(self):\n        self.add_contact_dialog(None)\n\n\n    ### Click on edit contact button\n    def edit_contact_button_click(self):\n        current_selection = self._contact_list.currentRow()\n        if current_selection >= 0:\n            self.edit_contact_dialog(current_selection)\n        else:\n            self.display_error(mx(\"Please select a contact.\", \"contactSelect\"))\n\n\n    ### Click on delete contact button\n    def delete_contact_button_click(self):\n        current_selection = self._contact_list.currentRow()\n        if current_selection >= 0:\n            key = self._contact_list.item(current_selection, ContactCol.Key).text()\n            try:\n                self._api._voip.delete_contact(key)\n            except Exception as e:\n                self.display_error(str(e))\n                return\n\n            contact = self.get_contact_row(current_selection)\n            self.rmv_contact_from_matching_index(contact)\n            self._contact_list.removeRow(current_selection)\n            self.assign_contact_to_calls()\n        else:\n            self.display_error(mx(\"Please select a contact.\", \"contactSelect\"))\n\n\n    ### Click on delete all contacts button\n    def delete_all_contacts_button_click(self):\n        if self.ask_question(mx(\"Are you sure you want to delete all contacts?\", \"delAllContacts\")):\n            self._task.start(lx(\"Deleting contact list...\"))\n            try:\n                self._api._voip.delete_contact()\n            except Exception as e:\n                self.display_error(str(e))\n                return\n            finally:\n                self._task.end()\n\n            self.refresh_contact_button_click()\n\n\n    ### Click on Phone Ring button\n    def phone_ring_button_click(self):\n        ringtone = self._ringtone_combo.currentText()\n        if ringtone == \"-\":\n            ringtone = None\n\n        self._task.start()\n        try:\n            self._api._voip.ring(ringtone)\n            self.display_status(mx(\"Phone should be ringing.\", \"ring\"))\n        except Exception as e:\n            self.display_error(str(e))\n        finally:\n            self._task.end()\n\n\n    ### Click on export contacts button\n    def export_contacts_button_click(self):\n        file_name = QtWidgets.QFileDialog.getSaveFileName(self, lx(\"Export File\"), lx(\"Livebox Contacts\") + \".vcf\", \"*.vcf\")[0]\n        if not file_name:\n            return\n\n        try:\n            export_file = open(file_name, \"w\", encoding=\"utf-8\")  # VCF standard charset is UTF-8\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n            return\n\n        self._task.start(lx(\"Exporting all contacts...\"))\n        try:\n            contact_list = self._api._voip.get_contact_list()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Error getting contact list.\", \"contactLoad\"))\n        else:\n            for c in contact_list:\n                contact = self.decode_livebox_contact(c)\n                export_file.write(\"BEGIN:VCARD\\n\")\n                export_file.write(\"VERSION:3.0\\n\")\n                export_file.write(f\"PRODID:{self._application_name}\\n\")\n                export_file.write(f\"FN:{contact['formattedName']}\\n\")\n                export_file.write(f\"N:{contact['name']};{contact['firstname']};;;\\n\")\n                export_file.write(f\"TEL;TYPE=CELL:{contact['cell']}\\n\")\n                export_file.write(f\"TEL;TYPE=HOME:{contact['home']}\\n\")\n                export_file.write(f\"TEL;TYPE=WORK:{contact['work']}\\n\")\n                export_file.write(f\"RINGTONE:{contact['ringtone']}\\n\")\n                export_file.write(\"END:VCARD\\n\")\n        finally:\n            self._task.end()\n\n        try:\n            export_file.close()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n\n    ### Click on import contacts button\n    def import_contacts_button_click(self):\n        files = QtWidgets.QFileDialog.getOpenFileNames(self, lx(\"Select files to import\"), \"\", \"*.vcf\")[0]\n\n        self._task.start(lx(\"Importing contacts...\"))\n        self._contact_list.setSortingEnabled(False)\n\n        try:\n            file_error = []\n            for f in files:\n                result = self.import_vcf_file(f)\n                if result == 0:\n                    file_error.append(os.path.basename(f))\n                elif result < 0:\n                    break\n            self.assign_contact_to_calls()\n        finally:\n            self._contact_list.setSortingEnabled(True)\n            self._task.end()\n\n        if file_error:\n            self.display_error(f\"{lx('Cannot import file(s):')} {', '.join(file_error)}.\")\n\n\n    ### VCF file import, returns: 1=Success, 0=File error, -1=Stop all error\n    def import_vcf_file(self, file):\n        try:\n            f = open(file, \"r\", encoding=\"utf-8\")    # VCF standard charset is UTF-8\n        except Exception:\n            return 0\n\n        c = None\n        try:\n            for l in f:\n                # Get tag structure\n                i = l.find(\":\")\n                if i < 1:\n                    continue\n                tag_struct = l[:i].upper()\n                l = l[i + 1:].rstrip(\"\\n\")\n\n                # Some tags are build like \"item1.TEL;...\", remove to ease parsing\n                if tag_struct.startswith(\"ITEM\"):\n                    i = tag_struct.find(\".\")\n                    if i >= 0:\n                        tag_struct = tag_struct[i + 1:]\n\n                # Decode tag structure to get tag name and its parameters\n                tag_elems = tag_struct.split(\";\")\n                tag = None\n                tag_params = {}\n                for e in tag_elems:\n                    if tag is None:\n                        tag = e\n                    else:\n                        i = e.find(\"=\")\n                        if i >= 0:\n                            tag_params[e[:i]] = e[i + 1:]\n                        else:\n                            tag_params[e] = \"\"\n\n                match tag:\n                    case \"BEGIN\":\n                        # Create a blank contact\n                        if l.upper() == \"VCARD\":\n                            c = {\"firstname\": \"\",\n                                 \"name\": \"\",\n                                 \"formattedName\": \"\",\n                                 \"cell\": \"\",\n                                 \"home\": \"\",\n                                 \"work\": \"\",\n                                 \"ringtone\": \"1\"}\n                    case \"END\":\n                        # Import the decoded contact\n                        if (l.upper() == \"VCARD\") and (c is not None):\n                            if self.add_livebox_contact(c):\n                                self._contact_list.insertRow(0)\n                                self.set_contact_row(0, c)\n                                self.add_contact_to_matching_index(c)\n                                QtCore.QCoreApplication.processEvents()\n                            else:\n                                f.close()\n                                return -1\n                            c = None\n                    case _:\n                        LmPhone.import_vcf_tag(c, tag, tag_params, l)\n        except Exception as e:\n            LmTools.error(str(e))\n            f.close()\n            return 0\n\n        f.close()\n        return 1\n\n\n    ### VCF tag import\n    @staticmethod\n    def import_vcf_tag(contact, tag, params, val):\n        if contact is None:\n            return\n\n        # Name tag\n        match tag:\n            case \"N\":\n                # Replace semicolon escape sequences by spaces\n                val = val.replace(r\"\\;\", \" \")\n\n                # Get name & firstname\n                s = val.split(\";\")\n                if len(s) > 1:\n                    contact[\"name\"]  = s[0].strip()\n                    contact[\"firstname\"] = s[1].strip()\n                else:\n                    contact[\"name\"]  = s[0].strip()\n                    contact[\"firstname\"] = \"\"\n                contact[\"formattedName\"] = EditContactDialog.compute_formatted_name(contact[\"name\"], contact[\"firstname\"])\n\n            # Phone number tag\n            case \"TEL\":\n                # Get type, use cell if none specified\n                number_type = params.get(\"TYPE\", \"CELL\")\n\n                # Assign the phone number according to its type\n                match number_type:\n                    case \"HOME\":\n                        contact[\"home\"] = LmPhone.vcf_phone_number_cleanup(val)\n                    case \"WORK\":\n                        contact[\"work\"] = LmPhone.vcf_phone_number_cleanup(val)\n                    case _:\n                        contact[\"cell\"] = LmPhone.vcf_phone_number_cleanup(val)\n\n            # Ring tone tag (not standard)\n            case \"RINGTONE\":\n                if (len(val) == 1) and (val in \"1234567\"):\n                    contact[\"ringtone\"] = val\n\n\n    ### VCF phone number cleanup\n    @staticmethod\n    def vcf_phone_number_cleanup(phone_number):\n        if phone_number and (phone_number[0] == \"+\"):\n            n = \"00\"\n            phone_number = phone_number[1:]\n        else:\n            n = \"\"\n\n        for c in phone_number:\n            if c in r\"0123456789*#\":\n                n += c\n\n        return n\n\n\n    ### Convert phone numbers to intl format if local\n    @staticmethod\n    def intl_phone_number(phone_number, full=True):\n        if ((len(phone_number) < 2) or\n            phone_number.startswith(\"00\") or\n            (phone_number[0] != \"0\")):\n            return phone_number\n\n        if full:\n            return f\"00{LmConf.PhoneCode}{phone_number[1:]}\"\n        return f\"{LmConf.PhoneCode}{phone_number[1:]}\"\n\n\n    ### Load contact list\n    def load_contact_list(self):\n        self._task.start(lx(\"Loading contact list...\"))\n        self._contact_list.setSortingEnabled(False)\n        self._contact_matching = {}\n        try:\n            contact_list = self._api._voip.get_contact_list()\n        except Exception as e:\n            LmTools.error(str(e))\n            self.display_error(mx(\"Error getting contact list.\", \"contactLoad\"))\n        else:\n            for i, c in enumerate(contact_list):\n                self._contact_list.insertRow(i)\n                contact = self.decode_livebox_contact(c)\n                self.set_contact_row(i, contact)\n                self.add_contact_to_matching_index(contact)\n\n            self._contact_list.sortItems(ContactCol.Name, QtCore.Qt.SortOrder.AscendingOrder)\n\n            self.assign_contact_to_calls()\n            self.contact_list_click()\n        finally:\n            self._contact_list.setSortingEnabled(True)\n            self._task.end()\n\n\n    ### Get contact from Livebox contact structure\n    def decode_livebox_contact(self, livebox_contact):\n        contact = {}\n        contact[\"key\"] = livebox_contact.get(\"uniqueID\", \"\")\n\n        name = livebox_contact.get(\"name\", \"\")\n        s = name.split(\";\")\n        if len(s) > 1:\n            contact[\"name\"] = s[0][2:]\n            contact[\"firstname\"] = s[1]\n        else:\n            contact[\"name\"]  = \"\"\n            contact[\"firstname\"] = \"\"\n\n        contact[\"formattedName\"] = livebox_contact.get(\"formattedName\", \"\")\n\n        contact[\"cell\"] = \"\"\n        contact[\"home\"] = \"\"\n        contact[\"work\"] = \"\"\n        numbers = livebox_contact.get(\"telephoneNumbers\")\n        if isinstance(numbers, list):\n            for n in numbers:\n                number_type = n.get(\"type\", \"\")\n                match number_type:\n                    case \"CELL\":\n                        contact[\"cell\"] = n.get(\"name\", \"\")\n                    case \"HOME\":\n                        contact[\"home\"] = n.get(\"name\", \"\")\n                    case \"WORK\":\n                        contact[\"work\"] = n.get(\"name\", \"\")\n\n        contact[\"ringtone\"] = livebox_contact.get(\"ringtone\", \"1\")\n\n        return contact\n\n\n    ### Set contact row\n    def set_contact_row(self, line, contact):\n        key = QtWidgets.QTableWidgetItem(contact[\"key\"])\n\n        contact_name = QtWidgets.QTableWidgetItem(contact[\"formattedName\"])\n\n        cell_nb = QtWidgets.QTableWidgetItem(contact[\"cell\"])\n        cell_nb.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        home_nb = QtWidgets.QTableWidgetItem(contact[\"home\"])\n        home_nb.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        work_nb = QtWidgets.QTableWidgetItem(contact[\"work\"])\n        work_nb.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n\n        ringtone = QtWidgets.QTableWidgetItem(contact[\"ringtone\"])\n        ringtone.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n\n        self._contact_list.setItem(line, ContactCol.Key, key)\n        self._contact_list.setItem(line, ContactCol.Name, contact_name)\n        self._contact_list.setItem(line, ContactCol.Cell, cell_nb)\n        self._contact_list.setItem(line, ContactCol.Home, home_nb)\n        self._contact_list.setItem(line, ContactCol.Work, work_nb)\n        self._contact_list.setItem(line, ContactCol.Ring, ringtone)\n\n\n    ### Get contact from row\n    def get_contact_row(self, line):\n        return {\"key\": self._contact_list.item(line, ContactCol.Key).text(),\n                \"formattedName\": self._contact_list.item(line, ContactCol.Name).text(),\n                \"cell\": self._contact_list.item(line, ContactCol.Cell).text(),\n                \"home\": self._contact_list.item(line, ContactCol.Home).text(),\n                \"work\": self._contact_list.item(line, ContactCol.Work).text(),\n                \"ringtone\": self._contact_list.item(line, ContactCol.Ring).text()}\n\n\n    ### Add contact dialog\n    def add_contact_dialog(self, default_contact_data):\n        dialog = EditContactDialog(False, default_contact_data, self)\n        if dialog.exec():\n            contact = dialog.get_contact()\n            if self.add_livebox_contact(contact):\n                self._contact_list.setSortingEnabled(False)\n                self._contact_list.insertRow(0)\n                self.set_contact_row(0, contact)\n                self._contact_list.setSortingEnabled(True)\n                self.add_contact_to_matching_index(contact)\n                self.assign_contact_to_calls()\n\n\n    ### Add a contact in Livebox, returns False if failed\n    def add_livebox_contact(self, contact):\n        livebox_contact = {\n            \"name\": f\"N:{contact['name']};{contact['firstname']};\",\n            \"formattedName\": contact[\"formattedName\"],\n            \"ringtone\": contact[\"ringtone\"],\n            \"telephoneNumbers\": [\n                {\n                    \"name\": contact[\"cell\"],\n                    \"type\": \"CELL\",\n                    \"preferred\": False\n                },\n                {\n                    \"name\": contact[\"work\"],\n                    \"type\": \"WORK\",\n                    \"preferred\": False\n                },\n                {\n                    \"name\": contact[\"home\"],\n                    \"type\": \"HOME\",\n                    \"preferred\": False\n                }\n            ]\n        }\n\n        try:\n            key = self._api._voip.add_contact(livebox_contact)\n        except Exception as e:\n            self.display_error(str(e))\n            return False\n\n        if key is None:\n            self.display_error(mx(\"Max number of contacts reached.\", \"contactMax\"))\n            return False\n\n        contact[\"key\"] = key\n        return True\n\n\n    ### Edit contact dialog\n    def edit_contact_dialog(self, line):\n        key = self._contact_list.item(line, ContactCol.Key).text()\n\n        # First retrieve a fresh copy of the contact\n        try:\n            livebox_contact = self._api._voip.get_contact(key)\n        except Exception as e:\n            self.display_error(str(e))\n            return\n        if not livebox_contact:\n            self.display_error(mx(\"Cannot retrieve contact.\", \"contactGet\"))\n            return\n        contact = self.decode_livebox_contact(livebox_contact)\n\n        # Edit dialog\n        dialog = EditContactDialog(True, contact, self)\n        if dialog.exec():\n            contact = dialog.get_contact()\n            livebox_contact = {\n                \"name\": f\"N:{contact['name']};{contact['firstname']};\",\n                \"n\": f\"N:{contact['name']};{contact['firstname']};;;;;;;\",\n                \"formattedName\": contact[\"formattedName\"],\n                \"ringtone\": contact[\"ringtone\"],\n                \"telephoneNumbers\": [\n                    {\n                        \"name\": contact[\"cell\"],\n                        \"type\": \"CELL\",\n                        \"preferred\": False\n                    },\n                    {\n                        \"name\": contact[\"work\"],\n                        \"type\": \"WORK\",\n                        \"preferred\": False\n                    },\n                    {\n                        \"name\": contact[\"home\"],\n                        \"type\": \"HOME\",\n                        \"preferred\": False\n                    }\n                ]\n            }\n\n            # Perform updates\n            try:\n                self._api._voip.change_contact(key,livebox_contact )\n            except Exception as e:\n                self.display_error(str(e))\n                return\n\n            current_contact = self.get_contact_row(line)\n            self.rmv_contact_from_matching_index(current_contact)\n            self._contact_list.setSortingEnabled(False)\n            self.set_contact_row(line, contact)\n            self._contact_list.setSortingEnabled(True)\n            self.add_contact_to_matching_index(contact)\n            self.assign_contact_to_calls()\n\n\n    ### Add contact to matching index\n    def add_contact_to_matching_index(self, contact):\n        contact_entry = { \"key\": contact[\"key\"], \"name\": contact[\"formattedName\"] }\n        self.add_number_to_matching_index(LmPhone.intl_phone_number(contact[\"cell\"]), contact_entry)\n        self.add_number_to_matching_index(LmPhone.intl_phone_number(contact[\"work\"]), contact_entry)\n        self.add_number_to_matching_index(LmPhone.intl_phone_number(contact[\"home\"]), contact_entry)\n\n\n    ### Remove contact from matching index\n    def rmv_contact_from_matching_index(self, contact):\n        contact_entry = { \"key\": contact[\"key\"], \"name\": contact[\"formattedName\"] }\n        self.rmv_number_from_matching_index(LmPhone.intl_phone_number(contact[\"cell\"]), contact_entry)\n        self.rmv_number_from_matching_index(LmPhone.intl_phone_number(contact[\"work\"]), contact_entry)\n        self.rmv_number_from_matching_index(LmPhone.intl_phone_number(contact[\"home\"]), contact_entry)\n\n\n    ### Add a phone number to matching index\n    def add_number_to_matching_index(self, phone_number, contact_entry):\n        if phone_number:\n            phone_entry = self._contact_matching.get(phone_number)\n            if phone_entry is None:\n                self._contact_matching[phone_number] = [contact_entry]\n            else:\n                self._contact_matching[phone_number].append(contact_entry)\n\n\n    ### Remove a phone number from matching index\n    def rmv_number_from_matching_index(self, phone_number, contact_entry):\n        if phone_number:\n            phone_entry = self._contact_matching.get(phone_number)\n            if phone_entry is not None:\n                try:\n                    self._contact_matching[phone_number].remove(contact_entry)\n                except Exception:\n                    pass\n\n\n    ### Find a contact name matching a phone number\n    def find_matching_contact(self, phone_number):\n        if phone_number:\n            phone_entry = self._contact_matching.get(phone_number)\n            if phone_entry is not None:\n                n = len(phone_entry)\n                if n:\n                    return phone_entry[n - 1][\"name\"]\n        return None\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmRepeaterTab.py",
    "content": "### Livebox Monitor Wifi Repeater info tab module ###\n\nimport datetime\nimport re\nimport json\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmThread import LmThread\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.app.LmTableWidget import LmTableWidget\nfrom LiveboxMonitor.api.LmSession import LmSession\nfrom LiveboxMonitor.api.LmApiRegistry import ApiRegistry\nfrom LiveboxMonitor.dlg.LmRebootHistory import RebootHistoryDialog\nfrom LiveboxMonitor.dlg.LmCallApi import CallApiDialog\nfrom LiveboxMonitor.tabs.LmInfoTab import InfoCol, StatsCol\nfrom LiveboxMonitor.lang.LmLanguages import get_repeater_label as lx, get_repeater_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"repeaterTab\"    # 'Key' dynamic property indicates the MAC addr\n\n# Static Config\nWIFI_REPEATER_TYPES = {\"repeteurwifi\", \"repeteurwifi6\", \"sah ap\"}\nWIFI_REPEATER_5 = \"WIFIREPARCFR\"\nWIFI_REPEATER_6 = \"WIFI6REPSERCOMM\"\nWIFI_REPEATER_PRODUCT_CLASSES = [WIFI_REPEATER_5, WIFI_REPEATER_6]\nWIFI_REPEATER_MODEL_MAP = {WIFI_REPEATER_5: 5, WIFI_REPEATER_6: 6}\nWIFI_REPEATER_DEFAULT_MODEL = 6\nDEFAULT_REPEATER_NAME = \"RW #\"\n\n#  Wifi Repeater 5 Interfaces\nNET_INTF_WR5 = [\n    {\"Key\": \"bridge\",     \"Name\": \"LAN\",          \"Type\": \"lan\", \"SwapStats\": True},\n    {\"Key\": \"eth1_0\",     \"Name\": \"Ethernet 1\",   \"Type\": \"eth\", \"SwapStats\": True},\n    {\"Key\": \"eth1_1\",     \"Name\": \"Ethernet 2\",   \"Type\": \"eth\", \"SwapStats\": True},\n    {\"Key\": \"wl0\",        \"Name\": \"Wifi 2.4GHz\",  \"Type\": \"wif\", \"SwapStats\": True},\n    {\"Key\": \"vap5g0priv\", \"Name\": \"Wifi 5GHz\",    \"Type\": \"wif\", \"SwapStats\": True}\n]\n\n# Wifi Repeater 6 Interfaces\nNET_INTF_WR6 = [\n    {\"Key\": \"bridge\",     \"Name\": \"LAN\",          \"Type\": \"lan\", \"SwapStats\": True},\n    {\"Key\": \"eth0\",       \"Name\": \"Ethernet 1\",   \"Type\": \"eth\", \"SwapStats\": True},\n    {\"Key\": \"eth1\",       \"Name\": \"Ethernet 2\",   \"Type\": \"eth\", \"SwapStats\": True},\n    {\"Key\": \"vap2g0priv\", \"Name\": \"Wifi 2.4GHz\",  \"Type\": \"wif\", \"SwapStats\": True},\n    {\"Key\": \"vap5g0priv\", \"Name\": \"Wifi 5GHz\",    \"Type\": \"wif\", \"SwapStats\": True}\n]\n\n# Interface name mapping\nINTF_NAME_MAP_WR = {\"Eth0\": \"Eth1\", \"Eth1\": \"Eth2\",\n                    \"Eth0-1\": \"Eth1\", \"Eth1-1\": \"Eth2\",\n                    \"Eth1_0\": \"Eth1\", \"Eth1_1\": \"Eth2\"}\n\n\n# ################################ LmRepeater class ################################\nclass LmRepeater:\n\n    ### Create Repeater tab\n    def create_repeater_tab(self, repeater):\n        repeater._tab = QtWidgets.QWidget(objectName=TAB_NAME)\n        repeater._tab.setProperty(\"Key\", repeater._key)\n\n        # Statistics list\n        stats_list = LmTableWidget(objectName=\"statsList\")\n        stats_list.set_columns({StatsCol.Key: [\"Key\", 0, None],\n                                StatsCol.Name: [lx(\"Name\"), 100, \"stats_Name\"],\n                                StatsCol.Down: [lx(\"Rx\"), 65, \"stats_Rx\"],\n                                StatsCol.Up: [lx(\"Tx\"), 65, \"stats_Tx\"],\n                                StatsCol.DownRate: [lx(\"RxRate\"), 65, \"stats_RxRate\"],\n                                StatsCol.UpRate: [lx(\"TxRate\"), 65, \"stats_TxRate\"]})\n        stats_list.set_header_resize([StatsCol.Down, StatsCol.Up, StatsCol.DownRate, StatsCol.UpRate])\n        stats_list.set_standard_setup(self, allow_sel=False, allow_sort=False)\n        stats_list.setMinimumWidth(450)\n\n        for i, s in enumerate(repeater._netIntf):\n            stats_list.insertRow(i)\n            stats_list.setItem(i, StatsCol.Key, QtWidgets.QTableWidgetItem(s[\"Key\"]))\n            stats_list.setItem(i, StatsCol.Name, QtWidgets.QTableWidgetItem(s[\"Name\"]))\n        stats_list_size = LmConfig.table_height(len(repeater._netIntf))\n        stats_list.setMinimumHeight(stats_list_size)\n        stats_list.setMaximumHeight(stats_list_size)\n\n        repeater._stats_list = stats_list\n\n        # 1st action buttons line\n        buttons_set1 = QtWidgets.QHBoxLayout()\n        buttons_set1.setSpacing(20)\n\n        wifi_on_button = QtWidgets.QPushButton(lx(\"Wifi ON\"), objectName=\"wifiOn\")\n        wifi_on_button.clicked.connect(repeater.wifi_on_button_click)\n        buttons_set1.addWidget(wifi_on_button)\n\n        wifi_off_button = QtWidgets.QPushButton(lx(\"Wifi OFF\"), objectName=\"wifiOff\")\n        wifi_off_button.clicked.connect(repeater.wifi_off_button_click)\n        buttons_set1.addWidget(wifi_off_button)\n\n        # 2nd action buttons line\n        if repeater._model >= 6:     # Scheduler available only starting WR6\n            buttons_set2 = QtWidgets.QHBoxLayout()\n            buttons_set2.setSpacing(20)\n\n            scheduler_on_button = QtWidgets.QPushButton(lx(\"Wifi Scheduler ON\"), objectName=\"schedulerOn\")\n            scheduler_on_button.clicked.connect(repeater.scheduler_on_button_click)\n            buttons_set2.addWidget(scheduler_on_button)\n\n            scheduler_off_button = QtWidgets.QPushButton(lx(\"Wifi Scheduler OFF\"), objectName=\"schedulerOff\")\n            scheduler_off_button.clicked.connect(repeater.scheduler_off_button_click)\n            buttons_set2.addWidget(scheduler_off_button)\n\n        # 3nd action buttons line\n        buttons_set3 = QtWidgets.QHBoxLayout()\n        buttons_set3.setSpacing(20)\n\n        reboot_repeater_button = QtWidgets.QPushButton(lx(\"Reboot Repeater...\"), objectName=\"rebootRepeater\")\n        reboot_repeater_button.clicked.connect(repeater.reboot_repeater_button_click)\n        buttons_set3.addWidget(reboot_repeater_button)\n\n        reset_repeater_button = QtWidgets.QPushButton(lx(\"Reset Repeater...\"), objectName=\"resetRepeater\")\n        reset_repeater_button.clicked.connect(repeater.reset_repeater_button_click)\n        buttons_set3.addWidget(reset_repeater_button)\n\n        # 4nd action buttons line\n        if repeater._model >= 6:     # Reboot history available only starting WR6\n            buttons_set4 = QtWidgets.QHBoxLayout()\n            buttons_set4.setSpacing(20)\n\n            reboot_history_button = QtWidgets.QPushButton(lx(\"Reboot History...\"), objectName=\"rebootHistory\")\n            reboot_history_button.clicked.connect(repeater.reboot_history_button_click)\n            buttons_set4.addWidget(reboot_history_button)\n\n        # 5th action buttons line\n        buttons_set5 = QtWidgets.QHBoxLayout()\n        buttons_set5.setSpacing(20)\n\n        call_api_button = QtWidgets.QPushButton(lx(\"Call APIs...\"), objectName=\"callApis\")\n        call_api_button.clicked.connect(repeater.call_api_button_click)\n        buttons_set5.addWidget(call_api_button)\n\n        resign_button = QtWidgets.QPushButton(lx(\"Resign...\"), objectName=\"resign\")\n        resign_button.clicked.connect(repeater.resign_button_click)\n        buttons_set5.addWidget(resign_button)\n\n        # Action buttons group box\n        group_box = QtWidgets.QGroupBox(lx(\"Actions\"), objectName=\"actionsGroup\")\n        group_box_layout = QtWidgets.QVBoxLayout()\n        group_box_layout.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        group_box_layout.setSpacing(20)\n        group_box_layout.addLayout(buttons_set1, 0)\n        if repeater._model >= 6:     # Scheduler available only starting WR6\n            group_box_layout.addLayout(buttons_set2, 0)\n        group_box_layout.addLayout(buttons_set3, 0)\n        if repeater._model >= 6:     # Reboot history available only starting WR6\n            group_box_layout.addLayout(buttons_set4, 0)\n        group_box_layout.addLayout(buttons_set5, 0)\n        group_box.setLayout(group_box_layout)\n\n        # Stats & actions box\n        left_box = QtWidgets.QVBoxLayout()\n        left_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        left_box.setSpacing(20)\n        left_box.addWidget(repeater._stats_list, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        left_box.addWidget(group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Attribute list\n        alist = LmTableWidget(objectName=\"repeaterAList\")\n        alist.set_columns({InfoCol.Attribute: [lx(\"Attribute\"), 200, \"alist_Attribute\"],\n                           InfoCol.Value: [lx(\"Value\"), 600, \"alist_Value\"]})\n        alist.set_header_resize([InfoCol.Value])\n        alist.set_standard_setup(self, allow_sel=False, allow_sort=False)\n        repeater._alist = alist\n\n        # Lists layout\n        list_box = QtWidgets.QHBoxLayout()\n        list_box.setSpacing(10)\n        list_box.addLayout(left_box, 0)\n        list_box.addWidget(repeater._alist, 1)\n\n        # Button bar\n        buttons_box = QtWidgets.QHBoxLayout()\n        buttons_box.setSpacing(10)\n\n        repeater_info_button = QtWidgets.QPushButton(lx(\"Repeater Infos\"), objectName=\"repeaterInfo\")\n        repeater_info_button.clicked.connect(repeater.repeater_info_button_click)\n        buttons_box.addWidget(repeater_info_button)\n\n        wifi_info_button = QtWidgets.QPushButton(lx(\"Wifi Infos\"), objectName=\"wifiInfo\")\n        wifi_info_button.clicked.connect(repeater.wifi_info_button_click)\n        buttons_box.addWidget(wifi_info_button)\n\n        lan_info_button = QtWidgets.QPushButton(lx(\"LAN Infos\"), objectName=\"lanInfo\")\n        lan_info_button.clicked.connect(repeater.lan_info_button_click)\n        buttons_box.addWidget(lan_info_button)\n\n        separator = QtWidgets.QFrame()\n        separator.setFrameShape(QtWidgets.QFrame.Shape.VLine)\n        separator.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)\n        buttons_box.addWidget(separator)\n\n        export_info_button = QtWidgets.QPushButton(lx(\"Export...\"), objectName=\"exportInfo\")\n        export_info_button.clicked.connect(repeater.export_info_button_click)\n        buttons_box.addWidget(export_info_button)\n\n        # Layout\n        vbox = QtWidgets.QVBoxLayout()\n        vbox.setSpacing(10)\n        vbox.addLayout(list_box, 0)\n        vbox.addLayout(buttons_box, 1)\n        repeater._tab.setLayout(vbox)\n\n        LmConfig.set_tooltips(repeater._tab, \"repeater\")\n        self._tab_widget.insertTab(repeater.tab_index_from_config(), repeater._tab, repeater._name)\n        repeater.set_tab_icon()\n\n\n    ### Identify potential Wifi Repeater device & add it to the list\n    # PowerManagement:getElements() method returns a \"REPEATER_DEVICES\" entry that suggests that a generic way to\n    # identify repeaters could be to check the tags with the expression \"ssw and (wifi or eth)\"\n    def identify_repeater(self, device):\n        device_type = device.get(\"DeviceType\", \"\")\n        prod_class = device.get(\"ProductClass\", \"\")\n\n        if (device_type.lower() in WIFI_REPEATER_TYPES) or (prod_class in WIFI_REPEATER_PRODUCT_CLASSES):\n            key = device.get(\"Key\", \"\")\n\n            # Check if not already there\n            for r in self._repeaters:\n                if r._key == key:\n                    return None\n\n            index = len(self._repeaters)\n\n            mac_addr = device.get(\"PhysAddress\", \"\")\n            try:\n                name = LmConf.MacAddrTable[mac_addr]\n            except KeyError:\n                name = DEFAULT_REPEATER_NAME + str(index + 1)\n\n            # Determine model\n            model_name = None\n            ssw = device.get(\"SSW\")\n            if isinstance(ssw, dict):\n                model_name = ssw.get(\"ModelName\")\n            if model_name is None:\n                model_name = prod_class     # In some cases the model name is indicated in product class\n            try:\n                model = WIFI_REPEATER_MODEL_MAP[model_name]\n            except KeyError:\n                model = WIFI_REPEATER_DEFAULT_MODEL\n\n            ip_struct = LmTools.determine_ip(device)\n            ip_address = ip_struct.get(\"Address\") if ip_struct else None\n\n            active = device.get(\"Active\", False)\n\n            repeater = LmRepHandler(self, index, key, mac_addr, name, model, model_name, ip_address, active)\n            self._repeaters.append(repeater)\n\n            return repeater\n\n        return None\n\n\n    ### Add and setup a potential new Wifi Repeater device\n    def add_potential_repeater(self, device):\n        repeater = self.identify_repeater(device)\n        if repeater:\n            self.create_repeater_tab(repeater)\n            repeater.signin()\n\n\n    ### Find a repeater in the list from device key\n    def find_repeater(self, device_key):\n        return next((r for r in self._repeaters if r._key == device_key), None)\n\n\n    ### Remove a potential Wifi Repeater device - not really remove, rather desactivate\n    def remove_potential_repeater(self, device_key):\n        repeater = self.find_repeater(device_key)\n        if repeater:\n            repeater.process_active_event(False)\n\n\n    ### Init repeater tabs & sessions\n    def init_repeaters(self):\n        for r in self._repeaters:\n            self.create_repeater_tab(r)\n        self.signin_repeaters()\n\n\n    ### Sign in to all repeaters\n    def signin_repeaters(self):\n        self._task.start(lx(\"Signing in to repeaters...\"))\n        try:\n            for r in self._repeaters:\n                r.signin()\n        finally:\n            self._task.end()\n\n\n    ### Sign out for all repeaters\n    def signout_repeaters(self):\n        for r in self._repeaters:\n            r.signout()\n\n\n    ### React to device a name update\n    def repeater_update_device_name(self, device_key):\n        repeater = self.find_repeater(device_key)\n        if repeater:\n            repeater.process_update_device_name()\n\n\n    ### React to device updated event\n    def repeater_device_updated_event(self, device_key, event):\n        repeater = self.find_repeater(device_key)\n        if repeater:\n            repeater.process_device_updated_event(event)\n\n\n    ### React to active status change event\n    def repeater_active_event(self, device_key, is_active):\n        repeater = self.find_repeater(device_key)\n        if repeater:\n            repeater.process_active_event(is_active)\n\n\n    ### React to IP Address change event\n    def repeater_ip_address_event(self, device_key, ipv4):\n        repeater = self.find_repeater(device_key)\n        if repeater:\n            repeater.process_ip_address_event(ipv4)\n\n\n    ### Get Repeaters Wifi statuses (used by ActionsTab)\n    def get_repeaters_wifi_status(self):\n        return [r.get_wifi_status() for r in self._repeaters]\n\n\n    ### Init the Repeater stats collector thread\n    def init_repeater_stats_loop(self):\n        self._repeater_stats_loop = None\n\n\n    ### Start the Repeater stats collector thread\n    def start_repeater_stats_loop(self):\n        self._repeater_stats_loop = RepeaterStatsThread(self._repeaters)\n        self._repeater_stats_loop.connect_processor(self.process_repeater_stats)\n\n\n    ### Suspend the Repeater stats collector thread\n    def suspend_repeater_stats_loop(self):\n        if self._repeater_stats_loop:\n            self._repeater_stats_loop.stop()\n\n\n    ### Resume the Repeater stats collector thread\n    def resume_repeater_stats_loop(self):\n        if self._repeater_stats_loop:\n            self._repeater_stats_loop._resume.emit()\n        else:\n            self.start_repeater_stats_loop()\n\n\n    ### Stop the Repeater stats collector thread\n    def stop_repeater_stats_loop(self):\n        if self._repeater_stats_loop:\n            self._repeater_stats_loop.quit()\n            self._repeater_stats_loop = None\n\n\n    ### Process a new Repeater stats\n    def process_repeater_stats(self, stats):\n        # Get stats data\n        r = stats[\"Repeater\"]\n        key = stats[\"Key\"]\n        timestamp = stats[\"Timestamp\"]\n        down_bytes = stats[\"RxBytes\"]\n        up_bytes = stats[\"TxBytes\"]\n        down_errors = stats[\"RxErrors\"]\n        up_errors = stats[\"TxErrors\"]\n        down_rate_bytes = 0\n        up_rate_bytes = 0\n        down_delta_errors = 0\n        up_delta_errors = 0\n\n        # Try to find a previously received statistic record\n        prev_stats = r._stats_map.get(key)\n        if prev_stats:\n            prev_timestamp = prev_stats[\"Timestamp\"]\n            prev_down_bytes = prev_stats[\"RxBytes\"]\n            prev_up_bytes = prev_stats[\"TxBytes\"]\n            elapsed = int((timestamp - prev_timestamp).total_seconds())\n            if elapsed > 0:\n                if down_bytes > prev_down_bytes:\n                    down_rate_bytes = int((down_bytes - prev_down_bytes) / elapsed)\n                if up_bytes > prev_up_bytes:\n                    up_rate_bytes = int((up_bytes - prev_up_bytes) / elapsed)\n            down_delta_errors = down_errors - prev_stats[\"RxErrors\"]\n            up_delta_errors = up_errors - prev_stats[\"TxErrors\"]\n\n        # Remember current stats\n        r._stats_map[key] = stats\n\n        # Update UI\n        list_line = r.find_stats_line(key)\n        if list_line >= 0:\n            down = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(down_bytes))\n            down.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            if down_errors:\n                down.setForeground(QtCore.Qt.GlobalColor.red)\n            r._stats_list.setItem(list_line, StatsCol.Down, down)\n\n            up = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(up_bytes))\n            up.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            if up_errors:\n                up.setForeground(QtCore.Qt.GlobalColor.red)\n            r._stats_list.setItem(list_line, StatsCol.Up, up)\n\n            if down_rate_bytes:\n                down_rate = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(down_rate_bytes) + \"/s\")\n                if down_delta_errors:\n                    down_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                down_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                down_rate = QtWidgets.QTableWidgetItem(\"\")\n            r._stats_list.setItem(list_line, StatsCol.DownRate, down_rate)\n\n            if up_rate_bytes:\n                up_rate = QtWidgets.QTableWidgetItem(LmTools.fmt_bytes(up_rate_bytes) + \"/s\")\n                if up_delta_errors:\n                    up_rate.setForeground(QtCore.Qt.GlobalColor.red)\n                up_rate.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignRight | QtCore.Qt.AlignmentFlag.AlignVCenter)\n            else:\n                up_rate = QtWidgets.QTableWidgetItem(\"\")\n            r._stats_list.setItem(list_line, StatsCol.UpRate, up_rate)\n\n\n\n# ################################ LmRepHandler class ################################\nclass LmRepHandler:\n\n    ### Init handler\n    def __init__(self, app, index, key, mac_addr, name, model, model_name, ip_address, active):\n        self._app = app\n        self._key = key\n        self._mac_addr = mac_addr\n        self._name = name\n        self._model = model\n        self._model_name = model_name\n        self._ip_addr = ip_address\n        self._active = active\n        self._api = None\n        self._signed = False\n        self._tab = None\n        self._index = index\n        self._stats_list = None\n        self._stats_map = {}\n        self._alist = None\n        self.set_net_intf()\n\n\n    ### Set Net Interfaces according to Repeater model\n    def set_net_intf(self):\n        if self._model == 5:\n            self._netIntf = NET_INTF_WR5\n        elif self._model == 6:\n            self._netIntf = NET_INTF_WR6\n        else:\n            self._netIntf = []\n\n\n    ### Sign in to repeater\n    def signin(self, force=False, silent=False):\n        if (not force) and (not self.is_active()):\n            return\n\n        self.signout()\n\n        user, password = LmConf.get_repeater_user_password(self._mac_addr)\n\n        while True:\n            session = LmSession(f\"http://{self._ip_addr}/\", self._name)\n            try:\n                # Need to ignore cookie as sessions opened with >1h cookie generate errors\n                r = session.signin(user, password, True)\n            except Exception as e:\n                LmTools.error(str(e))\n                r = -1\n            if r > 0:\n                self._signed = True\n                break\n\n            if r < 0:\n                if not silent:\n                    self._app.display_error(mx(\"Cannot connect to repeater {} ({}).\", \"cnxErr\").format(self._name, self._ip_addr))\n                session = None\n                self._signed = False\n                break\n\n            if silent:\n                ok = False\n            else:\n                self._app._task.suspend()\n                password, ok = QtWidgets.QInputDialog.getText(self._app, lx(\"Wrong repeater password\"),\n                                                              lx(\"Please enter password for repeater {0} ({1}):\").format(self._name, self._ip_addr),\n                                                              QtWidgets.QLineEdit.EchoMode.Password,\n                                                              text=password)\n                self._app._task.resume()\n            if ok:\n                # Remove unwanted characters from password (can be set via Paste action)\n                password = re.sub(\"[\\n\\t]\", \"\", password)\n                LmConf.set_repeater_password(self._mac_addr, password)\n            else:\n                session = None\n                self._signed = False\n                break\n\n        self._api = ApiRegistry(session, is_repeater=True) if session else None\n        if self._api:\n            self._api._info.set_mac(self._mac_addr)\n            self._api._info.set_model(self._model)\n            self._api._info.set_model_name(self._model_name)\n            self._api._intf.set_list(self._netIntf)\n        self.set_tab_icon()\n\n\n    ### Check if signed to repeater\n    def is_signed(self):\n        return self._signed\n\n\n    ### Sign out from repeater\n    def signout(self):\n        if self.is_signed():\n            self._signed = False\n            if self._api:\n                self._api.close()\n                self._api = None\n            self.set_tab_icon()\n\n\n    ### Check if active\n    def is_active(self):\n        return (self._ip_addr is not None) and self._active\n\n\n    ### Get tab index from configuration at creation time\n    def tab_index_from_config(self):\n        # If no config, append\n        n = self._app._tab_widget.count()\n        if LmConf.Tabs is None:\n            return n\n\n        # If not in config, append\n        entry_name = f\"{TAB_NAME}_{self._key}\"\n        try:\n            i = LmConf.Tabs.index(entry_name)\n        except ValueError:\n            return n\n\n        # Try to find the tab immediately on the left\n        for j in range(i - 1, -1, -1):\n            t = LmConf.Tabs[j]\n            if t.startswith(f\"{TAB_NAME}_\"):\n                k = t[len(TAB_NAME) + 1:]\n                t = TAB_NAME\n            else:\n                k = None\n\n            left_tab_index = self._app.get_tab_index(t, k)\n            if left_tab_index != -1:\n                return left_tab_index + 1\n\n        # No left tab found, must be the first\n        return 0\n\n\n    ### Get tab index\n    def tab_index(self):\n        if self._tab:\n            return self._app._tab_widget.indexOf(self._tab)\n        return -1\n\n\n    ### Set tab icon according to connection status\n    def set_tab_icon(self):\n        if self._tab:\n            if self.is_signed():\n                self._app._tab_widget.setTabIcon(self.tab_index(), QtGui.QIcon(LmIcon.TickPixmap))\n            elif self.is_active():\n                self._app._tab_widget.setTabIcon(self.tab_index(), QtGui.QIcon(LmIcon.DenyPixmap))\n            else:\n                self._app._tab_widget.setTabIcon(self.tab_index(), QtGui.QIcon(LmIcon.CrossPixmap))\n\n\n    ### Find Repeater stats line from stat key\n    def find_stats_line(self, stats_key):\n        if self._stats_list and stats_key:\n            for i in range(self._stats_list.rowCount()):\n                if self._stats_list.item(i, StatsCol.Key).text() == stats_key:\n                    return i\n        return -1\n\n\n    ### Process an update of the device name\n    def process_update_device_name(self):\n        new_name = LmConf.MacAddrTable.get(self._key, None)\n        if new_name is None:\n            new_name = DEFAULT_REPEATER_NAME + str(self._index + 1)\n        self._name = new_name\n        self._app._tab_widget.setTabText(self.tab_index(), self._name)\n\n\n    ### Process a device updated event\n    def process_device_updated_event(self, event):\n        ipv4_struct = LmTools.determine_ip(event)\n        ipv4 = ipv4_struct.get(\"Address\") if ipv4_struct else None\n        if self._ip_addr != ipv4:\n            self.process_ip_address_event(ipv4)\n\n        self.process_active_event(event.get(\"Active\", False))\n\n\n    ### Process an active status change event\n    def process_active_event(self, is_active):\n        if self._active != is_active:\n            if is_active:\n                self._active = True\n                self.signin()\n            else:\n                self._active = False\n                self._signed = False\n                self._api = None\n                self.set_tab_icon()\n\n\n    ### Process a IP Address change event\n    def process_ip_address_event(self, ipv4):\n        self._signed = False\n        self._api = None\n        self._ip_addr = ipv4\n        self.set_tab_icon()\n        self.signin()\n\n\n    ### Click on Repeater infos button\n    def repeater_info_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Getting repeater information...\"))\n            try:\n                self._alist.clearContents()\n                self._alist.setRowCount(0)\n                self.load_repeater_info()\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Wifi infos button\n    def wifi_info_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Getting Wifi information...\"))\n            try:\n                self._alist.clearContents()\n                self._alist.setRowCount(0)\n                self.load_wifi_info()\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on LAN infos button\n    def lan_info_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Getting LAN information...\"))\n            try:\n                self._alist.clearContents()\n                self._alist.setRowCount(0)\n                self.load_lan_info()\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Export infos button\n    def export_info_button_click(self):\n        if self.is_signed():\n            file_name = QtWidgets.QFileDialog.getSaveFileName(self._app, lx(\"Save File\"), lx(\"{} Infos.txt\").format(self._name), \"*.txt\")[0]\n            if not file_name:\n                return\n\n            try:\n                self._app._export_file = open(file_name, \"w\")\n            except Exception as e:\n                LmTools.error(str(e))\n                self._app.display_error(mx(\"Cannot create the file.\", \"createFileErr\"))\n                return\n\n            self._app._task.start(lx(\"Exporting all information...\"))\n            try:\n                i = 0\n                i = self.load_repeater_info(i)\n                i = self.load_wifi_info(i)\n                i = self.load_lan_info(i)\n            finally:\n                self._app._task.end()\n\n                try:\n                    self._app._export_file.close()\n                except Exception as e:\n                    LmTools.error(str(e))\n                    self._app.display_error(mx(\"Cannot save the file.\", \"saveFileErr\"))\n\n                self._app._export_file = None\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Wifi ON button\n    def wifi_on_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Activating Repeater Wifi...\"))\n            try:\n                self._api._wifi.set_enable(True)\n            except Exception as e:\n                self._app.display_error(str(e))\n            else:\n                self._app.display_status(mx(\"Wifi activated.\", \"wifiOn\"))\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Wifi OFF button\n    def wifi_off_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Deactivating Repeater Wifi...\"))\n            try:\n                self._api._wifi.set_enable(False)\n            except Exception as e:\n                self._app.display_error(str(e))\n            else:\n                self._app.display_status(mx(\"Wifi deactivated.\", \"wifiOff\"))\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Wifi Scheduler ON button\n    def scheduler_on_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Activating Repeater Scheduler...\"))\n            try:\n                self._api._wifi.set_scheduler_enable(True)\n            except Exception as e:\n                self._app.display_error(str(e))\n            else:\n                self._app.display_status(mx(\"Scheduler activated.\", \"schedOn\"))\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Wifi Scheduler OFF button\n    def scheduler_off_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Deactivating Repeater Scheduler...\"))\n            try:\n                self._api._wifi.set_scheduler_enable(False)\n            except Exception as e:\n                self._app.display_error(str(e))\n            else:\n                self._app.display_status(mx(\"Scheduler deactivated.\", \"schedOff\"))\n            finally:\n                self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Reboot Repeater button\n    def reboot_repeater_button_click(self):\n        if self.is_signed():\n            if self._app.ask_question(mx(\"Are you sure you want to reboot the Repeater?\", \"reboot\")):\n                self._app._task.start(lx(\"Rebooting Repeater...\"))\n                try:\n                    self._api._reboot.reboot_device(reason=\"WebUI reboot\")\n                except Exception as e:\n                    self._app.display_error(str(e))\n                else:\n                    self._app.display_status(mx(\"Repeater is now restarting.\", \"rebooting\"))\n                finally:\n                    self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Reset Repeater button\n    def reset_repeater_button_click(self):\n        if self.is_signed():\n            if self._app.ask_question(mx(\"Are you sure you want to reset the Repeater?\", \"reset\")):\n                self._app._task.start(lx(\"Reseting Repeater...\"))\n                try:\n                    self._api._reboot.factory_reset(reason=\"WebUI reset\")\n                except Exception as e:\n                    self._app.display_error(str(e))\n                else:\n                    self._app.display_status(mx(\"The repeater is being reset.\", \"reseting\"))\n                finally:\n                    self._app._task.end()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Reboot History button\n    def reboot_history_button_click(self):\n        if self.is_signed():\n            self._app._task.start(lx(\"Getting Reboot History...\"))\n            try:\n                d = self._api._reboot.get_history()\n            except Exception as e:\n                self._app.display_error(str(e))\n                return\n            finally:\n                self._app._task.end()\n\n            history_dialog = RebootHistoryDialog(\"Repeater\", self._app)\n            history_dialog.load_history(d)\n            history_dialog.exec()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on call APIs button\n    def call_api_button_click(self):\n        if self.is_signed():\n            dialog = CallApiDialog(self._api, self._app)\n            dialog.exec()\n        else:\n            self._app.display_error(mx(\"Not signed to repeater.\", \"noSign\"))\n\n\n    ### Click on Resign button\n    def resign_button_click(self):\n        do_it = False\n        force_it = False\n        if self.is_active():\n            do_it = self._app.ask_question(mx(\"Are you sure you want to resign to the Repeater?\", \"resign\"))\n        else:\n            do_it = self._app.ask_question(mx(\"Repeater is inactive. Do you want to force signin?\", \"forceResign\"))\n            force_it = True\n        if do_it:\n            self._app._task.start(lx(\"Signing in to repeater...\"))\n            try:\n                self.signin(force_it)\n            finally:\n                self._app._task.end()\n\n            # Sometimes the active event isn't raised\n            if self.is_signed():\n                self._active = True\n\n\n    ### Add a title line in an info attribute/value list\n    def add_title_line(self, line, title):\n        return self._app.add_title_line(self._alist, line, title)\n\n\n    ### Add a line in an info attribute/value list\n    def add_info_line(self, line, attribute, value, qualifier=LmQtTools.ValQual.Default):\n        return self._app.add_info_line(self._alist, line, attribute, value, qualifier)\n\n\n    ### Load Repeater infos\n    def load_repeater_info(self, index=0):\n        i = self.add_title_line(index, lx(\"Repeater Information\"))\n\n        try:\n            d = self._api._info.get_device_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"Repeater Infos\"), \"DeviceInfo:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"Model Name\"), d.get(\"ModelName\"))\n            i = self.add_info_line(i, lx(\"Repeater Up Time\"), LmTools.fmt_time(d.get(\"UpTime\")))\n            i = self.add_info_line(i, lx(\"Serial Number\"), d.get(\"SerialNumber\"))\n            i = self.add_info_line(i, lx(\"Hardware Version\"), d.get(\"HardwareVersion\"))\n            i = self.add_info_line(i, lx(\"Software Version\"), d.get(\"SoftwareVersion\"))\n            i = self.add_info_line(i, lx(\"Orange Firmware Version\"), d.get(\"AdditionalSoftwareVersion\"))\n            i = self.add_info_line(i, lx(\"Country\"), LmTools.fmt_str_upper(d.get(\"Country\")))\n\n        try:\n            d = self._api._reboot.get_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"Repeater Infos\"), \"NMC.Reboot:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"Total Number Of Reboots\"), LmTools.fmt_int(d.get(\"BootCounter\")))\n\n        try:\n            d = self._api._info.get_time()\n        except Exception as e:\n            i = self.add_info_line(i, lx(\"Time\"), \"Time:getTime query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"Time\"), d.get(\"time\"))\n\n        # Unfortunately DeviceInfo.MemoryStatus:get service access is denied.\n\n        return i\n\n\n    ### Load Wifi infos\n    def load_wifi_info(self, index=0):\n        i = self.add_title_line(index, lx(\"Wifi Information\"))\n\n        try:\n            d = self._api._wifi.get_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"Wifi\"), \"NMC.Wifi:get query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"Enabled\"), LmTools.fmt_bool(d.get(\"Enable\")))\n            i = self.add_info_line(i, lx(\"Active\"), LmTools.fmt_bool(d.get(\"Status\")))\n            i = self.add_info_line(i, lx(\"Mode\"), d.get(\"EnableTarget\"))\n            i = self.add_info_line(i, lx(\"WPS Mode\"), d.get(\"WPSMode\"))\n            i = self.add_info_line(i, lx(\"Link Type\"), d.get(\"CurrentBackhaul\"))\n            i = self.add_info_line(i, lx(\"Read Only\"), LmTools.fmt_bool(d.get(\"ReadOnlyStatus\")))\n            i = self.add_info_line(i, lx(\"Pairing Status\"), d.get(\"PairingStatus\"))\n            i = self.add_info_line(i, lx(\"PIN Code\"), d.get(\"PINCode\"))\n\n        if self._api._wifi.has_scheduler():\n            try:\n                d = self._api._wifi.get_scheduler_enable()\n            except Exception as e:\n                LmTools.error(str(e))\n                i = self.add_info_line(i, lx(\"Scheduler Enabled\"), \"Scheduler:getCompleteSchedules query error\", LmQtTools.ValQual.Error)\n            else:\n                 i = self.add_info_line(i, lx(\"Scheduler Enabled\"), LmTools.fmt_bool(d))\n\n\n        try:\n            b, w, d = self._api._intf.get_wifi_mibs()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"Wifi\"), \"NeMo.Intf.lan:getMIBs query error\", LmQtTools.ValQual.Error)\n        else:\n            for s in self._netIntf:\n                if s[\"Type\"] != \"wif\":\n                    continue\n                i = self.add_title_line(i, s[\"Name\"])\n\n                # Get Wifi interface key in wlanradio list\n                intf_key = None\n                base = b.get(s[\"Key\"])\n                if base is not None:\n                    i = self.add_info_line(i, lx(\"Enabled\"), LmTools.fmt_bool(base.get(\"Enable\")))\n                    i = self.add_info_line(i, lx(\"Active\"), LmTools.fmt_bool(base.get(\"Status\")))\n                    low_level_intf = base.get(\"LLIntf\")\n                    if low_level_intf is not None:\n                        intf_key = next(iter(low_level_intf))\n\n                q = w.get(intf_key) if intf_key is not None else None\n                r = d.get(s[\"Key\"])\n                if (q is None) or (r is None):\n                    continue\n\n                i = self.add_info_line(i, lx(\"Radio Status\"), q.get(\"RadioStatus\"))\n                i = self.add_info_line(i, lx(\"VAP Status\"), r.get(\"VAPStatus\"))\n                i = self.add_info_line(i, lx(\"Vendor Name\"), LmTools.fmt_str_upper(q.get(\"VendorName\")))\n                i = self.add_info_line(i, lx(\"MAC Address\"), LmTools.fmt_str_upper(r.get(\"MACAddress\")))\n                i = self.add_info_line(i, lx(\"SSID\"), r.get(\"SSID\"))\n                i = self.add_info_line(i, lx(\"SSID Advertisement\"), LmTools.fmt_bool(r.get(\"SSIDAdvertisementEnabled\")))\n\n                t = r.get(\"Security\")\n                if t is not None:\n                    i = self.add_info_line(i, lx(\"Security Mode\"), t.get(\"ModeEnabled\"))\n                    i = self.add_info_line(i, lx(\"WEP Key\"), t.get(\"WEPKey\"))\n                    i = self.add_info_line(i, lx(\"PreShared Key\"), t.get(\"PreSharedKey\"))\n                    i = self.add_info_line(i, lx(\"Key Pass Phrase\"), t.get(\"KeyPassPhrase\"))\n\n                t = r.get(\"WPS\")\n                if t is not None:\n                    i = self.add_info_line(i, lx(\"WPS Enabled\"), LmTools.fmt_bool(t.get(\"Enable\")))\n                    i = self.add_info_line(i, lx(\"WPS Methods\"), t.get(\"ConfigMethodsEnabled\"))\n                    i = self.add_info_line(i, lx(\"WPS Self PIN\"), t.get(\"SelfPIN\"))\n                    i = self.add_info_line(i, lx(\"WPS Pairing In Progress\"), LmTools.fmt_bool(t.get(\"PairingInProgress\")))\n\n                t = r.get(\"MACFiltering\")\n                if t is not None:\n                    i = self.add_info_line(i, lx(\"MAC Filtering\"), t.get(\"Mode\"))\n\n                i = self.add_info_line(i, lx(\"Max Bitrate\"), LmTools.fmt_int(q.get(\"MaxBitRate\")))\n                i = self.add_info_line(i, lx(\"AP Mode\"), LmTools.fmt_bool(q.get(\"AP_Mode\")))\n                i = self.add_info_line(i, lx(\"STA Mode\"), LmTools.fmt_bool(q.get(\"STA_Mode\")))\n                i = self.add_info_line(i, lx(\"WDS Mode\"), LmTools.fmt_bool(q.get(\"WDS_Mode\")))\n                i = self.add_info_line(i, lx(\"WET Mode\"), LmTools.fmt_bool(q.get(\"WET_Mode\")))\n                i = self.add_info_line(i, lx(\"Frequency Band\"), q.get(\"OperatingFrequencyBand\"))\n                i = self.add_info_line(i, lx(\"Channel Bandwidth\"), q.get(\"CurrentOperatingChannelBandwidth\"))\n                i = self.add_info_line(i, lx(\"Standard\"), q.get(\"OperatingStandards\"))\n                i = self.add_info_line(i, lx(\"Channel\"), LmTools.fmt_int(q.get(\"Channel\")))\n                i = self.add_info_line(i, lx(\"Auto Channel Supported\"), LmTools.fmt_bool(q.get(\"AutoChannelSupported\")))\n                i = self.add_info_line(i, lx(\"Auto Channel Enabled\"), LmTools.fmt_bool(q.get(\"AutoChannelEnable\")))\n                i = self.add_info_line(i, lx(\"Channel Change Reason\"), q.get(\"ChannelChangeReason\"))\n                i = self.add_info_line(i, lx(\"Max Associated Devices\"), LmTools.fmt_int(q.get(\"MaxAssociatedDevices\")))\n                i = self.add_info_line(i, lx(\"Active Associated Devices\"), LmTools.fmt_int(q.get(\"ActiveAssociatedDevices\")))\n                i = self.add_info_line(i, lx(\"Noise\"), LmTools.fmt_int(q.get(\"Noise\")))\n                i = self.add_info_line(i, lx(\"Antenna Defect\"), LmTools.fmt_bool(q.get(\"AntennaDefect\")))\n\n        return i\n\n\n    ### Load LAN infos\n    def load_lan_info(self, index=0):\n        i = self.add_title_line(index, lx(\"LAN Information\"))\n\n        try:\n            d = self._api._info.get_wan_status()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"LAN Infos\"), \"NMC:getWANStatus query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"MAC Address\"), LmTools.fmt_str_upper(d.get(\"MACAddress\")))\n            i = self.add_info_line(i, lx(\"Link Status\"), LmTools.fmt_str_capitalize(d.get(\"LinkState\")))\n            i = self.add_info_line(i, lx(\"Link Type\"), LmTools.fmt_str_upper(d.get(\"LinkType\")))\n            i = self.add_info_line(i, lx(\"Protocol\"), LmTools.fmt_str_upper(d.get(\"Protocol\")))\n            i = self.add_info_line(i, lx(\"Connection Status\"), d.get(\"ConnectionState\"))\n            i = self.add_info_line(i, lx(\"Last Connection Error\"), d.get(\"LastConnectionError\"))\n            i = self.add_info_line(i, lx(\"IP Address\"), d.get(\"IPAddress\"))\n            i = self.add_info_line(i, lx(\"Remote Gateway\"), d.get(\"RemoteGateway\"))\n            i = self.add_info_line(i, lx(\"DNS Servers\"), d.get(\"DNSServers\"))\n            i = self.add_info_line(i, lx(\"IPv6 Address\"), d.get(\"IPv6Address\"))\n\n        try:\n            d = self._api._info.get_mtu()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"MTU\"), \"NeMo.Intf.data:getFirstParameter query error\", LmQtTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"MTU\"), LmTools.fmt_int(d))\n\n        i = self.add_title_line(i, lx(\"Link to the Livebox\"))\n\n        try:\n            d = self._api._info.get_uplink_info()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"Livebox link Infos\"), \"UplinkMonitor.DefaultGateway:get query error\", LmTools.ValQual.Error)\n        else:\n            i = self.add_info_line(i, lx(\"IP Address\"), d.get(\"IPv4Address\"))\n            i = self.add_info_line(i, lx(\"MAC Address\"), LmTools.fmt_str_upper(d.get(\"MACAddress\")))\n            i = self.add_info_line(i, lx(\"Interface\"), LmTools.fmt_str_capitalize(d.get(\"NeMoIntfName\")))\n\n        try:\n            b, d = self._api._intf.get_eth_mibs()\n        except Exception as e:\n            LmTools.error(str(e))\n            i = self.add_info_line(i, lx(\"LAN\"), \"NeMo.Intf.lan:getMIBs query error\", LmTools.ValQual.Error)\n        else:\n            for s in self._netIntf:\n                if s[\"Type\"] != \"eth\":\n                    continue\n                i = self.add_title_line(i, s[\"Name\"])\n\n                q = b.get(s[\"Key\"])\n                r = d.get(s[\"Key\"])\n                if (q is None) or (r is None):\n                    continue\n\n                i = self.add_info_line(i, lx(\"Enabled\"), LmTools.fmt_bool(q.get(\"Enable\")))\n                i = self.add_info_line(i, lx(\"Active\"), LmTools.fmt_bool(q.get(\"Status\")))\n                i = self.add_info_line(i, lx(\"Current Bit Rate\"), LmTools.fmt_int(r.get(\"CurrentBitRate\")))\n                i = self.add_info_line(i, lx(\"Max Bit Rate Supported\"), LmTools.fmt_int(r.get(\"MaxBitRateSupported\")))\n                i = self.add_info_line(i, lx(\"Current Duplex Mode\"), r.get(\"CurrentDuplexMode\"))\n                i = self.add_info_line(i, lx(\"Power Saving Supported\"), LmTools.fmt_bool(q.get(\"PowerSavingSupported\")))\n                i = self.add_info_line(i, lx(\"Power Saving Enabled\"), LmTools.fmt_bool(q.get(\"PowerSavingEnabled\")))\n\n        return i\n\n\n    ### Get Wifi statuses (used by ActionsTab)\n    def get_wifi_status(self):\n        return self._api._wifi.get_global_wifi_status(self._name, self.is_active(), self.is_signed())\n\n\n\n# ############# Repeaters global stats collector thread #############\nclass RepeaterStatsThread(LmThread):\n    _stats_received = QtCore.pyqtSignal(dict)\n    _resume = QtCore.pyqtSignal()\n\n    def __init__(self, repeaters):\n        super().__init__(None, LmConf.StatsFrequency)\n        self._repeaters = repeaters\n\n\n    def connect_processor(self, processor):\n        self._stats_received.connect(processor)\n\n\n    def task(self):\n        for r in self._repeaters:\n            if r.is_signed():\n                for s in r._netIntf:\n                    if r._api is not None:\n                        try:\n                            d = r._api._stats.get_intf(s[\"Key\"])\n                        except Exception as e:\n                            LmTools.error(str(e))\n                            # If session has timed out on Repeater side, resign\n                            r.signin(silent=True)\n                        else:\n                            if isinstance(d, dict):\n                                e = {\"Repeater\": r,\n                                     \"Key\": s[\"Key\"],\n                                     \"Timestamp\": datetime.datetime.now()}\n                                if s[\"SwapStats\"]:\n                                    e[\"RxBytes\"] = d.get(\"TxBytes\", 0)\n                                    e[\"TxBytes\"] = d.get(\"RxBytes\", 0)\n                                    e[\"RxErrors\"] = d.get(\"TxErrors\", 0)\n                                    e[\"TxErrors\"] = d.get(\"RxErrors\", 0)\n                                else:\n                                    e[\"RxBytes\"] = d.get(\"RxBytes\", 0)\n                                    e[\"TxBytes\"] = d.get(\"TxBytes\", 0)\n                                    e[\"RxErrors\"] = d.get(\"RxErrors\", 0)\n                                    e[\"TxErrors\"] = d.get(\"TxErrors\", 0)\n                                self._stats_received.emit(e)\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/LmTvDecoderTab.py",
    "content": "### Livebox Monitor TV Decoder tab module ###\n\nimport os\nimport json\nimport requests\nimport shutil\n\nfrom PyQt6 import QtCore, QtGui, QtWidgets\n\nfrom LiveboxMonitor.app import LmQtTools, LmConfig\nfrom LiveboxMonitor.app.LmConfig import LmConf\nfrom LiveboxMonitor.app.LmThread import LmThread\nfrom LiveboxMonitor.app.LmIcons import LmIcon\nfrom LiveboxMonitor.api.LmSession import DEFAULT_TIMEOUT\nfrom LiveboxMonitor.api import LmTvDecoderApi\nfrom LiveboxMonitor.api.LmTvDecoderApi import TvDecoderApi\nfrom LiveboxMonitor.lang.LmLanguages import get_tvdecoder_label as lx, get_tvdecoder_message as mx\nfrom LiveboxMonitor.tools import LmTools\n\n\n# ################################ VARS & DEFS ################################\n\n# Tab name\nTAB_NAME = \"tvdecoderTab\"    # 'Key' dynamic property indicates the MAC addr\n\n# Static Config\nDEFAULT_TVDECODER_NAME = \"TV #\"\nTVDECODER_STATUS_FREQ = 3000      # status polling frequency in milliseconds\nLIVEBOX_TV_CACHE_DIR = \"tv\"\nLIVEBOX_TV_CHANNELS_CACHE_FILE = \"channels.json\"\n\n# UI column block widths\nCOL1_WIDTH = 260\nCOL2_WIDTH = 230\nRC_WIDTH = 242\n\nRC_BUTTON_STYLE = \"\"\"\n    QPushButton {\n        background-color: qlineargradient(\n            spread:pad,\n            x1:0,  y1:0, x2:0, y2:1,\n            stop:0    #f0f0f0,\n            stop:0.08 #d0d0d0,\n            stop:0.5  #3a3a3a,\n            stop:1    #000000\n        );\n        border-radius: 14px;\n        border: 2px solid #555555;\n        padding: 6px;\n        color: white;\n        font-size:14px;\n        font-weight:bold;\n    }\n\n    QPushButton:hover {\n        background-color: qlineargradient(\n            spread:pad,\n            x1:0,  y1:0, x2:0, y2:1,\n            stop:0    #ffffff,\n            stop:0.08 #e0e0e0,\n            stop:0.5  #4a4a4a,\n            stop:1    #111111\n        );\n    }\n\n    QPushButton:pressed {\n        background-color: qlineargradient(\n            spread:pad,\n            x1:0,  y1:0, x2:0, y2:1,\n            stop:0    #b0b0b0,\n            stop:0.08 #909090,\n            stop:0.5  #202020,\n            stop:1    #000000\n        );\n    }\n\n    QPushButton:disabled {\n        background-color: qlineargradient(\n            spread:pad,\n            x1:0,  y1:0, x2:0, y2:1,\n            stop:0   #666666,\n            stop:0.5 #444444,\n            stop:1   #2a2a2a\n        );\n        border: 2px solid #444444;\n        color: #888888;\n    }\n    \"\"\"\n\n\n\n# ################################ LmTvDecoder class ################################\nclass LmTvDecoder:\n\n    ### Create TvDecoder tab\n    def create_tvdecoder_tab(self, tvdecoder):\n        tvdecoder._tab = QtWidgets.QWidget(objectName=TAB_NAME)\n        tvdecoder._tab.setProperty(\"Key\", tvdecoder._key)\n\n        # Status\n        status_label = QtWidgets.QLabel(lx(\"Status:\"), objectName=\"statusLabel\")\n        tvdecoder._status = QtWidgets.QLabel(objectName=\"statusValue\")\n        media_type_label = QtWidgets.QLabel(lx(\"Type:\"), objectName=\"mediaTypeLabel\")\n        tvdecoder._media_type = QtWidgets.QLabel(objectName=\"mediaTypeValue\")\n        media_state_label = QtWidgets.QLabel(lx(\"State:\"), objectName=\"mediaStateLabel\")\n        tvdecoder._media_state = QtWidgets.QLabel(objectName=\"mediaStateValue\")\n\n        status_grid = QtWidgets.QGridLayout()\n        status_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        status_grid.setSpacing(10)\n        status_grid.addWidget(status_label, 0, 0)\n        status_grid.addWidget(tvdecoder._status, 0, 1)\n        status_grid.addWidget(media_type_label, 1, 0)\n        status_grid.addWidget(tvdecoder._media_type, 1, 1)\n        status_grid.addWidget(media_state_label, 2, 0)\n        status_grid.addWidget(tvdecoder._media_state, 2, 1)\n        status_grid.setColumnStretch(1, 1)\n\n        status_group_box = QtWidgets.QGroupBox(lx(\"Status\"), objectName=\"statusGroup\")\n        status_group_box.setLayout(status_grid)\n        status_group_box.setFixedWidth(COL1_WIDTH)\n\n        # Device infos\n        vendor_label = QtWidgets.QLabel(lx(\"Vendor:\"), objectName=\"vendorLabel\")\n        tvdecoder._vendor_ui = QtWidgets.QLabel(tvdecoder._vendor, objectName=\"vendorValue\")\n        model_label = QtWidgets.QLabel(lx(\"Model:\"), objectName=\"modelLabel\")\n        tvdecoder._model_ui = QtWidgets.QLabel(tvdecoder._model, objectName=\"modelValue\")\n        mac_label = QtWidgets.QLabel(lx(\"MAC:\"), objectName=\"macLabel\")\n        tvdecoder._mac_ui = QtWidgets.QLabel(tvdecoder._mac_addr, objectName=\"macValue\")\n        ip_label = QtWidgets.QLabel(lx(\"IP:\"), objectName=\"ipLabel\")\n        tvdecoder._ip_ui = QtWidgets.QLabel(tvdecoder._ip_addr, objectName=\"ipValue\")\n\n        infos_grid = QtWidgets.QGridLayout()\n        infos_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        infos_grid.setSpacing(10)\n        infos_grid.addWidget(vendor_label, 0, 0)\n        infos_grid.addWidget(tvdecoder._vendor_ui, 0, 1)\n        infos_grid.addWidget(model_label, 1, 0)\n        infos_grid.addWidget(tvdecoder._model_ui, 1, 1)\n        infos_grid.addWidget(mac_label, 2, 0)\n        infos_grid.addWidget(tvdecoder._mac_ui, 2, 1)\n        infos_grid.addWidget(ip_label, 3, 0)\n        infos_grid.addWidget(tvdecoder._ip_ui, 3, 1)\n        infos_grid.setColumnStretch(1, 1)\n\n        infos_group_box = QtWidgets.QGroupBox(lx(\"Infos\"), objectName=\"infoGroup\")\n        infos_group_box.setLayout(infos_grid)\n        infos_group_box.setFixedWidth(COL1_WIDTH)\n\n        # Description\n        name_label = QtWidgets.QLabel(lx(\"Name:\"), objectName=\"nameLabel\")\n        tvdecoder._name_ui = QtWidgets.QLabel(objectName=\"nameValue\")\n        manufacturer_label = QtWidgets.QLabel(lx(\"Maker:\"), objectName=\"manufacturerLabel\")\n        tvdecoder._manufacturer = QtWidgets.QLabel(objectName=\"manufacturerValue\")\n        model_name_label = QtWidgets.QLabel(lx(\"Model:\"), objectName=\"modelNameLabel\")\n        tvdecoder._model_name = QtWidgets.QLabel(objectName=\"modelNameValue\")\n        unique_id_label = QtWidgets.QLabel(lx(\"ID:\"), objectName=\"uniqueIdLabel\")\n        tvdecoder._unique_id = QtWidgets.QLabel(objectName=\"uniqueIdValue\")\n\n        desc_grid = QtWidgets.QGridLayout()\n        desc_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        desc_grid.setSpacing(10)\n        desc_grid.addWidget(name_label, 0, 0)\n        desc_grid.addWidget(tvdecoder._name_ui, 0, 1)\n        desc_grid.addWidget(manufacturer_label, 1, 0)\n        desc_grid.addWidget(tvdecoder._manufacturer, 1, 1)\n        desc_grid.addWidget(model_name_label, 2, 0)\n        desc_grid.addWidget(tvdecoder._model_name, 2, 1)\n        desc_grid.addWidget(unique_id_label, 3, 0)\n        desc_grid.addWidget(tvdecoder._unique_id, 3, 1)\n        desc_grid.setColumnStretch(1, 1)\n\n        desc_group_box = QtWidgets.QGroupBox(lx(\"Description\"), objectName=\"descGroup\")\n        desc_group_box.setLayout(desc_grid)\n        desc_group_box.setFixedWidth(COL1_WIDTH)\n\n        # Actions\n        reset_cache = QtWidgets.QPushButton(lx(\"Reset Cache\"), objectName=\"resetCache\")\n        reset_cache.clicked.connect(tvdecoder.reset_cache_button_click)\n\n        action_layout = QtWidgets.QVBoxLayout()\n        action_layout.addWidget(reset_cache, 1)\n\n        action_group_box = QtWidgets.QGroupBox(lx(\"Actions\"), objectName=\"actionGroup\")\n        action_group_box.setLayout(action_layout)\n        action_group_box.setFixedWidth(COL1_WIDTH)\n\n        # Column 1 box\n        col1_box = QtWidgets.QVBoxLayout()\n        col1_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        col1_box.setSpacing(40)\n        col1_box.addWidget(status_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        col1_box.addWidget(infos_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        col1_box.addWidget(desc_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        col1_box.addWidget(action_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Channel infos\n        channel_label = QtWidgets.QLabel(lx(\"Number:\"), objectName=\"channelLabel\")\n        tvdecoder._channel = QtWidgets.QLabel(objectName=\"channelValue\")\n        channel_name_label = QtWidgets.QLabel(lx(\"Name:\"), objectName=\"channelNameLabel\")\n        tvdecoder._channel_name = QtWidgets.QLabel(objectName=\"channelNameValue\")\n        media_id_label = QtWidgets.QLabel(lx(\"EPG:\"), objectName=\"mediaIdLabel\")\n        tvdecoder._media_id = QtWidgets.QLabel(objectName=\"mediaIdValue\")\n\n        channel_grid = QtWidgets.QGridLayout()\n        channel_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        channel_grid.setSpacing(10)\n        channel_grid.addWidget(channel_label, 0, 0)\n        channel_grid.addWidget(tvdecoder._channel, 0, 1)\n        channel_grid.addWidget(channel_name_label, 1, 0)\n        channel_grid.addWidget(tvdecoder._channel_name, 1, 1)\n        channel_grid.addWidget(media_id_label, 2, 0)\n        channel_grid.addWidget(tvdecoder._media_id, 2, 1)\n        channel_grid.setColumnStretch(1, 1)\n\n        tvdecoder._channel_icon = QtWidgets.QLabel(objectName=\"channelIcon\")\n        tvdecoder._channel_icon.setFixedWidth(150)\n        tvdecoder._channel_icon.setFixedHeight(150)\n        tvdecoder._channel_desc = LmQtTools.AutoHeightLabel(objectName=\"channelDesc\")\n        tvdecoder._channel_desc.setText(\"\")\n\n        channel_layout = QtWidgets.QVBoxLayout()\n        channel_layout.addLayout(channel_grid, 0)\n        channel_layout.addWidget(tvdecoder._channel_icon, 0, QtCore.Qt.AlignmentFlag.AlignCenter)\n        channel_layout.addWidget(tvdecoder._channel_desc, 1, QtCore.Qt.AlignmentFlag.AlignCenter)\n\n        channel_group_box = QtWidgets.QGroupBox(lx(\"Channel\"), objectName=\"channelGroup\")\n        channel_group_box.setLayout(channel_layout)\n        channel_group_box.setFixedWidth(COL2_WIDTH)\n\n        # Channel set\n        tvdecoder._channel_edit = QtWidgets.QLineEdit(objectName=\"channelEdit\")\n        tvdecoder._channel_set = QtWidgets.QPushButton(lx(\"Go\"), objectName=\"channelSet\")\n        tvdecoder._channel_set.setDefault(True)\n        tvdecoder._channel_set.clicked.connect(tvdecoder.channel_set_button_click)\n\n        channel_set_layout = QtWidgets.QVBoxLayout()\n        channel_set_layout.addWidget(tvdecoder._channel_edit, 1)\n        channel_set_layout.addWidget(tvdecoder._channel_set, 1)\n\n        channel_set_group_box = QtWidgets.QGroupBox(lx(\"Set Channel\"), objectName=\"setChannelGroup\")\n        channel_set_group_box.setLayout(channel_set_layout)\n        channel_set_group_box.setFixedWidth(COL2_WIDTH)\n\n        # Column 2 box\n        col2_box = QtWidgets.QVBoxLayout()\n        col2_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        col2_box.setSpacing(40)\n        col2_box.addWidget(channel_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n        col2_box.addWidget(channel_set_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Remote control\n        tvdecoder._power_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCPowerPixmap, \"power\", tvdecoder.power_button_click)\n        tvdecoder._mic_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCMicPixmap, \"mic\", tvdecoder.mic_button_click)\n        tvdecoder._up_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCUpPixmap, \"up\", tvdecoder.up_button_click)\n        tvdecoder._left_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCLeftPixmap, \"left\", tvdecoder.left_button_click)\n        tvdecoder._ok_button = LmTvDecoder.create_rcbutton(\"OK\", None, \"ok\", tvdecoder.ok_button_click)\n        tvdecoder._right_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCRightPixmap, \"right\", tvdecoder.right_button_click)\n        tvdecoder._down_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCDownPixmap, \"down\", tvdecoder.down_button_click)\n        tvdecoder._back_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCBackPixmap, \"back\", tvdecoder.back_button_click)\n        tvdecoder._menu_button = LmTvDecoder.create_rcbutton(\"Menu\", None, \"menu\", tvdecoder.menu_button_click)\n        tvdecoder._vol_up_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCVolumeUpPixmap, \"vol_up\", tvdecoder.vol_up_button_click)\n        tvdecoder._chan_up_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCChannelUpPixmap, \"chan_up\", tvdecoder.chan_up_button_click)\n        tvdecoder._vol_down_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCVolumeDownPixmap, \"vol_down\", tvdecoder.vol_down_button_click)\n        tvdecoder._chan_down_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCChannelDownPixmap, \"chan_down\", tvdecoder.chan_down_button_click)\n        tvdecoder._mute_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCMutePixmap, \"mute\", tvdecoder.mute_button_click)\n        tvdecoder._prog_button = LmTvDecoder.create_rcbutton(\"Prog\", None, \"prog\", tvdecoder.prog_button_click)\n        tvdecoder._one_button = LmTvDecoder.create_rcbutton(\"1\", None, \"one\", tvdecoder.one_button_click)\n        tvdecoder._two_button = LmTvDecoder.create_rcbutton(\"2\", None, \"two\", tvdecoder.two_button_click)\n        tvdecoder._three_button = LmTvDecoder.create_rcbutton(\"3\", None, \"three\", tvdecoder.three_button_click)\n        tvdecoder._four_button = LmTvDecoder.create_rcbutton(\"4\", None, \"four\", tvdecoder.four_button_click)\n        tvdecoder._five_button = LmTvDecoder.create_rcbutton(\"5\", None, \"five\", tvdecoder.five_button_click)\n        tvdecoder._six_button = LmTvDecoder.create_rcbutton(\"6\", None, \"six\", tvdecoder.six_button_click)\n        tvdecoder._seven_button = LmTvDecoder.create_rcbutton(\"7\", None, \"seven\", tvdecoder.seven_button_click)\n        tvdecoder._eight_button = LmTvDecoder.create_rcbutton(\"8\", None, \"eight\", tvdecoder.eight_button_click)\n        tvdecoder._nine_button = LmTvDecoder.create_rcbutton(\"9\", None, \"nine\", tvdecoder.nine_button_click)\n        tvdecoder._c_button = LmTvDecoder.create_rcbutton(\"C\", None, \"c\", tvdecoder.c_button_click)\n        tvdecoder._zero_button = LmTvDecoder.create_rcbutton(\"0\", None, \"zero\", tvdecoder.zero_button_click)\n        tvdecoder._vod_button = LmTvDecoder.create_rcbutton(\"VOD\", None, \"vod\", tvdecoder.vod_button_click)\n        tvdecoder._fbwd_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCFBackwardPixmap, \"fbwd\", tvdecoder.fbwd_button_click)\n        tvdecoder._play_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCPlayPixmap, \"play\", tvdecoder.play_button_click)\n        tvdecoder._ffwd_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCFForwardPixmap, \"ffwd\", tvdecoder.ffwd_button_click)\n        tvdecoder._admin_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCAdminPixmap, \"admin\", tvdecoder.admin_button_click)\n        tvdecoder._record_button = LmTvDecoder.create_rcbutton(None, LmIcon.RCRecordPixmap, \"record\", tvdecoder.record_button_click)\n\n        rc_grid = QtWidgets.QGridLayout()\n        rc_grid.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        rc_grid.setSpacing(5)\n        rc_grid.addWidget(tvdecoder._power_button, 0, 0)\n        rc_grid.addWidget(tvdecoder._mic_button, 0, 2)\n        spacer = QtWidgets.QWidget()\n        spacer.setFixedHeight(3)\n        rc_grid.addWidget(spacer, 1, 0, 1, 3)\n        rc_grid.addWidget(tvdecoder._up_button, 2, 1)\n        rc_grid.addWidget(tvdecoder._left_button, 3, 0)\n        rc_grid.addWidget(tvdecoder._ok_button, 3, 1)\n        rc_grid.addWidget(tvdecoder._right_button, 3, 2)\n        rc_grid.addWidget(tvdecoder._down_button, 4, 1)\n        spacer = QtWidgets.QWidget()\n        spacer.setFixedHeight(3)\n        rc_grid.addWidget(spacer, 5, 0, 1, 3)\n        rc_grid.addWidget(tvdecoder._back_button, 6, 0)\n        rc_grid.addWidget(tvdecoder._menu_button, 6, 2)\n        spacer = QtWidgets.QWidget()\n        spacer.setFixedHeight(10)\n        rc_grid.addWidget(spacer, 7, 0, 1, 3)\n        rc_grid.addWidget(tvdecoder._vol_up_button, 8, 0)\n        rc_grid.addWidget(tvdecoder._chan_up_button, 8, 2)\n        rc_grid.addWidget(tvdecoder._vol_down_button, 9, 0)\n        rc_grid.addWidget(tvdecoder._chan_down_button, 9, 2)\n        rc_grid.addWidget(tvdecoder._mute_button, 10, 0)\n        rc_grid.addWidget(tvdecoder._prog_button, 10, 2)\n        spacer = QtWidgets.QWidget()\n        spacer.setFixedHeight(10)\n        rc_grid.addWidget(spacer, 11, 0, 1, 3)\n        rc_grid.addWidget(tvdecoder._one_button, 12, 0)\n        rc_grid.addWidget(tvdecoder._two_button, 12, 1)\n        rc_grid.addWidget(tvdecoder._three_button, 12, 2)\n        rc_grid.addWidget(tvdecoder._four_button, 13, 0)\n        rc_grid.addWidget(tvdecoder._five_button, 13, 1)\n        rc_grid.addWidget(tvdecoder._six_button, 13, 2)\n        rc_grid.addWidget(tvdecoder._seven_button, 14, 0)\n        rc_grid.addWidget(tvdecoder._eight_button, 14, 1)\n        rc_grid.addWidget(tvdecoder._nine_button, 14, 2)\n        rc_grid.addWidget(tvdecoder._c_button, 15, 0)\n        rc_grid.addWidget(tvdecoder._zero_button, 15, 1)\n        rc_grid.addWidget(tvdecoder._vod_button, 15, 2)\n        spacer = QtWidgets.QWidget()\n        spacer.setFixedHeight(10)\n        rc_grid.addWidget(spacer, 16, 0, 1, 3)\n        rc_grid.addWidget(tvdecoder._fbwd_button, 17, 0)\n        rc_grid.addWidget(tvdecoder._play_button, 17, 1)\n        rc_grid.addWidget(tvdecoder._ffwd_button, 17, 2)\n        rc_grid.addWidget(tvdecoder._admin_button, 18, 0)\n        rc_grid.addWidget(tvdecoder._record_button, 18, 2)\n\n        rc_group_box = QtWidgets.QGroupBox(lx(\"Remote Control\"), objectName=\"rcGroup\")\n        rc_group_box.setLayout(rc_grid)\n        rc_group_box.setFixedWidth(RC_WIDTH)\n\n        # Remote control box\n        rc_box = QtWidgets.QVBoxLayout()\n        rc_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)\n        rc_box.setSpacing(20)\n        rc_box.addWidget(rc_group_box, 0, QtCore.Qt.AlignmentFlag.AlignTop)\n\n        # Layout\n        hbox = QtWidgets.QHBoxLayout()\n        hbox.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft)\n        hbox.setSpacing(40)\n        hbox.addLayout(col1_box, 0)\n        hbox.addLayout(col2_box, 0)\n        hbox.addLayout(rc_box, 0)\n        tvdecoder._tab.setLayout(hbox)\n\n        LmConfig.set_tooltips(tvdecoder._tab, \"tvdecoder\")\n        self._tab_widget.insertTab(tvdecoder.tab_index_from_config(), tvdecoder._tab, tvdecoder._name)\n        tvdecoder.set_item_state()\n\n\n    ### Create a remote control button\n    @staticmethod\n    def create_rcbutton(title, icon, name, connect):\n        button = QtWidgets.QPushButton(title, objectName=name)\n        button.setFixedWidth(70)\n        button.setFixedHeight(37)\n        button.setStyleSheet(RC_BUTTON_STYLE)\n\n        if icon:\n            button.setIcon(QtGui.QIcon(icon))\n            button.setIconSize(QtCore.QSize(22, 22))\n\n        button.clicked.connect(connect)\n        return button\n\n\n    ### Identify potential TV Decoder device & add it to the list\n    def identify_tvdecoder(self, device):\n        if \"stb\" in device.get(\"Tags\", \"\").split(\" \"):\n            key = device.get(\"Key\", \"\")\n\n            # Check if not already there\n            for t in self._tvdecoders:\n                if t._key == key:\n                    return None\n\n            index = len(self._tvdecoders)\n\n            mac_addr = device.get(\"PhysAddress\", \"\")\n            try:\n                name = LmConf.MacAddrTable[mac_addr]\n            except KeyError:\n                name = DEFAULT_TVDECODER_NAME + str(index + 1)\n\n            # Determine vendor & model\n            vendor = device.get(\"VendorClassID\")\n            model = device.get(\"UserClassID\")\n\n            ip_struct = LmTools.determine_ip(device)\n            ip_address = ip_struct.get(\"Address\") if ip_struct else None\n\n            active = device.get(\"Active\", False)\n\n            tvdecoder = LmTvHandler(self, index, key, mac_addr, name, vendor, model, ip_address, active)\n            self._tvdecoders.append(tvdecoder)\n\n            return tvdecoder\n\n        return None\n\n\n    ### Add and setup a potential new TV Decoder device\n    def add_potential_tvdecoder(self, device):\n        tvdecoder = self.identify_tvdecoder(device)\n        if tvdecoder:\n            self.create_tvdecoder_tab(tvdecoder)\n\n\n    ### Find a tvdecoder in the list from device key\n    def find_tvdecoder(self, device_key):\n        return next((r for r in self._tvdecoders if r._key == device_key), None)\n\n\n    ### Remove a potential TV Decoder device - not really remove, rather desactivate\n    def remove_potential_tvdecoder(self, device_key):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.process_active_event(False)\n\n\n    ### Init TV Decoder tabs & sessions\n    def init_tvdecoders(self):\n        for r in self._tvdecoders:\n            self.create_tvdecoder_tab(r)\n\n\n    ### Click on TV decoder tab\n    def tvdecoder_tab_click(self, device_key):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.handle_tab_click()\n\n\n    ### React to a device name update\n    def tvdecoder_update_device_name(self, device_key):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.process_update_device_name()\n\n\n    ### React to device updated event\n    def tvdecoder_device_updated_event(self, device_key, event):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.process_device_updated_event(event)\n\n\n    ### React to active status change event\n    def tvdecoder_active_event(self, device_key, is_active):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.process_active_event(is_active)\n\n\n    ### React to IP Address change event\n    def tvdecoder_ip_address_event(self, device_key, ipv4):\n        tvdecoder = self.find_tvdecoder(device_key)\n        if tvdecoder:\n            tvdecoder.process_ip_address_event(ipv4)\n\n\n    ### Init the TV Decoder status collector thread\n    def init_tvdecoder_status_loop(self):\n        self._tvdecoder_status_loop = None\n\n\n    ### Start the TV Decoder status collector thread\n    def start_tvdecoder_status_loop(self):\n        self._tvdecoder_status_loop = TvDecoderStatusThread(self._tvdecoders)\n        self._tvdecoder_status_loop.connect_processor(self.process_tvdecoder_status)\n\n\n    ### Suspend the TV Decoder status collector thread\n    def suspend_tvdecoder_status_loop(self):\n        if self._tvdecoder_status_loop:\n            self._tvdecoder_status_loop.stop()\n\n\n    ### Resume the TV Decoder stats collector thread\n    def resume_tvdecoder_status_loop(self):\n        if self._tvdecoder_status_loop:\n            self._tvdecoder_status_loop._resume.emit()\n        else:\n            self.start_tvdecoder_status_loop()\n\n\n    ### Stop the TV Decoder status collector thread\n    def stop_tvdecoder_status_loop(self):\n        if self._tvdecoder_status_loop:\n            self._tvdecoder_status_loop.quit()\n            self._tvdecoder_status_loop = None\n\n\n    ### Process a new TV Decoder status\n    def process_tvdecoder_status(self, status):\n        status[\"tvdecoder\"].set_status(status)\n\n\n\n# ################################ LmTvHandler class ################################\nclass LmTvHandler:\n\n    ### Init handler\n    def __init__(self, app, index, key, mac_addr, name, vendor, model, ip_address, active):\n        self._app = app\n        self._key = key\n        self._mac_addr = mac_addr\n        self._name = name\n        self._vendor = vendor\n        self._model = model\n        self._ip_addr = ip_address\n        self._active = active\n        self._tab = None\n        self._index = index\n        self._api = TvDecoderApi(ip_address)\n        self._current_epg_id = \"-\"\n\n        # UI widgets\n        self._status = None\n        self._media_type = None\n        self._media_state = None\n        self._vendor_ui = None\n        self._model_ui = None\n        self._mac_ui = None\n        self._ip_ui = None\n        self._name_ui = None\n        self._manufacturer = None\n        self._model_name = None\n        self._unique_id = None\n        self._channel = None\n        self._channel_name = None\n        self._media_id = None\n        self._channel_icon = None\n        self._channel_desc = None\n        self._channel_edit = None\n        self._channel_set = None        \n        self._power_button = None\n        self._mic_button = None\n        self._up_button = None\n        self._left_button = None\n        self._ok_button = None\n        self._right_button = None\n        self._down_button = None\n        self._back_button = None\n        self._menu_button = None\n        self._vol_up_button = None\n        self._chan_up_button = None\n        self._vol_down_button = None\n        self._chan_down_button = None\n        self._mute_button = None\n        self._prog_button = None\n        self._one_button = None\n        self._two_button = None\n        self._three_button = None\n        self._four_button = None\n        self._five_button = None\n        self._six_button = None\n        self._seven_button = None\n        self._eight_button = None\n        self._nine_button = None\n        self._c_button = None\n        self._zero_button = None\n        self._vod_button = None\n        self._fbwd_button = None\n        self._play_button = None\n        self._ffwd_button = None\n        self._admin_button = None\n        self._record_button = None\n\n\n    ### Handle tab click\n    def handle_tab_click(self):\n        self.load_channels()\n\n\n    ### Check if active\n    def is_active(self):\n        return (self._ip_addr is not None) and self._active\n\n\n    ### Get tab index from configuration at creation time\n    def tab_index_from_config(self):\n        # If no config, append\n        n = self._app._tab_widget.count()\n        if LmConf.Tabs is None:\n            return n\n\n        # If not in config, append\n        entry_name = f\"{TAB_NAME}_{self._key}\"\n        try:\n            i = LmConf.Tabs.index(entry_name)\n        except ValueError:\n            return n\n\n        # Try to find the tab immediately on the left\n        for j in range(i - 1, -1, -1):\n            t = LmConf.Tabs[j]\n            if t.startswith(f\"{TAB_NAME}_\"):\n                k = t[len(TAB_NAME) + 1:]\n                t = TAB_NAME\n            else:\n                k = None\n\n            left_tab_index = self._app.get_tab_index(t, k)\n            if left_tab_index != -1:\n                return left_tab_index + 1\n\n        # No left tab found, must be the first\n        return 0\n\n\n    ### Get tab index\n    def tab_index(self):\n        if self._tab:\n            return self._app._tab_widget.indexOf(self._tab)\n        return -1\n\n\n    ### Set item state according to current context\n    def set_item_state(self):\n        self.set_tab_icon()\n\n        if self._tab:\n            active = self.is_active()\n            self._channel_set.setEnabled(active)\n            self._power_button.setEnabled(active)\n            self._mic_button.setEnabled(active)\n            self._up_button.setEnabled(active)\n            self._left_button.setEnabled(active)\n            self._ok_button.setEnabled(active)\n            self._right_button.setEnabled(active)\n            self._down_button.setEnabled(active)\n            self._back_button.setEnabled(active)\n            self._menu_button.setEnabled(active)\n            self._vol_up_button.setEnabled(active)\n            self._chan_up_button.setEnabled(active)\n            self._vol_down_button.setEnabled(active)\n            self._chan_down_button.setEnabled(active)\n            self._mute_button.setEnabled(active)\n            self._prog_button.setEnabled(active)\n            self._one_button.setEnabled(active)\n            self._two_button.setEnabled(active)\n            self._three_button.setEnabled(active)\n            self._four_button.setEnabled(active)\n            self._five_button.setEnabled(active)\n            self._six_button.setEnabled(active)\n            self._seven_button.setEnabled(active)\n            self._eight_button.setEnabled(active)\n            self._nine_button.setEnabled(active)\n            self._c_button.setEnabled(active)\n            self._zero_button.setEnabled(active)\n            self._vod_button.setEnabled(active)\n            self._fbwd_button.setEnabled(active)\n            self._play_button.setEnabled(active)\n            self._ffwd_button.setEnabled(active)\n            self._admin_button.setEnabled(active)\n            self._record_button.setEnabled(active)\n\n\n    ### Set tab icon according to connection status\n    def set_tab_icon(self):\n        if self._tab:\n            icon = LmIcon.TickPixmap if self.is_active() else LmIcon.CrossPixmap\n            self._app._tab_widget.setTabIcon(self.tab_index(), QtGui.QIcon(icon))\n\n\n    ### Load channels information with cache management\n    def load_channels(self):\n        # Check if already loaded\n        if TvDecoderApi.get_channels():\n            return\n\n        # First check if data are in cache\n        channels = None\n        tv_cache_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_TV_CACHE_DIR)\n        channels_file_path = os.path.join(tv_cache_path, LIVEBOX_TV_CHANNELS_CACHE_FILE)\n        if os.path.isfile(channels_file_path):\n            LmTools.log_debug(1, \"Loading TV channels cache in\", channels_file_path)\n            channels_file = None\n            try:\n                channels_file = open(channels_file_path)\n                channels = json.load(channels_file)\n            except Exception as e:\n                LmTools.error(str(e))\n                # Wrong file format, ignore\n                if channels_file:\n                    channels_file.close()\n\n        # Set channels infos if were cached\n        if channels:\n            TvDecoderApi.set_channels(channels)\n            return\n\n        # Load from Orange server\n        self._app._task.start(lx(\"Getting Channel Information...\"))\n        try:\n            TvDecoderApi.load_channels()\n        except Exception as e:\n            self._app.display_error(mx(\"Cannot load channel information. Error: {}\", \"channelInfoErr\").format(str(e)))\n        finally:\n            self._app._task.end()\n\n        # Set in cache\n        channels = TvDecoderApi.get_channels()\n        if channels:\n            # Create tv cache directory if doesn't exist\n            if not os.path.isdir(tv_cache_path):\n                try:\n                    os.makedirs(tv_cache_path)\n                except Exception as e:\n                    LmTools.error(f\"Cannot create tv cache folder {tv_cache_path}. Error: {e}\")\n                    return\n\n            LmTools.log_debug(1, \"Saving tv channels cache in\", channels_file_path)\n            try:\n                with open(channels_file_path, \"w\") as channels_file:\n                    json.dump(channels, channels_file, indent=4)\n            except Exception as e:\n                LmTools.error(f\"Cannot save tv channels cache file. Error: {e}\")\n\n\n    ### Reset TV infos cache (channels + icons)\n    def reset_cache_button_click(self):\n        # Erase stored cache files\n        tv_cache_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_TV_CACHE_DIR)\n        if os.path.isdir(tv_cache_path):\n            try:\n                shutil.rmtree(tv_cache_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot delete tv cache folder {tv_cache_path}. Error: {e}\")\n\n        # Erase previously loaded data\n        TvDecoderApi.set_channels(None)\n\n        # Reload data\n        self.load_channels()\n\n\n    ### Get current status\n    def get_status(self):\n        infos = {}\n        if self.is_active():\n            infos[\"name\"] = None\n            infos[\"manufacturer\"] = None\n            infos[\"model\"] = None\n            infos[\"id\"] = None\n            infos[\"status\"] = None\n            infos[\"mediatype\"] = None\n            infos[\"mediastate\"] = None\n            infos[\"mediaid\"] = None\n\n            # Get description\n            try:\n                desc = self._api.get_basic_description()\n                infos[\"name\"] = desc.get(\"friendlyName\")\n                infos[\"manufacturer\"] = desc.get(\"manufacturer\")\n                infos[\"model\"] = desc.get(\"modelName\")\n                model_id = desc.get(\"UDN\")\n                if model_id and model_id.startswith('uuid:'):\n                    model_id = model_id[5:]\n                infos[\"id\"] = model_id\n            except Exception as e:\n                LmTools.error(str(e))\n\n            # Get status\n            try:\n                status = self._api.get_status()\n                infos[\"status\"] = status[\"osdContext\"]\n                infos[\"mediatype\"] = status[\"playedMediaType\"]\n                infos[\"mediastate\"] = status[\"playedMediaState\"]\n                infos[\"mediaid\"] = status[\"playedMediaId\"]\n            except Exception as e:\n                LmTools.error(str(e))\n        else:\n            infos[\"name\"] = \"-\"\n            infos[\"manufacturer\"] = \"-\"\n            infos[\"model\"] = \"-\"\n            infos[\"id\"] = \"-\"\n            infos[\"status\"] = \"-\"\n            infos[\"mediatype\"] = \"-\"\n            infos[\"mediastate\"] = \"-\"\n            infos[\"mediaid\"] = \"-\"\n\n        return infos\n\n\n    ### Update UI with given status\n    def set_status(self, status):\n        self.set_status_field(self._name_ui, status[\"name\"])\n        self.set_status_field(self._manufacturer, status[\"manufacturer\"])\n        self.set_status_field(self._model_name, status[\"model\"])\n        self.set_status_field(self._unique_id, status[\"id\"])\n        self.set_status_field(self._status, self._api.decode_status(status[\"status\"]))\n        self.set_status_field(self._media_type, self._api.decode_type(status[\"mediatype\"]))\n        self.set_status_field(self._media_state, self._api.decode_state(status[\"mediastate\"]))\n        epg = self._api.decode_epg(status[\"mediaid\"])\n        if epg != self._current_epg_id:\n            self._current_epg_id = epg\n            self.handle_channel_change()\n\n\n    ### Update UI if TV channel changed\n    def handle_channel_change(self):\n        self.set_status_field(self._media_id, self._current_epg_id)\n        channel = self._api.get_channel_infos(self._current_epg_id)\n        self.set_status_field(self._channel, channel[\"number\"])\n        self.set_status_field(self._channel_name, channel[\"name\"])\n        self.set_channel_icon(channel[\"icon\"])\n        self._channel_desc.setText(channel[\"desc\"])\n        self._channel_desc.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n\n\n    ### Get a channel icon from cache file\n    @staticmethod\n    def get_channel_icon_cache(epg_id):\n        icon_pixmap = None\n        icon_dir_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_TV_CACHE_DIR)\n        icon_file_path = os.path.join(icon_dir_path, f\"{epg_id}.png\")\n        if os.path.isfile(icon_file_path):\n            icon_pixmap = QtGui.QPixmap()\n            if not icon_pixmap.load(icon_file_path):\n                icon_pixmap = None\n                LmTools.error(f\"Cannot load channel icon cache file {icon_file_path}. Cache file will be recreated.\")\n        return icon_pixmap\n\n\n    ### Set a channel icon to cache file\n    @staticmethod\n    def set_channel_icon_cache(epg_id, content):\n        icon_dir_path = os.path.join(LmConf.get_cache_directory(), LIVEBOX_TV_CACHE_DIR)\n        icon_file_path = os.path.join(icon_dir_path, f\"{epg_id}.png\")\n\n        # Create icon cache directory if doesn't exist\n        if not os.path.isdir(icon_dir_path):\n            try:\n                os.makedirs(icon_dir_path)\n            except Exception as e:\n                LmTools.error(f\"Cannot create channel icon cache folder {icon_dir_path}. Error: {e}\")\n                return\n\n        # Create and save icon cache file\n        try:\n            with open(icon_file_path, \"wb\") as icon_file:\n                icon_file.write(content)\n        except Exception as e:\n            LmTools.error(f\"Cannot save channel icon cache file {icon_file_path}. Error: {e}\")\n\n\n    ### Update the channel icon\n    def set_channel_icon(self, icon_url):\n        icon_pixmap = None\n\n        if icon_url:\n            # First check if icon is in cache\n            icon_pixmap = LmTvHandler.get_channel_icon_cache(self._current_epg_id)\n\n            # Otherwise load icon from Orange server\n            if icon_pixmap is None:\n                icon_pixmap = QtGui.QPixmap()\n                try:\n                    icon_data = requests.get(icon_url,\n                                             timeout=DEFAULT_TIMEOUT + LmConf.TimeoutMargin)\n                                             # verify=icon_url.startswith(\"http://\"))\n                    if not icon_pixmap.loadFromData(icon_data.content):\n                        LmTools.error(f\"Cannot load channel icon for EPG {self._current_epg_id}.\")\n                        icon_pixmap = None\n                except requests.exceptions.Timeout as e:\n                    LmTools.error(f\"Channel icon for EPG {self._current_epg_id} request timeout error: {e}.\")\n                    icon_pixmap = None\n                except Exception as e:\n                    LmTools.error(f\"{e}. Cannot request channel icon for EPG {self._current_epg_id}.\")\n                    icon_pixmap = None\n\n                # If successfully loaded, try to store in local cache file for faster further loads\n                if icon_pixmap:\n                    LmTvHandler.set_channel_icon_cache(self._current_epg_id, icon_data.content)\n\n        # Set the icon\n        if icon_pixmap:\n            self._channel_icon.setStyleSheet(\"QLabel {background-color:#404040}\")\n            self._channel_icon.setPixmap(icon_pixmap)\n            self._channel_icon.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)\n        else:\n            self._channel_icon.setPixmap(QtGui.QPixmap())\n            self._channel_icon.setStyleSheet(None)\n\n\n    ### Update UI status field with given value\n    def set_status_field(self, field, value):\n        if value is None:\n            field.setText(lx(\"Error\"))\n            field.setStyleSheet(\"QLabel {color:red}\")\n        else:\n            field.setText(value)\n            field.setStyleSheet(\"QLabel {color:black}\")\n\n\n    ### Process an update of the device name\n    def process_update_device_name(self):\n        new_name = LmConf.MacAddrTable.get(self._key, None)\n        if new_name is None:\n            new_name = DEFAULT_TVDECODER_NAME + str(self._index + 1)\n        self._name = new_name\n        self._app._tab_widget.setTabText(self.tab_index(), self._name)\n\n\n    ### Process a device updated event\n    def process_device_updated_event(self, event):\n        ipv4_struct = LmTools.determine_ip(event)\n        ipv4 = ipv4_struct.get(\"Address\") if ipv4_struct else None\n        if self._ip_addr != ipv4:\n            self.process_ip_address_event(ipv4)\n\n        self.process_active_event(event.get(\"Active\", False))\n\n\n    ### Process an active status change event\n    def process_active_event(self, is_active):\n        if self._active != is_active:\n            self._active = is_active\n            self.set_item_state()\n\n\n    ### Process a IP Address change event\n    def process_ip_address_event(self, ipv4):\n        self._ip_addr = ipv4\n        self._api.set_ip(ipv4)\n        self._ip_ui.setText(ipv4)\n        self.set_item_state()\n\n\n    ### Click on the channel set button\n    def channel_set_button_click(self):\n        epg = None\n        text = self._channel_edit.text()\n        if text:\n            if text.startswith(\"epg\"):\n                text = text[3:]\n                try:\n                    epg = int(text)\n                except:\n                    epg = None\n            else:\n                try:\n                    number = int(text)\n                    epg = self._api.get_epg_from_number(number)\n                except:\n                    epg = self._api.get_epg_from_name(text)\n        if epg:\n            try:\n                self._api.change_channel(epg)\n            except Exception as e:\n                self._app.display_error(mx(\"Change channel failed. Error: {}\", \"changeChannelErr\").format(str(e)))\n        else:\n            QtWidgets.QApplication.instance().beep()\n\n\n    ### Press a remote control key\n    def key_press(self, key, mode=LmTvDecoderApi.KeyMode.PRESS_ONCE):\n        try:\n            self._api.key_press(key, mode)\n        except Exception as e:\n            self._app.display_error(mx(\"Key press failed. Error: {}\", \"keyPressErr\").format(str(e)))\n\n\n    ### Click on POWER button\n    def power_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.POWER)\n\n\n    ### Click on MIC button\n    def mic_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.MIC)\n\n\n    ### Click on UP button\n    def up_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.UP)\n\n\n    ### Click on LEFT button\n    def left_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.LEFT)\n\n\n    ### Click on OK button\n    def ok_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.OK)\n\n\n    ### Click on RIGHT button\n    def right_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.RIGHT)\n\n\n    ### Click on DOWN button\n    def down_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.DOWN)\n\n\n    ### Click on BACK button\n    def back_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.BACK)\n\n\n    ### Click on MENU button\n    def menu_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.MENU)\n\n\n    ### Click on VOL_UP button\n    def vol_up_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.VOL_UP)\n\n\n    ### Click on CHAN_UP button\n    def chan_up_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.CHAN_UP)\n\n\n    ### Click on VOL_DOWN button\n    def vol_down_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.VOL_DOWN)\n\n\n    ### Click on CHAN_DOWN button\n    def chan_down_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.CHAN_DOWN)\n\n\n    ### Click on MUTE button\n    def mute_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.MUTE)\n\n\n    ### Click on PROG button\n    def prog_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.PROG)\n\n\n    ### Click on ONE button\n    def one_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.ONE)\n\n\n    ### Click on TWO button\n    def two_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.TWO)\n\n\n    ### Click on THREE button\n    def three_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.THREE)\n\n\n    ### Click on FOUR button\n    def four_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.FOUR)\n\n\n    ### Click on FIVE button\n    def five_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.FIVE)\n\n\n    ### Click on SIX button\n    def six_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.SIX)\n\n\n    ### Click on SEVEN button\n    def seven_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.SEVEN)\n\n\n    ### Click on EIGHT button\n    def eight_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.EIGHT)\n\n\n    ### Click on NINE button\n    def nine_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.NINE)\n\n\n    ### Click on C button\n    def c_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.C)\n\n\n    ### Click on ZERO button\n    def zero_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.ZERO)\n\n\n    ### Click on VOD button\n    def vod_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.VOD)\n\n\n    ### Click on FBWD button\n    def fbwd_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.FBWD)\n\n\n    ### Click on PLAY button\n    def play_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.PLAY)\n\n\n    ### Click on FFWD button\n    def ffwd_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.FFWD)\n\n\n    ### Click on ADMIN button\n    def admin_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.BACK, LmTvDecoderApi.KeyMode.PRESS_HOLD)\n        self.key_press(LmTvDecoderApi.Key.OK, LmTvDecoderApi.KeyMode.PRESS_ONCE)\n        self.key_press(LmTvDecoderApi.Key.BACK, LmTvDecoderApi.KeyMode.RELEASE)\n\n\n    ### Click on RECORD button\n    def record_button_click(self):\n        self.key_press(LmTvDecoderApi.Key.REC)\n\n\n\n# ############# TV Decoder status collector thread #############\nclass TvDecoderStatusThread(LmThread):\n    _status_received = QtCore.pyqtSignal(dict)\n    _resume = QtCore.pyqtSignal()\n\n    def __init__(self, tvdecoders):\n        super().__init__(None, TVDECODER_STATUS_FREQ)\n        self._tvdecoders = tvdecoders\n\n\n    def connect_processor(self, processor):\n        self._status_received.connect(processor)\n\n\n    def task(self):\n        for t in self._tvdecoders:\n            status = t.get_status()\n            status[\"tvdecoder\"] = t\n            self._status_received.emit(status)\n"
  },
  {
    "path": "src/LiveboxMonitor/tabs/__init__.py",
    "content": ""
  },
  {
    "path": "src/LiveboxMonitor/test/lb4/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Sagemcom\",\n        \"ManufacturerOUI\": \"088?\",\n        \"ModelName\": \"SagemcomFast?\",\n        \"Description\": \"SagemcomFast? Sagemcom fr\",\n        \"ProductClass\": \"Livebox 4\",\n        \"SerialNumber\": \"309209 (fake number)\",\n        \"HardwareVersion\": \"SG_LBF_?\",\n        \"SoftwareVersion\": \"SGFI-fr-G06.R04.C06_10\",\n        \"RescueVersion\": \"SGFI-fr-?\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"?-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.?.?\",\n        \"UpTime\": 1638401,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"http://www.sagemcom.com/\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.116.58.128\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 5,\n        \"UpgradeOccurred\": false,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": false,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"Bootloader=10.5.0,RescueBootloader=10.5.0\",\n        \"BaseMAC\": \"F8:87:C6:19:30:2F\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb4/HomeLan_Interface_get.json",
    "content": "{\n   \"status\":{\n      \"wl0\":{\n         \"FriendlyName\":\"2.4GHz-Private_SSID\",\n         \"Name\":\"wl0\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"eth6\":{\n         \"FriendlyName\":\"5GHz-Private_SSID\",\n         \"Name\":\"eth6\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"wlguest2\":{\n         \"FriendlyName\":\"2.4GHz-Guest_SSID\",\n         \"Name\":\"wlguest2\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"wlguest5\":{\n         \"FriendlyName\":\"5GHz-Guest_SSID\",\n         \"Name\":\"wlguest5\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"eth1\":{\n         \"FriendlyName\":\"eth1\",\n         \"Name\":\"eth1\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"eth2\":{\n         \"FriendlyName\":\"eth2\",\n         \"Name\":\"eth2\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"eth3\":{\n         \"FriendlyName\":\"eth3\",\n         \"Name\":\"eth3\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":8680\n      },\n      \"eth4\":{\n         \"FriendlyName\":\"eth4\",\n         \"Name\":\"eth4\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":8680\n      },\n      \"dsl0\":{\n         \"FriendlyName\":\"xDSL\",\n         \"Name\":\"dsl0\",\n         \"Alias\":\"\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"dsl0_sync\":{\n         \"FriendlyName\":\"xDSL-Sync\",\n         \"Name\":\"dsl0\",\n         \"Alias\":\"\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_data\":{\n         \"FriendlyName\":\"ADSL-Internet\",\n         \"Name\":\"atm_data\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_multi\":{\n         \"FriendlyName\":\"ADSL-MultiServices\",\n         \"Name\":\"atm_multi\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_voip\":{\n         \"FriendlyName\":\"ADSL-VoIP\",\n         \"Name\":\"atm_voip\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_iptv1\":{\n         \"FriendlyName\":\"ADSL-IPTV_VOD\",\n         \"Name\":\"atm_iptv1\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_iptv2\":{\n         \"FriendlyName\":\"ADSL-IPTV_Zapping\",\n         \"Name\":\"atm_iptv2\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_iptv3\":{\n         \"FriendlyName\":\"ADSL-IPTV_Live1\",\n         \"Name\":\"atm_iptv3\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"atm_iptv4\":{\n         \"FriendlyName\":\"ADSL-IPTV_Live2\",\n         \"Name\":\"atm_iptv4\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vvlan_data\":{\n         \"FriendlyName\":\"VDSL-Internet\",\n         \"Name\":\"vvlan_data\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vvlan_multi\":{\n         \"FriendlyName\":\"VDSL-MultiServices\",\n         \"Name\":\"vvlan_multi\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vvlan_voip\":{\n         \"FriendlyName\":\"VDSL-VoIP\",\n         \"Name\":\"vvlan_voip\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vvlan_iptv1\":{\n         \"FriendlyName\":\"VDSL-IPTV\",\n         \"Name\":\"vvlan_iptv1\",\n         \"Alias\":\"xDSL_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"eth0\":{\n         \"FriendlyName\":\"WAN_Ethernet\",\n         \"Name\":\"eth0\",\n         \"Alias\":\"\",\n         \"NumberOfStoredMeasures\":8680\n      },\n      \"vlan_data\":{\n         \"FriendlyName\":\"WAN_Ethernet-Internet\",\n         \"Name\":\"vlan_data\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_multi\":{\n         \"FriendlyName\":\"WAN_Ethernet-MultiServices\",\n         \"Name\":\"vlan_multi\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":8680\n      },\n      \"vlan_voip\":{\n         \"FriendlyName\":\"WAN_Ethernet-VoIP\",\n         \"Name\":\"vlan_voip\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_iptv1\":{\n         \"FriendlyName\":\"WAN_Ethernet-IPTV_VOD\",\n         \"Name\":\"vlan_iptv1\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_iptv2\":{\n         \"FriendlyName\":\"WAN_Ethernet-IPTV_Live\",\n         \"Name\":\"vlan_iptv2\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":8680\n      }\n   }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb4/NMC_getWANStatus.json",
    "content": "{\n    \"status\": true,\n    \"data\": {\n        \"WanState\": \"up\",\n        \"LinkType\": \"SFP\",\n        \"LinkState\": \"up\",\n        \"MACAddress\": \"F8:87:C6:19:30:2F\",\n        \"Protocol\": \"dhcp\",\n        \"ConnectionState\": \"Bound\",\n        \"LastConnectionError\": \"None\",\n        \"IPAddress\": \"90.116.58.128\",\n        \"RemoteGateway\": \"90.116.56.1\",\n        \"DNSServers\": \"80.10.246.3,81.253.149.10,2a01:cfc4:2000:f::3,2a01:cfc4:2180:4001::3\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb4/SFP_get.json",
    "content": "{\n    \"status\": {\n        \"Status\": \"ONT_Ready\",\n        \"LocalRegistrationID\": \"9731832466\",\n        \"DeviceState\": 0,\n        \"FirmwareUpgrade\": 0,\n        \"ModelName\": \"FGS202              \",\n        \"HardwareVersion\": \"SCOMFGS202v1  \",\n        \"ProductClass\": 1,\n        \"Orange\": true,\n        \"Software1Version\": \"SCOMFGS202112\",\n        \"Software1Status\": 0,\n        \"Software2Version\": \"SCOMFGS202112\",\n        \"Software2Status\": 3,\n        \"Manufacturer\": \"SERCOMM         \",\n        \"SerialNumber\": \"SCOM23081977    \",\n        \"ONTReady\": true,\n        \"OperatingState\": 5,\n        \"HostCommunication\": 0,\n        \"PonID\": \"\",\n        \"RegistrationID\": \"9731832466\",\n        \"OpticalSignalLevel\": -20808,\n        \"TransmitOpticalLevel\": 2306,\n        \"ChipsetTemperature\": 56,\n        \"Timer\": 5,\n        \"Retry\": 7\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb5/Devices_get_expression-usb.json",
    "content": "{\n    \"status\": [\n        {\n            \"Key\": \"sysbus_USBHost\",\n            \"DiscoverySource\": \"selfusb\",\n            \"Name\": \"USBHost\",\n            \"DeviceType\": \"\",\n            \"Active\": true,\n            \"Tags\": \"self usb interface sysbus\",\n            \"FirstSeen\": \"2022-07-04T00:17:43Z\",\n            \"LastConnection\": \"2022-07-04T00:17:43Z\",\n            \"LastChanged\": \"0001-01-01T00:00:00Z\",\n            \"Master\": \"\",\n            \"BusName\": \"sysbus\",\n            \"Index\": \"28\",\n            \"Names\": [\n                {\n                    \"Name\": \"USBHost\",\n                    \"Source\": \"default\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"default\"\n                }\n            ],\n            \"DeviceTypes\": []\n        },\n        {\n            \"Key\": \"Port1\",\n            \"DiscoverySource\": \"selfusb\",\n            \"Name\": \"Port1\",\n            \"DeviceType\": \"\",\n            \"Active\": true,\n            \"Tags\": \"self usb port interface sysbus\",\n            \"FirstSeen\": \"2022-07-04T00:17:43Z\",\n            \"LastConnection\": \"2022-07-04T00:17:43Z\",\n            \"LastChanged\": \"2022-07-17T16:22:59Z\",\n            \"Master\": \"\",\n            \"BusName\": \"sysbus\",\n            \"Port\": 1,\n            \"USBHost\": \"sysbus.USBHosts.Host.1\",\n            \"Index\": \"40\",\n            \"Names\": [\n                {\n                    \"Name\": \"Port1\",\n                    \"Source\": \"default\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"default\"\n                }\n            ],\n            \"DeviceTypes\": []\n        },\n        {\n            \"Key\": \"USB_1_2\",\n            \"DiscoverySource\": \"usb_dev\",\n            \"Name\": \"Mass Storage\",\n            \"DeviceType\": \"Disk\",\n            \"Active\": true,\n            \"Tags\": \"bus usb physical storage edev\",\n            \"FirstSeen\": \"2022-07-17T16:22:58Z\",\n            \"LastConnection\": \"2022-07-17T16:22:58Z\",\n            \"LastChanged\": \"2022-07-17T16:23:01Z\",\n            \"Master\": \"\",\n            \"BusName\": \"sysbus\",\n            \"Location\": \"\",\n            \"Owner\": \"\",\n            \"USBVersion\": \"2.00\",\n            \"DeviceVersion\": 260,\n            \"DeviceProtocol\": \"0x00\",\n            \"ProductID\": 25479,\n            \"VendorID\": 1423,\n            \"Manufacturer\": \"\",\n            \"SerialNumber\": \"2D7C3C69\",\n            \"Port\": 1,\n            \"Rate\": \"High\",\n            \"Index\": \"660\",\n            \"Names\": [\n                {\n                    \"Name\": \"usb_disk_1\",\n                    \"Source\": \"default\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"default\"\n                },\n                {\n                    \"Name\": \"Mass Storage\",\n                    \"Source\": \"usb-prod\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"usb-prod\"\n                }\n            ],\n            \"DeviceTypes\": [\n                {\n                    \"Type\": \"Disk\",\n                    \"Source\": \"usb\",\n                    \"Id\": \"usb\"\n                }\n            ],\n            \"Locations\": [],\n            \"Groups\": []\n        },\n        {\n            \"Key\": \"8AC9-A830\",\n            \"DiscoverySource\": \"usb_storage\",\n            \"Name\": \"USB1\",\n            \"DeviceType\": \"Partition\",\n            \"Active\": true,\n            \"Tags\": \"bus usb storage logical volume\",\n            \"FirstSeen\": \"2022-07-17T16:23:00Z\",\n            \"LastConnection\": \"2022-07-17T16:23:01Z\",\n            \"LastChanged\": \"2022-07-17T16:23:04Z\",\n            \"Master\": \"\",\n            \"BusName\": \"sysbus\",\n            \"FileSystem\": \"FAT32\",\n            \"Capacity\": 956,\n            \"UsedSpace\": 194,\n            \"LogicalVolumeIndex\": 1,\n            \"Index\": \"661\",\n            \"Actions\": [\n                {\n                    \"Function\": \"setName\",\n                    \"Name\": \"Edit Name\",\n                    \"Arguments\": [\n                        {\n                            \"Name\": \"name\",\n                            \"Type\": \"string\",\n                            \"Mandatory\": true\n                        },\n                        {\n                            \"Name\": \"source\",\n                            \"Type\": \"string\",\n                            \"Mandatory\": false\n                        }\n                    ]\n                }\n            ],\n            \"Names\": [\n                {\n                    \"Name\": \"USB1\",\n                    \"Source\": \"default\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"default\"\n                },\n                {\n                    \"Name\": \"USB1\",\n                    \"Source\": \"storage\",\n                    \"Suffix\": \"\",\n                    \"Id\": \"storage\"\n                }\n            ],\n            \"DeviceTypes\": [\n                {\n                    \"Type\": \"Partition\",\n                    \"Source\": \"storage\",\n                    \"Id\": \"storage\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Sagemcom\",\n        \"ManufacturerOUI\": \"088?\",\n        \"ModelName\": \"SagemcomFast5670E_OFR\",\n        \"Description\": \"SagemcomFast5670E_OFR Sagemcom fr\",\n        \"ProductClass\": \"Livebox 6\",\n        \"SerialNumber\": \"309209 (fake number)\",\n        \"HardwareVersion\": \"SG_LB6_1.0.7\",\n        \"SoftwareVersion\": \"SG60-fr-G01.R02.C02_20\",\n        \"RescueVersion\": \"SG60-fr-G01.R01.C12_22\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"sbl-G1.R2.C2-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.?.?\",\n        \"UpTime\": 3227870,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"http://www.sagemcom.com/\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.116.58.128\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 6,\n        \"UpgradeOccurred\": false,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": false,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"\",\n        \"BaseMAC\": \"F8:87:C6:19:30:2F\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/HomeLan_Interface_get.json",
    "content": "{\n    \"status\": {\n        \"vap2g0priv0\": {\n            \"FriendlyName\": \"2.4GHz-Private_SSID\",\n            \"Name\": \"vap2g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"vap5g0priv0\": {\n            \"FriendlyName\": \"5GHz-Private_SSID\",\n            \"Name\": \"vap5g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"vap6g0priv0\": {\n            \"FriendlyName\": \"6GHz-Private_SSID\",\n            \"Name\": \"vap6g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH0\": {\n            \"FriendlyName\": \"LAN-10G\",\n            \"Name\": \"ETH0\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH1\": {\n            \"FriendlyName\": \"eth1\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH2\": {\n            \"FriendlyName\": \"eth2\",\n            \"Name\": \"ETH2\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH3\": {\n            \"FriendlyName\": \"eth3\",\n            \"Name\": \"ETH3\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"eth1_wan\": {\n            \"FriendlyName\": \"WAN_Ethernet\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH4\": {\n            \"FriendlyName\": \"eth4\",\n            \"Name\": \"ETH4\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_data\": {\n            \"FriendlyName\": \"WAN_Ethernet-Internet\",\n            \"Name\": \"vlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_multi\": {\n            \"FriendlyName\": \"WAN_Ethernet-MultiServices\",\n            \"Name\": \"vlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_voip\": {\n            \"FriendlyName\": \"WAN_Ethernet-VoIP\",\n            \"Name\": \"vlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv1\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_VOD\",\n            \"Name\": \"vlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv2\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_Live\",\n            \"Name\": \"vlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"veip0\": {\n            \"FriendlyName\": \"WAN_GPON\",\n            \"Name\": \"veip0\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"gvlan_data\": {\n            \"FriendlyName\": \"WAN_GPON-Internet\",\n            \"Name\": \"gvlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_multi\": {\n            \"FriendlyName\": \"WAN_GPON-MultiServices\",\n            \"Name\": \"gvlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"gvlan_voip\": {\n            \"FriendlyName\": \"WAN_GPON-VoIP\",\n            \"Name\": \"gvlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv1\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_VOD\",\n            \"Name\": \"gvlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv2\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_Live\",\n            \"Name\": \"gvlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap2g0guest0\": {\n            \"FriendlyName\": \"2.4GHz-Guest_SSID\",\n            \"Name\": \"vap2g0guest0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap5g0guest0\": {\n            \"FriendlyName\": \"5GHz-Guest_SSID\",\n            \"Name\": \"vap5g0guest0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        }\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/LEDs_LED_Orange_get.json",
    "content": "{\"status\":{\"Brightness\":5,\"Path\":\"/var/dev/led/Orange\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/LEDs_LED_Orange_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/LEDs_LED_White_get.json",
    "content": "{\"status\":{\"Brightness\":48,\"Path\":\"/var/dev/led/White\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/LEDs_LED_White_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/Screen_getShowWifiPassword.json",
    "content": "{\"status\":false}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb6/Screen_setShowWifiPassword.json",
    "content": "{\"status\":null}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Sagemcom\",\n        \"ManufacturerOUI\": \"581DD8\",\n        \"ModelName\": \"SagemcomFast5694_OFR\",\n        \"Description\": \"SagemcomFast5694_OFR Sagemcom fr\",\n        \"ProductClass\": \"Livebox 7\",\n        \"SerialNumber\": \"LK23446DP951454\",\n        \"HardwareVersion\": \"SG_LB7_4.0.0\",\n        \"SoftwareVersion\": \"SG70-fr-G01.R01.C15_04\",\n        \"RescueVersion\": \"SG70-fr-G01.R01.C14_08\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"sbl-G1.R1.C15-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.8343.1368\",\n        \"UpTime\": 292656,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"http://www.sagemcom.com/\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.116.58.128\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 1,\n        \"UpgradeOccurred\": true,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": true,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"\",\n        \"BaseMAC\": \"F8:87:C6:19:30:2F\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/HomeLan_Interface_get.json",
    "content": "{\n    \"status\": {\n        \"vap2g0priv0\": {\n            \"FriendlyName\": \"2.4GHz-Private_SSID\",\n            \"Name\": \"vap2g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap5g0priv0\": {\n            \"FriendlyName\": \"5GHz-Private_SSID\",\n            \"Name\": \"vap5g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap6g0priv0\": {\n            \"FriendlyName\": \"6GHz-Private_SSID\",\n            \"Name\": \"vap6g0priv0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"ETH0\": {\n            \"FriendlyName\": \"LAN-10G\",\n            \"Name\": \"ETH0\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH1\": {\n            \"FriendlyName\": \"eth1\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"ETH2\": {\n            \"FriendlyName\": \"eth2\",\n            \"Name\": \"ETH2\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"ETH3\": {\n            \"FriendlyName\": \"eth3\",\n            \"Name\": \"ETH3\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"eth1_wan\": {\n            \"FriendlyName\": \"WAN_Ethernet\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"ETH4\": {\n            \"FriendlyName\": \"eth4\",\n            \"Name\": \"ETH4\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_data\": {\n            \"FriendlyName\": \"WAN_Ethernet-Internet\",\n            \"Name\": \"vlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_multi\": {\n            \"FriendlyName\": \"WAN_Ethernet-MultiServices\",\n            \"Name\": \"vlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_voip\": {\n            \"FriendlyName\": \"WAN_Ethernet-VoIP\",\n            \"Name\": \"vlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv1\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_VOD\",\n            \"Name\": \"vlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv2\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_Live\",\n            \"Name\": \"vlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"veip0\": {\n            \"FriendlyName\": \"WAN_GPON\",\n            \"Name\": \"veip0\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"gvlan_data\": {\n            \"FriendlyName\": \"WAN_GPON-Internet\",\n            \"Name\": \"gvlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_multi\": {\n            \"FriendlyName\": \"WAN_GPON-MultiServices\",\n            \"Name\": \"gvlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"gvlan_voip\": {\n            \"FriendlyName\": \"WAN_GPON-VoIP\",\n            \"Name\": \"gvlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv1\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_VOD\",\n            \"Name\": \"gvlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv2\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_Live\",\n            \"Name\": \"gvlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 8680\n        },\n        \"vap2g0guest0\": {\n            \"FriendlyName\": \"2.4GHz-Guest_SSID\",\n            \"Name\": \"vap2g0guest0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap5g0guest0\": {\n            \"FriendlyName\": \"5GHz-Guest_SSID\",\n            \"Name\": \"vap5g0guest0\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        }\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/LEDs_LED_Orange_get.json",
    "content": "{\"status\":{\"Brightness\":5,\"Path\":\"/var/dev/led/Orange\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/LEDs_LED_Orange_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/LEDs_LED_White_get.json",
    "content": "{\"status\":{\"Brightness\":48,\"Path\":\"/var/dev/led/White\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/LEDs_LED_White_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/Screen_getShowWifiPassword.json",
    "content": "{\"status\":false}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lb7/Screen_setShowWifiPassword.json",
    "content": "{\"status\":null}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Sagemcom\",\n        \"ManufacturerOUI\": \"088?\",\n        \"ModelName\": \"SagemcomFast5670E_OFR\",\n        \"Description\": \"SagemcomFast5670E_OFR Sagemcom fr\",\n        \"ProductClass\": \"Livebox 6\",\n        \"SerialNumber\": \"309209 (fake number)\",\n        \"HardwareVersion\": \"SG_LB6_1.0.7\",\n        \"SoftwareVersion\": \"SG60-fr-G01.R02.C02_20\",\n        \"RescueVersion\": \"SG60-fr-G01.R01.C12_22\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"sbl-G1.R2.C2-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.?.?\",\n        \"UpTime\": 3227870,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"http://www.sagemcom.com/\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.116.58.128\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 6,\n        \"UpgradeOccurred\": false,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": false,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"\",\n        \"BaseMAC\": \"F8:87:C6:19:30:2F\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/LEDs_LED_Orange_get.json",
    "content": "{\"status\":{\"Brightness\":5,\"Path\":\"/var/dev/led/Orange\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/LEDs_LED_Orange_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/LEDs_LED_White_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_LAN_IPv4Route_NPiOgoBk3b_set.json",
    "content": "{\"status\": true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_LAN_IPv4Route_wzQIWEBb5G_set.json",
    "content": "{\"status\": true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_LAN_addStaticRoute.json",
    "content": "{\"status\":null}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_LAN_deleteStaticRoute.json",
    "content": "{\"status\":null}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_LAN_getStaticRoutes.json",
    "content": "{\n    \"status\": {\n        \"NPiOgoBk3b\": {\n            \"Enable\": true,\n            \"Status\": \"Bound\",\n            \"DstLen\": 24,\n            \"Dst\": \"192.168.250.0\",\n            \"Priority\": 3001,\n            \"Gateway\": \"192.168.1.250\",\n            \"MTU\": 1500\n        },\n        \"wzQIWEBb5G\": {\n            \"Enable\": false,\n            \"Status\": \"Disabled\",\n            \"DstLen\": 24,\n            \"Dst\": \"10.10.10.0\",\n            \"Priority\": 3002,\n            \"Gateway\": \"192.168.250.10\",\n            \"MTU\": 1500\n        }\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/NMC_get.json",
    "content": "{\n  \"status\": {\n    \"WanModeList\": \"Ethernet_PPP;Ethernet_DHCP;GPON_DHCP;GPON_PPP\",\n    \"WanMode\": \"GPON_DHCP\",\n    \"Username\": \"fti/w2voxr4\",\n    \"FactoryResetScheduled\": false,\n    \"ConnectionError\": false,\n    \"DefaultsLoaded\": true,\n    \"ProvisioningState\": \"done\",\n    \"OfferType\": \"Pro\",\n    \"OfferName\": \"MonoLigne\",\n    \"IPTVMode\": \"Internet\"\n  }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/Screen_getShowWifiPassword.json",
    "content": "{\"status\":false}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbpro/Screen_setShowWifiPassword.json",
    "content": "{\"status\":null}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbs/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Arcadyan\",\n        \"ManufacturerOUI\": \"2037F0\",\n        \"ModelName\": \"PRV33AX346B-H2-OG\",\n        \"Description\": \"PRV33AX346B-H2-OG Arcadyan fr\",\n        \"ProductClass\": \"Livebox Nautilus\",\n        \"SerialNumber\": \"JA25043AV054494\",\n        \"HardwareVersion\": \"AR_LBN_1.0.0\",\n        \"SoftwareVersion\": \"ARNA-fr-G01.R02.C16_06\",\n        \"RescueVersion\": \"ARNA-fr-G01.R02.C10_12\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"sbl-G1.R2.C16-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.9139.8335\",\n        \"UpTime\": 14543,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"https://www.arcadyan.com\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.45.226.208\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 3,\n        \"UpgradeOccurred\": false,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": false,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"Bootloader=gen_2024.04_v1.0.16,RescueBootloader=gen_2024.04_v1.0.16\",\n        \"BaseMAC\": \"20:37:f0:ab:5f:ac\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbs/Devices_get.json",
    "content": "{\n  \"status\": [\n    {\n      \"Key\": \"C4:57:6E:32:88:1E\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TV Salon\",\n      \"DeviceType\": \"TV\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats upnp samsung tv events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-11T06:04:56Z\",\n      \"LastChanged\": \"2026-03-11T06:04:57Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"udhcp v1.21.1\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:C4:57:6E:32:88:1E\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n      \"IPAddress\": \"192.168.1.10\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"C4:57:6E:32:88:1E\",\n      \"Layer2Interface\": \"eth2\",\n      \"InterfaceName\": \"ETH1\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:2b04c531-44d4-4d66-ae0b-ba87663ac07b\",\n      \"Index\": \"1\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"1\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"[TV] Samsung\",\n          \"Source\": \"upnp\",\n          \"Suffix\": \"\",\n          \"Id\": \"upnp\"\n        },\n        {\n          \"Name\": \"TV Salon\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"TV\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"MediaRenderer\",\n          \"Source\": \"upnp-uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\",\n          \"Id\": \"upnp-uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.10\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_10\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"5C:13:CC:43:91:67\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"iPhone-Valerie\",\n      \"DeviceType\": \"Mobile iOS\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp apple wifi ssw_sta flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n      \"LastConnection\": \"2026-03-10T22:30:31Z\",\n      \"LastChanged\": \"2026-03-10T23:41:32Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:5C:13:CC:43:91:67\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n      \"IPAddress\": \"192.168.1.18\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"5C:13:CC:43:91:67\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:0fb29793-494d-468a-a462-5723ae105077\",\n      \"SignalStrength\": -78,\n      \"SignalNoiseRatio\": 12,\n      \"LastDataDownlinkRate\": 73120,\n      \"LastDataUplinkRate\": 51610,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE,MU-BFE\",\n      \"HeCapabilities\": \"SU&MU-BFE\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ax\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -78,\n      \"MaxBandwidthSupported\": \"160MHz\",\n      \"MaxDownlinkRateSupported\": 144444,\n      \"MaxDownlinkRateReached\": 130000,\n      \"DownlinkMCS\": 6,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 4,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 144444,\n      \"MaxUplinkRateReached\": 137640,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"2\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"2\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"iPhone-Valerie\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"iPhone-Valerie\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Mobile iOS\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"Mobile\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.18\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_18\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:8503:e3cc:37ea:f251\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:8503:e3cc:37ea:f251\"\n        },\n        {\n          \"Address\": \"fe80::1cb7:4924:38cd:fbce\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::1cb7:4924:38cd:fbce\"\n        }\n      ],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"5C:13:CC:43:91:67\",\n        \"SupportedStandards\": \"80211k,80211v,80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": true,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 6,\n        \"AvgSteeringTime\": 5187,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n        \"VendorSpecificElementOUIList\": \"\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [\n        {\n          \"UserAgent\": \"com.google.GoogleMobile/410.0 iPhone/26.3 hw/iPhone18_1\",\n          \"Type\": \"HTTP\",\n          \"LastSeen\": \"2026-03-03T09:13:29Z\",\n          \"Source\": \"captiveportal\",\n          \"Id\": \"1\"\n        },\n        {\n          \"UserAgent\": \"com.google.GoogleMobile/411.0 iPhone/26.3.1 hw/iPhone18_1\",\n          \"Type\": \"HTTP\",\n          \"LastSeen\": \"2026-03-10T15:37:25Z\",\n          \"Source\": \"captiveportal\",\n          \"Id\": \"2\"\n        }\n      ],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"60:E3:2B:AB:7A:2A\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TUF-GAMING\",\n      \"DeviceType\": \"Laptop Windows\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp microsoft wifi ssw_sta flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n      \"LastConnection\": \"2026-03-11T06:13:28Z\",\n      \"LastChanged\": \"2026-03-11T06:13:32Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"MSFT 5.0\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:60:E3:2B:AB:7A:2A\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,15,31,33,43,44,46,47,119,121,249,252]\",\n      \"IPAddress\": \"192.168.1.12\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"60:E3:2B:AB:7A:2A\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:bdbace3c-2392-4b46-93c8-43c45e37d142\",\n      \"SignalStrength\": -58,\n      \"SignalNoiseRatio\": 33,\n      \"LastDataDownlinkRate\": 1080880,\n      \"LastDataUplinkRate\": 1080880,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE,MU-BFE\",\n      \"HeCapabilities\": \"SU&MU-BFE\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"WFA-MBO\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ax\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -58,\n      \"MaxBandwidthSupported\": \"160MHz\",\n      \"MaxDownlinkRateSupported\": 2401911,\n      \"MaxDownlinkRateReached\": 1200950,\n      \"DownlinkMCS\": 10,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 10,\n      \"UplinkBandwidth\": 80,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 2401911,\n      \"MaxUplinkRateReached\": 1200950,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"3\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"3\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"TUF-GAMING\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Laptop Windows\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.12\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_12\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::6e75:db25:433f:2cfa\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::6e75:db25:433f:2cfa\"\n        },\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:c4a4:a27e:f11f:d6c6\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:c4a4:a27e:f11f:d6c6\"\n        },\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:1004:51ff:2eff:dac3\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:1004:51ff:2eff:dac3\"\n        }\n      ],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"60:E3:2B:AB:7A:2A\",\n        \"SupportedStandards\": \"80211k,80211v,80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 1,\n        \"AvgSteeringTime\": 3331,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4\",\n        \"VendorSpecificElementOUIList\": \"\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"42:AE:30:04:7C:76\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink Rdc 2.4 GHz\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan mac physical wifi hnid wifi_bridge ssw_sta ipv4 ipv6 flowstats dhcp events\",\n      \"FirstSeen\": \"2026-03-05T15:58:09Z\",\n      \"LastConnection\": \"2026-03-08T09:15:05Z\",\n      \"LastChanged\": \"2026-03-09T09:13:35Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"\",\n      \"IPAddress\": \"192.168.1.21\",\n      \"IPAddressSource\": \"Static\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"42:AE:30:04:7C:76\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:260b37f9-f661-4cd6-a1d8-357d0832200f\",\n      \"SignalStrength\": -64,\n      \"SignalNoiseRatio\": 26,\n      \"LastDataDownlinkRate\": 130000,\n      \"LastDataUplinkRate\": 144444,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -64,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 144444,\n      \"MaxDownlinkRateReached\": 130000,\n      \"DownlinkMCS\": 15,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 15,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": true,\n      \"MaxUplinkRateSupported\": 144444,\n      \"MaxUplinkRateReached\": 144444,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"4\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"wifi bridge\",\n          \"Source\": \"default\",\n          \"Suffix\": \"\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"TPLink Rdc 2.4 GHz\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"WiFi Bridge\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.21\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_21\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"42:AE:30:04:7C:76\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"40:AE:30:94:7C:76\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink RDC RE330\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats microsoft events\",\n      \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n      \"LastConnection\": \"2026-03-05T15:59:30Z\",\n      \"LastChanged\": \"2026-03-06T06:09:32Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"MSFT 5.0\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:40:AE:30:94:7C:76\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,15,43,44,46,47,33,121,249]\",\n      \"IPAddress\": \"192.168.1.21\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"40:AE:30:94:7C:76\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:7a130247-065e-48e7-83d5-584b47726396\",\n      \"Index\": \"5\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"5\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"RE330\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"TPLink RDC RE330\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.21\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": true,\n          \"Id\": \"192_168_1_21\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"46:AE:30:94:7C:77\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink Rdc 5 GHz\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan mac physical wifi flowstats hnid wifi_bridge ssw_sta ipv4 ipv6 samsung tv dhcp events\",\n      \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n      \"LastConnection\": \"2026-03-09T17:08:24Z\",\n      \"LastChanged\": \"2026-03-10T12:26:02Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"\",\n      \"IPAddress\": \"192.168.1.80\",\n      \"IPAddressSource\": \"Static\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"46:AE:30:94:7C:77\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:f9b4f2a5-c838-4f01-8186-2b60b1ff054c\",\n      \"SignalStrength\": -62,\n      \"SignalNoiseRatio\": 29,\n      \"LastDataDownlinkRate\": 866667,\n      \"LastDataUplinkRate\": 6000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE,MU-BFR,MU-BFE\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ac\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -62,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 866666,\n      \"MaxDownlinkRateReached\": 866667,\n      \"DownlinkMCS\": 9,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": true,\n      \"UplinkMCS\": 3,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 866666,\n      \"MaxUplinkRateReached\": 866667,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"6\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"wifi bridge\",\n          \"Source\": \"default\",\n          \"Suffix\": \"1\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"TPLink Rdc 5 GHz\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"Samsung Q50AE 32 TV\",\n          \"Source\": \"upnp\",\n          \"Suffix\": \"1\",\n          \"Id\": \"upnp\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"WiFi Bridge\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.80\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_80\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::b2e4:5cff:fe7d:2af8\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::b2e4:5cff:fe7d:2af8\"\n        }\n      ],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"46:AE:30:94:7C:77\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": false,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"U-NII-1,U-NII-2C\",\n        \"VendorSpecificElementOUIList\": \"00:0C:43,00:0C:E7,00:50:F2\",\n        \"SupportedRadioStandards\": \"a,n,ac\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [\n        {\n          \"UserAgent\": \"com.google.GoogleMobile/410.0 iPhone/26.3.1 hw/iPhone18_1\",\n          \"Type\": \"HTTP\",\n          \"LastSeen\": \"2026-03-07T16:35:35Z\",\n          \"Source\": \"captiveportal\",\n          \"Id\": \"1\"\n        }\n      ],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"20:21:41:54:41:F8\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Chambre Chloe\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n      \"LastChanged\": \"2026-03-05T20:03:35Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:20:21:41:54:41:F8\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.7\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"20:21:41:54:41:F8\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:64f41606-9163-4738-9257-13f6716638a7\",\n      \"Index\": \"7\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"7\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Chambre Chloe\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.7\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_7\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"20:21:41:54:2F:2D\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Chambre\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-05T15:59:45Z\",\n      \"LastChanged\": \"2026-03-05T20:03:57Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:20:21:41:54:2F:2D\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.6\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"20:21:41:54:2F:2D\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:3acaa91a-94c2-404f-acfc-65070210e06d\",\n      \"Index\": \"8\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"8\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Chambre\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.6\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_6\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"44:1D:64:A2:AA:70\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"GA Chauffe eau\",\n      \"DeviceType\": \"Google OnHub\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp flowstats wifi ssw_sta events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-10T04:00:59Z\",\n      \"LastChanged\": \"2026-03-10T04:01:01Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:44:1D:64:A2:AA:70\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.3\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"44:1D:64:A2:AA:70\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:c621964e-6c3f-416c-8ce7-f7905142b327\",\n      \"SignalStrength\": -40,\n      \"SignalNoiseRatio\": 48,\n      \"LastDataDownlinkRate\": 6500,\n      \"LastDataUplinkRate\": 5500,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -40,\n      \"MaxBandwidthSupported\": \"40MHz\",\n      \"MaxDownlinkRateSupported\": 150000,\n      \"MaxDownlinkRateReached\": 72222,\n      \"DownlinkMCS\": 0,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 2,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 150000,\n      \"MaxUplinkRateReached\": 72222,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"Index\": \"9\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"9\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"GA-178545227598\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"GA Chauffe eau\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Google OnHub\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.3\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_3\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"44:1D:64:A2:AA:70\",\n        \"SupportedStandards\": \"80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"B0:E4:5C:7D:2A:F8\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TV Chambre\",\n      \"DeviceType\": \"TV\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats upnp mdns samsung tv events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-05T15:59:36Z\",\n      \"LastChanged\": \"2026-03-05T21:39:43Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:B0:E4:5C:7D:2A:F8\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,26,252,43,42,6,12]\",\n      \"IPAddress\": \"192.168.1.4\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"B0:E4:5C:7D:2A:F8\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:21a2c068-50ee-4a74-8203-a61d074aea99\",\n      \"Index\": \"10\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"10\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Samsung\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"Samsung\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        },\n        {\n          \"Name\": \"Samsung Q50AE 32 TV\",\n          \"Source\": \"upnp\",\n          \"Suffix\": \"\",\n          \"Id\": \"upnp\"\n        },\n        {\n          \"Name\": \"TV Chambre\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"TV\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"MediaRenderer\",\n          \"Source\": \"upnp-uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\",\n          \"Id\": \"upnp-uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\"\n        },\n        {\n          \"Type\": \"TV\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.4\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_4\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"mDNSService\": [],\n      \"mDNSRecord\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"B0:65:3A:85:7F:F0\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Salon\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp flowstats upnp events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-05T15:59:44Z\",\n      \"LastChanged\": \"2026-03-05T20:04:20Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:B0:65:3A:85:7F:F0\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.5\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"B0:65:3A:85:7F:F0\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:7642aba4-f1f0-45de-8894-401b693413c5\",\n      \"SignalStrength\": 0,\n      \"SignalNoiseRatio\": 0,\n      \"LastDataDownlinkRate\": 0,\n      \"LastDataUplinkRate\": 0,\n      \"EncryptionMode\": \"\",\n      \"LinkBandwidth\": \"\",\n      \"SecurityModeEnabled\": \"\",\n      \"HtCapabilities\": \"\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": false,\n      \"OperatingStandard\": \"\",\n      \"OperatingFrequencyBand\": \"\",\n      \"AvgSignalStrengthByChain\": 0,\n      \"MaxBandwidthSupported\": \"\",\n      \"MaxDownlinkRateSupported\": 0,\n      \"MaxDownlinkRateReached\": 0,\n      \"DownlinkMCS\": 0,\n      \"DownlinkBandwidth\": 0,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 0,\n      \"UplinkBandwidth\": 0,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 0,\n      \"MaxUplinkRateReached\": 0,\n      \"MaxTxSpatialStreamsSupported\": 0,\n      \"MaxRxSpatialStreamsSupported\": 0,\n      \"Index\": \"11\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"11\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Salon\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.5\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_5\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"3E:6A:D2:0D:C9:D2\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink Etage 2.4 GHz\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan mac physical wifi ipv4 ipv6 ssw_sta hnid wifi_bridge flowstats dhcp microsoft events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-11T05:00:45Z\",\n      \"LastChanged\": \"2026-03-11T05:00:55Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"3E:6A:D2:0D:C9:D2\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:4d8b81f3-b8a5-4717-ac8a-abac47338687\",\n      \"SignalStrength\": -68,\n      \"SignalNoiseRatio\": 22,\n      \"LastDataDownlinkRate\": 130000,\n      \"LastDataUplinkRate\": 117000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -68,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 144444,\n      \"MaxDownlinkRateReached\": 130000,\n      \"DownlinkMCS\": 15,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 14,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 144444,\n      \"MaxUplinkRateReached\": 144444,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"14\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"wifi bridge\",\n          \"Source\": \"default\",\n          \"Suffix\": \"2\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"TPLink Etage 2.4 GHz\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"RE330\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"3\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"WiFi Bridge\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"3E:6A:D2:0D:C9:D2\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"3A:6A:D2:8D:C9:D3\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink Etage 5 GHz\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan mac physical wifi flowstats hnid wifi_bridge ssw_sta ipv4 ipv6 dhcp microsoft events\",\n      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n      \"LastConnection\": \"2026-03-11T05:00:43Z\",\n      \"LastChanged\": \"2026-03-11T05:01:29Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"\",\n      \"IPAddress\": \"192.168.1.80\",\n      \"IPAddressSource\": \"Static\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"3A:6A:D2:8D:C9:D3\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:694be30c-9ab0-4325-8f5e-8f6c6c182c15\",\n      \"SignalStrength\": -78,\n      \"SignalNoiseRatio\": 13,\n      \"LastDataDownlinkRate\": 195000,\n      \"LastDataUplinkRate\": 351000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE,MU-BFR,MU-BFE\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ac\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -78,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 866666,\n      \"MaxDownlinkRateReached\": 351000,\n      \"DownlinkMCS\": 4,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": true,\n      \"UplinkMCS\": 4,\n      \"UplinkBandwidth\": 80,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 866666,\n      \"MaxUplinkRateReached\": 468000,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"15\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"wifi bridge\",\n          \"Source\": \"default\",\n          \"Suffix\": \"3\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"TPLink Etage 5 GHz\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"RE330\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"2\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"WiFi Bridge\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.0.100\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_0_100\"\n        },\n        {\n          \"Address\": \"192.168.1.80\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_80\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"3A:6A:D2:8D:C9:D3\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": false,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"U-NII-1,U-NII-2C\",\n        \"VendorSpecificElementOUIList\": \"00:0C:43,00:0C:E7,00:50:F2\",\n        \"SupportedRadioStandards\": \"a,n,ac\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"20:21:41:54:34:03\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Couloir Parent\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T15:59:47Z\",\n      \"LastChanged\": \"2026-03-05T20:05:47Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:20:21:41:54:34:03\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.14\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"20:21:41:54:34:03\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:3ed92780-2fcd-4c53-8948-ae20b7ab908b\",\n      \"Index\": \"16\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"16\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Couloir Parent\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.14\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_14\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"20:21:41:54:98:65\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split chambre Parent\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T15:59:44Z\",\n      \"LastChanged\": \"2026-03-05T20:05:55Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:20:21:41:54:98:65\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.9\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"20:21:41:54:98:65\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:189e3266-f0f5-48cd-85f1-cc7a201aaa09\",\n      \"Index\": \"17\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"17\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split chambre Parent\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.9\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_9\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"20:21:41:54:2F:3A\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Chambr2 Parent\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T16:00:01Z\",\n      \"LastChanged\": \"2026-03-09T21:22:41Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:20:21:41:54:2F:3A\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.15\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"20:21:41:54:2F:3A\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:bf665637-dd79-4af5-a530-3d999d39cb3f\",\n      \"Index\": \"18\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"18\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Chambr2 Parent\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.15\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_15\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"B0:65:3A:7C:6C:E6\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Grenier Parent\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T15:59:52Z\",\n      \"LastChanged\": \"2026-03-05T20:06:13Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:B0:65:3A:7C:6C:E6\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.16\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"B0:65:3A:7C:6C:E6\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:c5b4c1cb-a27c-4664-930b-809b1b977800\",\n      \"Index\": \"19\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"19\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Grenier Parent\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.16\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_16\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"A4:57:A0:8E:C3:98\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"S\\u00e8che Linge Samsung\",\n      \"DeviceType\": \"Apple Time Capsule\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n      \"LastChanged\": \"2026-03-08T15:25:58Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:A4:57:A0:8E:C3:98\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.13\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"A4:57:A0:8E:C3:98\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:cc21553a-c408-44a9-afa8-fa1d5d505ef3\",\n      \"Index\": \"20\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"20\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Samsung-Dryer\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"S\\u00e8che Linge Samsung\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Apple Time Capsule\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.13\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_13\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"3C:6A:D2:8D:C9:D2\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"TPLink Etage RE330\",\n      \"DeviceType\": \"WiFi_Access_Point\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp microsoft flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-05T15:59:34Z\",\n      \"LastChanged\": \"2026-03-11T05:00:49Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"MSFT 5.0\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:3C:6A:D2:8D:C9:D2\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,15,43,44,46,47,33,121,249]\",\n      \"IPAddress\": \"192.168.1.41\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"3C:6A:D2:8D:C9:D2\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:c26c5bae-3855-4a30-9fd0-713e6a371ba2\",\n      \"Index\": \"21\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"21\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"RE330\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"1\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"TPLink Etage RE330\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"WiFi_Access_Point\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.41\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": true,\n          \"Id\": \"192_168_1_41\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"00:BB:C1:90:A5:77\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Imprimante Canon\",\n      \"DeviceType\": \"Printer\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi ssw_sta ipv4 ipv6 dhcp flowstats mdns events\",\n      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n      \"LastConnection\": \"2026-03-06T14:50:21Z\",\n      \"LastChanged\": \"2026-03-06T14:50:22Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:00:BB:C1:90:A5:77\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6]\",\n      \"IPAddress\": \"192.168.1.31\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"00:BB:C1:90:A5:77\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:a151e03f-ae7a-4651-bd4b-2ac92e98f454\",\n      \"SignalStrength\": -70,\n      \"SignalNoiseRatio\": 20,\n      \"LastDataDownlinkRate\": 65000,\n      \"LastDataUplinkRate\": 65000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -70,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 72222,\n      \"MaxDownlinkRateReached\": 72222,\n      \"DownlinkMCS\": 7,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 7,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 72222,\n      \"MaxUplinkRateReached\": 72222,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"Index\": \"24\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"24\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Imprimante Canon\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"CANONMG4250\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Printer\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.31\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_31\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::2bb:c1ff:fe90:a577\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::2bb:c1ff:fe90:a577\"\n        }\n      ],\n      \"Locations\": [],\n      \"mDNSService\": [],\n      \"mDNSRecord\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"00:BB:C1:90:A5:77\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"48:E1:E9:DB:4E:2A\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"MerossSmartSwitch\",\n      \"DeviceType\": \"Power Meter\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp ssw_sta flowstats mdns events\",\n      \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n      \"LastConnection\": \"2026-03-05T15:58:46Z\",\n      \"LastChanged\": \"2026-03-05T15:58:58Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:48:E1:E9:DB:4E:2A\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.32\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"48:E1:E9:DB:4E:2A\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:fe2903b7-817f-49b5-bf8e-aef4b7856e8c\",\n      \"SignalStrength\": -56,\n      \"SignalNoiseRatio\": 34,\n      \"LastDataDownlinkRate\": 65000,\n      \"LastDataUplinkRate\": 72222,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -56,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 72222,\n      \"MaxDownlinkRateReached\": 72222,\n      \"DownlinkMCS\": 7,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 7,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": true,\n      \"MaxUplinkRateSupported\": 72222,\n      \"MaxUplinkRateReached\": 72222,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"Index\": \"25\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"25\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"MerossSmartSwitch\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"MerossSmartSwitch\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"mt7687\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Power Meter\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.32\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_32\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::4ae1:e9ff:fedb:4e2a\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::4ae1:e9ff:fedb:4e2a\"\n        }\n      ],\n      \"Locations\": [],\n      \"mDNSService\": [],\n      \"mDNSRecord\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"48:E1:E9:DB:4E:2A\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:0C:43\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"B0:65:3A:8A:B9:EE\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Split Salon Parent\",\n      \"DeviceType\": \"Femtocell\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi ssw_sta ipv4 ipv6 dhcp flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n      \"LastChanged\": \"2026-03-05T20:06:47Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:B0:65:3A:8A:B9:EE\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"192.168.1.8\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"B0:65:3A:8A:B9:EE\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:534ed730-a7cf-4959-80c5-f8d1fc9941e7\",\n      \"SignalStrength\": 0,\n      \"SignalNoiseRatio\": 0,\n      \"LastDataDownlinkRate\": 0,\n      \"LastDataUplinkRate\": 0,\n      \"EncryptionMode\": \"\",\n      \"LinkBandwidth\": \"\",\n      \"SecurityModeEnabled\": \"\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": false,\n      \"OperatingStandard\": \"\",\n      \"OperatingFrequencyBand\": \"\",\n      \"AvgSignalStrengthByChain\": 0,\n      \"MaxBandwidthSupported\": \"\",\n      \"MaxDownlinkRateSupported\": 0,\n      \"MaxDownlinkRateReached\": 0,\n      \"DownlinkMCS\": 0,\n      \"DownlinkBandwidth\": 0,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 0,\n      \"UplinkBandwidth\": 0,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 0,\n      \"MaxUplinkRateReached\": 0,\n      \"MaxTxSpatialStreamsSupported\": 0,\n      \"MaxRxSpatialStreamsSupported\": 0,\n      \"Index\": \"26\",\n      \"Actions\": [\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"26\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Split Salon Parent\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Femtocell\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.8\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_8\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"\",\n        \"SupportedStandards\": \"80211k\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"B0:4A:39:93:08:CA\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Roborock\",\n      \"DeviceType\": \"Domestic Robot\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp ssw_sta flowstats events\",\n      \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n      \"LastConnection\": \"2026-03-11T02:59:59Z\",\n      \"LastChanged\": \"2026-03-11T03:00:03Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"udhcp 1.31.1\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:B0:4A:39:93:08:CA\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n      \"IPAddress\": \"192.168.1.2\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"B0:4A:39:93:08:CA\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:d697a63b-11c8-4865-b3d8-082e92d0b232\",\n      \"SignalStrength\": -62,\n      \"SignalNoiseRatio\": 28,\n      \"LastDataDownlinkRate\": 65000,\n      \"LastDataUplinkRate\": 72222,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -62,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 72222,\n      \"MaxDownlinkRateReached\": 72222,\n      \"DownlinkMCS\": 7,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 7,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": true,\n      \"MaxUplinkRateSupported\": 72222,\n      \"MaxUplinkRateReached\": 72222,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"Index\": \"27\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"27\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"roborock-vacuum-a70\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"Roborock\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Domestic Robot\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.2\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_2\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"B0:4A:39:93:08:CA\",\n        \"SupportedStandards\": \"80211k\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"44:09:B8:65:22:2B\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Chromecast\",\n      \"DeviceType\": \"Chromecast\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 flowstats dhcp mdns upnp events\",\n      \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n      \"LastConnection\": \"2026-03-11T02:18:24Z\",\n      \"LastChanged\": \"2026-03-11T02:18:25Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:44:09:B8:65:22:2B\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,33,3,6,15,28,51,58,59]\",\n      \"IPAddress\": \"192.168.1.26\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"44:09:B8:65:22:2B\",\n      \"Layer2Interface\": \"eth3\",\n      \"InterfaceName\": \"ETH0\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:1a6866c1-08cd-449c-ac4b-b957d3680a1b\",\n      \"Index\": \"28\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"28\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Chromecast\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"Chromecast-Ultra\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Chromecast\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Type\": \"Chromecast\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.26\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_26\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::4609:b8ff:fe65:222b\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::4609:b8ff:fe65:222b\"\n        },\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:3830:c78c:8541:5c9b\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:3830:c78c:8541:5c9b\"\n        }\n      ],\n      \"Locations\": [],\n      \"mDNSService\": [],\n      \"mDNSRecord\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"54:EF:44:63:24:3A\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Camera-Hub-G3-243A\",\n      \"DeviceType\": \"IP Camera\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi flowstats ipv4 ipv6 dhcp mdns ssw_sta events\",\n      \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n      \"LastConnection\": \"2026-03-08T08:22:15Z\",\n      \"LastChanged\": \"2026-03-08T08:22:19Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"udhcp 1.31.1\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:54:EF:44:63:24:3A\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n      \"IPAddress\": \"192.168.1.22\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"54:EF:44:63:24:3A\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:2c84cd52-21b2-48cd-b241-ee5b18645eb5\",\n      \"SignalStrength\": -30,\n      \"SignalNoiseRatio\": 61,\n      \"LastDataDownlinkRate\": 390000,\n      \"LastDataUplinkRate\": 433333,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"MS-WPS\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ac\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -30,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 433333,\n      \"MaxDownlinkRateReached\": 433333,\n      \"DownlinkMCS\": 8,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": true,\n      \"UplinkMCS\": 9,\n      \"UplinkBandwidth\": 80,\n      \"UplinkShortGuard\": true,\n      \"MaxUplinkRateSupported\": 433333,\n      \"MaxUplinkRateReached\": 433333,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"Index\": \"29\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"29\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Camera-Hub-G3-243A\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"Camera-Hub-G3-243A\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        },\n        {\n          \"Name\": \"Camera-Hub-G3-243A\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"IP Camera\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.22\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_22\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::56ef:44ff:fe63:243a\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::56ef:44ff:fe63:243a\"\n        }\n      ],\n      \"Locations\": [],\n      \"mDNSService\": [],\n      \"mDNSRecord\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"54:EF:44:63:24:3A\",\n        \"SupportedStandards\": \"80211k\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"F8:0F:F9:65:E6:09\",\n      \"DiscoverySource\": \"import\",\n      \"Name\": \"Chromecast Wifi\",\n      \"DeviceType\": \"Chromecast\",\n      \"Active\": false,\n      \"Tags\": \"lan edev mac physical wifi ssw_sta flowstats ipv4 ipv6 dhcp events\",\n      \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n      \"LastConnection\": \"2026-03-11T02:18:28Z\",\n      \"LastChanged\": \"2026-03-11T02:19:52Z\",\n      \"Master\": \"\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:F8:0F:F9:65:E6:09\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,33,3,6,15,28,51,58,59]\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"F8:0F:F9:65:E6:09\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:7d220a1a-5465-49df-997a-ba69adf1ba3a\",\n      \"SignalStrength\": -42,\n      \"SignalNoiseRatio\": 50,\n      \"LastDataDownlinkRate\": 360000,\n      \"LastDataUplinkRate\": 200000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"40MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SU-BFE,MU-BFE\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ac\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -42,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 866666,\n      \"MaxDownlinkRateReached\": 360000,\n      \"DownlinkMCS\": 9,\n      \"DownlinkBandwidth\": 40,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 9,\n      \"UplinkBandwidth\": 40,\n      \"UplinkShortGuard\": true,\n      \"MaxUplinkRateSupported\": 866666,\n      \"MaxUplinkRateReached\": 200000,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"31\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"31\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Chromecast-Ultra\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"1\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"Chromecast Wifi\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Chromecast\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.27\",\n          \"Status\": \"not reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_27\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"\",\n        \"SupportedStandards\": \"80211k,80211v,80211u\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4\",\n        \"VendorSpecificElementOUIList\": \"00:50:F2\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      }\n    },\n    {\n      \"Key\": \"42:51:99:A9:0D:82\",\n      \"DiscoverySource\": \"dhcp\",\n      \"Name\": \"iPad Pro Val\\u00e9rie (EXT1)\",\n      \"DeviceType\": \"Tablet iOS\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp apple flowstats events wifi ssw_sta\",\n      \"FirstSeen\": \"2026-03-05T22:04:51Z\",\n      \"LastConnection\": \"2026-03-11T05:08:43Z\",\n      \"LastChanged\": \"2026-03-11T05:08:47Z\",\n      \"Master\": \"\",\n      \"IPAddress\": \"192.168.1.24\",\n      \"IPAddressSource\": \"DHCP\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"42:51:99:A9:0D:82\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:cdbbc83f-c56f-4271-a6e0-1a23fd95613e\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:42:51:99:A9:0D:82\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n      \"SignalStrength\": -82,\n      \"SignalNoiseRatio\": 8,\n      \"LastDataDownlinkRate\": 216660,\n      \"LastDataUplinkRate\": 51610,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE\",\n      \"HeCapabilities\": \"SU&MU-BFE\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ax\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -82,\n      \"MaxBandwidthSupported\": \"160MHz\",\n      \"MaxDownlinkRateSupported\": 144444,\n      \"MaxDownlinkRateReached\": 229410,\n      \"DownlinkMCS\": 9,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 4,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 144444,\n      \"MaxUplinkRateReached\": 103230,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"Index\": \"63\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"63\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"iPad\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"iPad Pro Val\\u00e9rie (EXT1)\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"iPad-de-Valerie\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"1\",\n          \"Id\": \"mdns\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Tablet\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Type\": \"Tablet iOS\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.24\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_24\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:314d:966a:3b1f:3d01\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:314d:966a:3b1f:3d01\"\n        },\n        {\n          \"Address\": \"fe80::c7d:80a6:b5e5:a235\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::c7d:80a6:b5e5:a235\"\n        }\n      ],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      },\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"42:51:99:A9:0D:82\",\n        \"SupportedStandards\": \"80211k,80211v,80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": true,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 1,\n        \"AvgSteeringTime\": 9476,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n        \"VendorSpecificElementOUIList\": \"\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      }\n    },\n    {\n      \"Key\": \"00:24:E4:FB:09:4A\",\n      \"DiscoverySource\": \"bridge\",\n      \"Name\": \"Balance Withings\",\n      \"DeviceType\": \"Set-top Box TV UHD\",\n      \"Active\": false,\n      \"Tags\": \"lan edev mac physical wifi flowstats events ipv4 ipv6 dhcp ssw_sta\",\n      \"FirstSeen\": \"2026-03-06T03:01:12Z\",\n      \"LastConnection\": \"2026-03-11T02:14:54Z\",\n      \"LastChanged\": \"2026-03-11T02:16:16Z\",\n      \"Master\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"00:24:E4:FB:09:4A\",\n      \"Layer2Interface\": \"wl1\",\n      \"InterfaceName\": \"vap2g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:8ab72653-94a0-43cc-90be-2d821b081e36\",\n      \"SignalStrength\": -83,\n      \"SignalNoiseRatio\": 7,\n      \"LastDataDownlinkRate\": 13000,\n      \"LastDataUplinkRate\": 1000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"20MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"SGI20\",\n      \"VhtCapabilities\": \"\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"n\",\n      \"OperatingFrequencyBand\": \"2.4GHz\",\n      \"AvgSignalStrengthByChain\": -83,\n      \"MaxBandwidthSupported\": \"20MHz\",\n      \"MaxDownlinkRateSupported\": 72222,\n      \"MaxDownlinkRateReached\": 13000,\n      \"DownlinkMCS\": 1,\n      \"DownlinkBandwidth\": 20,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 0,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 72222,\n      \"MaxUplinkRateReached\": 1000,\n      \"MaxTxSpatialStreamsSupported\": 1,\n      \"MaxRxSpatialStreamsSupported\": 1,\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:00:24:E4:FB:09:4A\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,3,28,6]\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Index\": \"64\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"64\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"Balance Withings\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Set-top Box TV UHD\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.25\",\n          \"Status\": \"not reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_25\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"\",\n        \"SupportedStandards\": \"\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": false,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"Unknown\",\n        \"VendorSpecificElementOUIList\": \"00:90:4C,00:10:18,00:50:F2\",\n        \"SupportedRadioStandards\": \"b,g,n\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      }\n    },\n    {\n      \"Key\": \"AC:BC:32:A4:62:FB\",\n      \"DiscoverySource\": \"bridge\",\n      \"Name\": \"MacBook Val\\u00e9rie\",\n      \"DeviceType\": \"Laptop iOS\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi flowstats events ipv4 ipv6 dhcp ssw_sta\",\n      \"FirstSeen\": \"2026-03-07T12:43:29Z\",\n      \"LastConnection\": \"2026-03-08T16:42:07Z\",\n      \"LastChanged\": \"2026-03-08T16:42:07Z\",\n      \"Master\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"AC:BC:32:A4:62:FB\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:7c500f55-323f-48c9-8de7-bfd6d4d4d686\",\n      \"SignalStrength\": -58,\n      \"SignalNoiseRatio\": 28,\n      \"LastDataDownlinkRate\": 975000,\n      \"LastDataUplinkRate\": 780000,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40\",\n      \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE\",\n      \"HeCapabilities\": \"\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ac\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -58,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 1300000,\n      \"MaxDownlinkRateReached\": 1300000,\n      \"DownlinkMCS\": 7,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": true,\n      \"UplinkMCS\": 9,\n      \"UplinkBandwidth\": 80,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 1300000,\n      \"MaxUplinkRateReached\": 1300000,\n      \"MaxTxSpatialStreamsSupported\": 3,\n      \"MaxRxSpatialStreamsSupported\": 3,\n      \"IPAddress\": \"192.168.1.29\",\n      \"IPAddressSource\": \"DHCP\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:AC:BC:32:A4:62:FB\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,252,95,44,46]\",\n      \"Index\": \"69\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"69\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"MBP-de-Valerie\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"MacBook-Pro-de-Valerie\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        },\n        {\n          \"Name\": \"MacBook Val\\u00e9rie\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Laptop iOS\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [\n        {\n          \"UserAgent\": \"com.apple.invitation-registration [macOS,12.7.6,21H1320,MacBookPro12,1]\",\n          \"Type\": \"HTTP\",\n          \"LastSeen\": \"2026-03-10T20:21:07Z\",\n          \"Source\": \"captiveportal\",\n          \"Id\": \"1\"\n        }\n      ],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.29\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_29\"\n        }\n      ],\n      \"IPv6Address\": [],\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"\",\n        \"SupportedStandards\": \"80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n        \"VendorSpecificElementOUIList\": \"00:17:F2,00:90:4C,00:50:F2\",\n        \"SupportedRadioStandards\": \"a,n,ac\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      }\n    },\n    {\n      \"Key\": \"34:2B:6E:3A:D4:FD\",\n      \"DiscoverySource\": \"bridge\",\n      \"Name\": \"iPad Pro Val\\u00e9rie (LiveBox)\",\n      \"DeviceType\": \"Tablet iOS\",\n      \"Active\": false,\n      \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp apple ssw_sta\",\n      \"FirstSeen\": \"2026-03-07T19:07:18Z\",\n      \"LastConnection\": \"2026-03-09T09:24:23Z\",\n      \"LastChanged\": \"2026-03-09T09:32:58Z\",\n      \"Master\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"34:2B:6E:3A:D4:FD\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:02020aac-0949-476f-a138-605381013eaa\",\n      \"SignalStrength\": -82,\n      \"SignalNoiseRatio\": 2,\n      \"LastDataDownlinkRate\": 1020830,\n      \"LastDataUplinkRate\": 8120,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE\",\n      \"HeCapabilities\": \"SU&MU-BFE\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ax\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -82,\n      \"MaxBandwidthSupported\": \"160MHz\",\n      \"MaxDownlinkRateSupported\": 2401911,\n      \"MaxDownlinkRateReached\": 1200950,\n      \"DownlinkMCS\": 10,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 0,\n      \"UplinkBandwidth\": 20,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 2401911,\n      \"MaxUplinkRateReached\": 1200950,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:34:2B:6E:3A:D4:FD\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Index\": \"70\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"70\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"iPad-de-Valerie\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"iPad-de-Valerie\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        },\n        {\n          \"Name\": \"iPad Pro Val\\u00e9rie (LiveBox)\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Tablet\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Type\": \"Tablet iOS\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      },\n      \"IPv4Address\": [],\n      \"IPv6Address\": [],\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"\",\n        \"SupportedStandards\": \"80211k,80211v,80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": true,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n        \"VendorSpecificElementOUIList\": \"00:17:F2,00:90:4C,00:10:18,00:50:F2\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      }\n    },\n    {\n      \"Key\": \"A2:FB:01:E0:EB:D9\",\n      \"DiscoverySource\": \"bridge\",\n      \"Name\": \"iPhone-Kristof\",\n      \"DeviceType\": \"Mobile iOS\",\n      \"Active\": true,\n      \"Tags\": \"lan edev mac physical wifi flowstats ipv4 ipv6 events dhcp apple ssw_sta\",\n      \"FirstSeen\": \"2026-03-09T09:19:26Z\",\n      \"LastConnection\": \"2026-03-11T05:15:07Z\",\n      \"LastChanged\": \"2026-03-11T05:15:10Z\",\n      \"Master\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"A2:FB:01:E0:EB:D9\",\n      \"Layer2Interface\": \"wl0\",\n      \"InterfaceName\": \"vap5g0priv\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:3ec486c8-4b6a-4ff9-9815-05dbf3a359ba\",\n      \"SignalStrength\": -54,\n      \"SignalNoiseRatio\": 36,\n      \"LastDataDownlinkRate\": 1020830,\n      \"LastDataUplinkRate\": 1080880,\n      \"EncryptionMode\": \"AES\",\n      \"LinkBandwidth\": \"80MHz\",\n      \"SecurityModeEnabled\": \"WPA2-Personal\",\n      \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n      \"VhtCapabilities\": \"SGI80,SU-BFE\",\n      \"HeCapabilities\": \"SU&MU-BFE\",\n      \"PairwiseAKM\": \"000FAC02\",\n      \"VendorCapabilities\": \"\",\n      \"SupportedMCS\": \"\",\n      \"AuthenticationState\": true,\n      \"OperatingStandard\": \"ax\",\n      \"OperatingFrequencyBand\": \"5GHz\",\n      \"AvgSignalStrengthByChain\": -54,\n      \"MaxBandwidthSupported\": \"80MHz\",\n      \"MaxDownlinkRateSupported\": 1200955,\n      \"MaxDownlinkRateReached\": 1200950,\n      \"DownlinkMCS\": 10,\n      \"DownlinkBandwidth\": 80,\n      \"DownlinkShortGuard\": false,\n      \"UplinkMCS\": 10,\n      \"UplinkBandwidth\": 80,\n      \"UplinkShortGuard\": false,\n      \"MaxUplinkRateSupported\": 1200955,\n      \"MaxUplinkRateReached\": 1200950,\n      \"MaxTxSpatialStreamsSupported\": 2,\n      \"MaxRxSpatialStreamsSupported\": 2,\n      \"IPAddress\": \"192.168.1.30\",\n      \"IPAddressSource\": \"DHCP\",\n      \"VendorClassID\": \"\",\n      \"UserClassID\": \"\",\n      \"ClientID\": \"01:A2:FB:01:E0:EB:D9\",\n      \"SerialNumber\": \"\",\n      \"ProductClass\": \"\",\n      \"OUI\": \"\",\n      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n      \"Index\": \"75\",\n      \"Actions\": [\n        {\n          \"Function\": \"setName\",\n          \"Name\": \"Edit Name\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"setType\",\n          \"Name\": \"Edit Type\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"source\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"startEventing\",\n          \"Name\": \"startEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"types\",\n              \"Type\": \"string\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"stopEventing\",\n          \"Name\": \"stopEventing\",\n          \"Arguments\": [\n            {\n              \"Name\": \"name\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            }\n          ]\n        },\n        {\n          \"Function\": \"getEventLog\",\n          \"Name\": \"getEventLog\",\n          \"Arguments\": [\n            {\n              \"Name\": \"type\",\n              \"Type\": \"string\",\n              \"Mandatory\": true\n            },\n            {\n              \"Name\": \"since\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            },\n            {\n              \"Name\": \"until\",\n              \"Type\": \"datetime\",\n              \"Mandatory\": false\n            }\n          ]\n        },\n        {\n          \"Function\": \"listLiveEventTypes\",\n          \"Name\": \"listLiveEventTypes\"\n        },\n        {\n          \"Function\": \"listLogEventTypes\",\n          \"Name\": \"listLogEventTypes\"\n        },\n        {\n          \"Function\": \"listEventSubscribers\",\n          \"Name\": \"listEventSubscribers\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"75\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Name\": \"iPhone\",\n          \"Source\": \"dhcp\",\n          \"Suffix\": \"\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Name\": \"iPhone-Kristof\",\n          \"Source\": \"webui\",\n          \"Suffix\": \"\",\n          \"Id\": \"webui\"\n        },\n        {\n          \"Name\": \"iPhone-de-Kristof\",\n          \"Source\": \"mdns\",\n          \"Suffix\": \"\",\n          \"Id\": \"mdns\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        },\n        {\n          \"Type\": \"Mobile\",\n          \"Source\": \"dhcp\",\n          \"Id\": \"dhcp\"\n        },\n        {\n          \"Type\": \"Mobile iOS\",\n          \"Source\": \"webui\",\n          \"Id\": \"webui\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      },\n      \"WiFiStaStats\": {\n        \"EhtCapabilities\": \"\",\n        \"MLOMode\": \"NotApplicable\",\n        \"OperatingFrequencyBandList\": \"\",\n        \"AffiliatedSta\": []\n      },\n      \"IPv4Address\": [\n        {\n          \"Address\": \"192.168.1.30\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"DHCP\",\n          \"Reserved\": false,\n          \"Id\": \"192_168_1_30\"\n        }\n      ],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:c06f:d654:8bf3:be73\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:c06f:d654:8bf3:be73\"\n        },\n        {\n          \"Address\": \"2a01:cb05:8e11:a800:431:7074:5164:7b2b\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"global\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"2a01:cb05:8e11:a800:431:7074:5164:7b2b\"\n        }\n      ],\n      \"SSWSta\": {\n        \"AssociationMACAddress\": \"A2:FB:01:E0:EB:D9\",\n        \"SupportedStandards\": \"80211k,80211v,80211w\",\n        \"Supports24GHz\": true,\n        \"Supports5GHz\": true,\n        \"Supports6GHz\": false,\n        \"ReconnectClass\": \"\",\n        \"FailedSteerCount\": 0,\n        \"SuccessSteerCount\": 0,\n        \"AvgSteeringTime\": 0,\n        \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n        \"VendorSpecificElementOUIList\": \"\",\n        \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n        \"SupportedMLOModes\": \"\",\n        \"MaxNumberOfAffiliatedSta\": 0\n      }\n    },\n    {\n      \"Key\": \"96:24:68:62:DC:6B\",\n      \"DiscoverySource\": \"dhcp\",\n      \"Name\": \"Device-77\",\n      \"DeviceType\": \"Computer\",\n      \"Active\": false,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6\",\n      \"FirstSeen\": \"2026-03-10T09:06:01Z\",\n      \"LastConnection\": \"2026-03-10T09:06:01Z\",\n      \"LastChanged\": \"2026-03-10T09:06:02Z\",\n      \"Master\": \"\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:104eea6a-a634-4386-8bfa-493f5e04119c\",\n      \"Index\": \"77\",\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"77\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    },\n    {\n      \"Key\": \"A0:4E:CF:18:A5:BA\",\n      \"DiscoverySource\": \"dhcp\",\n      \"Name\": \"Device-78\",\n      \"DeviceType\": \"Computer\",\n      \"Active\": false,\n      \"Tags\": \"lan edev mac physical eth ipv4 ipv6\",\n      \"FirstSeen\": \"2026-03-10T09:19:01Z\",\n      \"LastConnection\": \"2026-03-10T09:19:01Z\",\n      \"LastChanged\": \"2026-03-10T09:19:02Z\",\n      \"Master\": \"\",\n      \"IPAddress\": \"\",\n      \"IPAddressSource\": \"\",\n      \"Location\": \"\",\n      \"PhysAddress\": \"\",\n      \"Layer2Interface\": \"\",\n      \"InterfaceName\": \"\",\n      \"MACVendor\": \"\",\n      \"Owner\": \"\",\n      \"UniqueID\": \"urn:uuid:96a35dd1-9e04-455f-b47c-963714cf476d\",\n      \"Index\": \"78\",\n      \"Names\": [\n        {\n          \"Name\": \"Device\",\n          \"Source\": \"default\",\n          \"Suffix\": \"78\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"Computer\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"BDD\": {\n        \"CloudVersion\": \"\",\n        \"BDDRequestsSent\": 0,\n        \"BDDRequestsAnswered\": 0,\n        \"BDDRequestsFailed\": 0,\n        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n        \"DeviceName\": \"\",\n        \"DeviceType\": \"\",\n        \"ModelName\": \"\",\n        \"OperatingSystem\": \"\",\n        \"SoftwareVersion\": \"\",\n        \"Manufacturer\": \"\",\n        \"MACVendor\": \"\",\n        \"DeviceCategory\": \"\",\n        \"PerformManualLookup\": false\n      },\n      \"IPv4Address\": [],\n      \"IPv6Address\": [],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"Priority\": {\n        \"Configuration\": \"Automatic\",\n        \"Type\": \"BestEffort\"\n      },\n      \"UserAgents\": [],\n      \"WANAccess\": {\n        \"BlockedReasons\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "src/LiveboxMonitor/test/lbs/HomeLan_Interface_get.json",
    "content": "{\n   \"status\":{\n      \"vap2g0priv\":{\n         \"FriendlyName\":\"2.4GHz-Private_SSID\",\n         \"Name\":\"vap2g0priv\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":479\n      },\n      \"vap5g0priv\":{\n         \"FriendlyName\":\"5GHz-Private_SSID\",\n         \"Name\":\"vap5g0priv\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":480\n      },\n      \"ETH0\":{\n         \"FriendlyName\":\"eth1\",\n         \"Name\":\"ETH0\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":477\n      },\n      \"ETH1\":{\n         \"FriendlyName\":\"eth2\",\n         \"Name\":\"ETH1\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":480\n      },\n      \"ETH2\":{\n         \"FriendlyName\":\"eth3\",\n         \"Name\":\"ETH2\",\n         \"Alias\":\"Eth\",\n         \"NumberOfStoredMeasures\":480\n      },\n      \"eth0_wan\":{\n         \"FriendlyName\":\"WAN_Ethernet\",\n         \"Name\":\"ETH3\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":364\n      },\n      \"vlan_data\":{\n         \"FriendlyName\":\"WAN_Ethernet-Internet\",\n         \"Name\":\"vlan_data\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_multi\":{\n         \"FriendlyName\":\"WAN_Ethernet-MultiServices\",\n         \"Name\":\"vlan_multi\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_voip\":{\n         \"FriendlyName\":\"WAN_Ethernet-VoIP\",\n         \"Name\":\"vlan_voip\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_iptv1\":{\n         \"FriendlyName\":\"WAN_Ethernet-IPTV_VOD\",\n         \"Name\":\"vlan_iptv1\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vlan_iptv2\":{\n         \"FriendlyName\":\"WAN_Ethernet-IPTV_Live\",\n         \"Name\":\"vlan_iptv2\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"veip0\":{\n         \"FriendlyName\":\"WAN_GPON\",\n         \"Name\":\"veip0\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":480\n      },\n      \"gvlan_data\":{\n         \"FriendlyName\":\"WAN_GPON-Internet\",\n         \"Name\":\"gvlan_data\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"gvlan_multi\":{\n         \"FriendlyName\":\"WAN_GPON-MultiServices\",\n         \"Name\":\"gvlan_multi\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":478\n      },\n      \"gvlan_voip\":{\n         \"FriendlyName\":\"WAN_GPON-VoIP\",\n         \"Name\":\"gvlan_voip\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"gvlan_iptv1\":{\n         \"FriendlyName\":\"WAN_GPON-IPTV_VOD\",\n         \"Name\":\"gvlan_iptv1\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"gvlan_iptv2\":{\n         \"FriendlyName\":\"WAN_GPON-IPTV_Live\",\n         \"Name\":\"gvlan_iptv2\",\n         \"Alias\":\"WAN_Virtual\",\n         \"NumberOfStoredMeasures\":477\n      },\n      \"vap2g0guest\":{\n         \"FriendlyName\":\"2.4GHz-Guest_SSID\",\n         \"Name\":\"vap2g0guest\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      },\n      \"vap5g0guest\":{\n         \"FriendlyName\":\"5GHz-Guest_SSID\",\n         \"Name\":\"vap5g0guest\",\n         \"Alias\":\"WiFi\",\n         \"NumberOfStoredMeasures\":0\n      }\n   }\n}"
  },
  {
    "path": "src/LiveboxMonitor/test/lbs/TopologyDiagnostics_buildTopology.json",
    "content": "{\n  \"status\": [\n    {\n      \"LastUpdate\": \"2026-03-10T15:48:47Z\",\n      \"DiagnosticMode\": \"LocalRequestFromGUI\",\n      \"APIVersion\": \"1.0.2\",\n      \"Key\": \"HGW\",\n      \"DiscoverySource\": \"selfhgw\",\n      \"Name\": \"LIVEBOX\",\n      \"DeviceType\": \"SAH HGW\",\n      \"Active\": true,\n      \"Tags\": \"self physical hgw wan events sswLocal gpon ipv4 ipv6\",\n      \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n      \"LastConnection\": \"2026-03-05T15:58:13Z\",\n      \"LastChanged\": \"2026-03-06T15:06:29Z\",\n      \"Master\": \"08:27:A8:CD:C9:76\",\n      \"Location\": \"\",\n      \"Owner\": \"\",\n      \"Manufacturer\": \"Arcadyan\",\n      \"ModelName\": \"PRV33AX346B-H2-OG\",\n      \"Description\": \"PRV33AX346B-H2-OG Arcadyan fr\",\n      \"SerialNumber\": \"JA25170AV053744\",\n      \"ProductClass\": \"Livebox Nautilus\",\n      \"HardwareVersion\": \"AR_LBN_1.0.0\",\n      \"SoftwareVersion\": \"ARNA-fr-G01.R06.C01_04\",\n      \"BootLoaderVersion\": \"gen_2024.04_v1.0.16\",\n      \"FirewallLevel\": \"Medium\",\n      \"LinkType\": \"gpon\",\n      \"LinkState\": \"up\",\n      \"ConnectionProtocol\": \"dhcp\",\n      \"ConnectionState\": \"Bound\",\n      \"LastConnectionError\": \"None\",\n      \"ConnectionIPv4Address\": \"90.59.15.243\",\n      \"ConnectionIPv6Address\": \"2a01:cb05:8e11:a800:a27:a8ff:fecd:c976\",\n      \"RemoteGateway\": \"90.59.12.1\",\n      \"DNSServers\": \"80.10.246.1,81.253.149.9,2a01:cfc4:2000:f::1,2a01:cfc4:2180:4001::2\",\n      \"Internet\": true,\n      \"IPTV\": true,\n      \"Telephony\": true,\n      \"DownstreamCurrRate\": 2488,\n      \"UpstreamCurrRate\": 1244,\n      \"DownstreamMaxBitRate\": 2488,\n      \"UpstreamMaxBitRate\": 1244,\n      \"IPAddress\": \"fe80::a27:a8ff:fecd:c976\",\n      \"IPAddressSource\": \"Static\",\n      \"Index\": \"32\",\n      \"Alternative\": [\n        \"HGW\"\n      ],\n      \"Locations\": [],\n      \"Groups\": [],\n      \"SSW\": {\n        \"Capabilities\": \"Master\",\n        \"CurrentMode\": \"Master\"\n      },\n      \"IPv4Address\": [],\n      \"IPv6Address\": [\n        {\n          \"Address\": \"fe80::a27:a8ff:fecd:c976\",\n          \"Status\": \"reachable\",\n          \"Scope\": \"link\",\n          \"AddressSource\": \"Static\",\n          \"Id\": \"fe80::a27:a8ff:fecd:c976\"\n        }\n      ],\n      \"Names\": [\n        {\n          \"Name\": \"LIVEBOX\",\n          \"Source\": \"default\",\n          \"Suffix\": \"\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"DeviceTypes\": [\n        {\n          \"Type\": \"SAH HGW\",\n          \"Source\": \"default\",\n          \"Id\": \"default\"\n        }\n      ],\n      \"Children\": [\n        {\n          \"Key\": \"lan\",\n          \"DiscoverySource\": \"selflan\",\n          \"Name\": \"lan\",\n          \"DeviceType\": \"\",\n          \"Active\": true,\n          \"Tags\": \"self lan mac nemo interface ipv4 ipv6 mdns bridge dhcpserver upnp\",\n          \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n          \"LastConnection\": \"2026-03-05T15:58:11Z\",\n          \"LastChanged\": \"2026-03-05T15:58:36Z\",\n          \"Master\": \"\",\n          \"PortState\": \"\",\n          \"PhysAddress\": \"08:27:A8:CD:C9:76\",\n          \"Layer2Interface\": \"\",\n          \"InterfaceName\": \"\",\n          \"MACVendor\": \"\",\n          \"NetDevName\": \"bridge\",\n          \"NetDevIndex\": 19,\n          \"NetDevState\": \"up\",\n          \"IPAddress\": \"192.168.1.1\",\n          \"IPAddressSource\": \"self\",\n          \"DHCPv4ServerPool\": \"default\",\n          \"DHCPv4ServerEnable\": true,\n          \"DHCPv4ServerMinAddress\": \"192.168.1.2\",\n          \"DHCPv4ServerMaxAddress\": \"192.168.1.100\",\n          \"DHCPv4ServerNetmask\": \"255.255.255.0\",\n          \"DHCPv4DomainName\": \"home\",\n          \"Index\": \"34\",\n          \"Names\": [\n            {\n              \"Name\": \"lan\",\n              \"Source\": \"default\",\n              \"Suffix\": \"\",\n              \"Id\": \"default\"\n            }\n          ],\n          \"DeviceTypes\": [],\n          \"IPv4Address\": [\n            {\n              \"Address\": \"192.168.1.1\",\n              \"Status\": \"reachable\",\n              \"Scope\": \"global\",\n              \"AddressSource\": \"self\",\n              \"Reserved\": true,\n              \"Id\": \"192_168_1_1\"\n            }\n          ],\n          \"IPv6Address\": [\n            {\n              \"Address\": \"2a01:cb05:8e11:a800:a27:a8ff:fecd:c976\",\n              \"Status\": \"reachable\",\n              \"Scope\": \"global\",\n              \"AddressSource\": \"self\",\n              \"Id\": \"2a01:cb05:8e11:a800:a27:a8ff:fecd:c976\"\n            }\n          ],\n          \"mDNSService\": [],\n          \"mDNSRecord\": [\n            {\n              \"Type\": \"PTR\",\n              \"Entry\": \"_ssw._tcp.local.\",\n              \"Value\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local. \",\n              \"Id\": \"PTR-_ssw__tcp_local_\"\n            },\n            {\n              \"Type\": \"TXT\",\n              \"Entry\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local.\",\n              \"Value\": \"mode=master \",\n              \"Id\": \"TXT-mss_ssw_08:27:a8:cd:c9:76_on_LIVEBOX__ssw__tcp_local_-mode\"\n            },\n            {\n              \"Type\": \"TXT\",\n              \"Entry\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local.\",\n              \"Value\": \"capabilities=master \",\n              \"Id\": \"TXT-mss_ssw_08:27:a8:cd:c9:76_on_LIVEBOX__ssw__tcp_local_-capabilities\"\n            },\n            {\n              \"Type\": \"TXT\",\n              \"Entry\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local.\",\n              \"Value\": \"pairing=auto \",\n              \"Id\": \"TXT-mss_ssw_08:27:a8:cd:c9:76_on_LIVEBOX__ssw__tcp_local_-pairing\"\n            },\n            {\n              \"Type\": \"TXT\",\n              \"Entry\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local.\",\n              \"Value\": \"networkid=08:27:a8:cd:c9:76 \",\n              \"Id\": \"TXT-mss_ssw_08:27:a8:cd:c9:76_on_LIVEBOX__ssw__tcp_local_-networkid\"\n            },\n            {\n              \"Type\": \"SRV\",\n              \"Entry\": \"mss_ssw_08:27:a8:cd:c9:76 on LIVEBOX._ssw._tcp.local.\",\n              \"Value\": \"LIVEBOX.local. \",\n              \"Id\": \"SRV-mss_ssw_08:27:a8:cd:c9:76_on_LIVEBOX__ssw__tcp_local_\"\n            },\n            {\n              \"Type\": \"PTR\",\n              \"Entry\": \"_mqtt._tcp.local.\",\n              \"Value\": \"mss_mqtt_08:27:a8:cd:c9:76 on LIVEBOX._mqtt._tcp.local. \",\n              \"Id\": \"PTR-_mqtt__tcp_local_\"\n            },\n            {\n              \"Type\": \"TXT\",\n              \"Entry\": \"mss_mqtt_08:27:a8:cd:c9:76 on LIVEBOX._mqtt._tcp.local.\",\n              \"Value\": \"topics=sah/from/$CN/pair-device \",\n              \"Id\": \"TXT-mss_mqtt_08:27:a8:cd:c9:76_on_LIVEBOX__mqtt__tcp_local_-topics\"\n            },\n            {\n              \"Type\": \"SRV\",\n              \"Entry\": \"mss_mqtt_08:27:a8:cd:c9:76 on LIVEBOX._mqtt._tcp.local.\",\n              \"Value\": \"LIVEBOX.local. \",\n              \"Id\": \"SRV-mss_mqtt_08:27:a8:cd:c9:76_on_LIVEBOX__mqtt__tcp_local_\"\n            },\n            {\n              \"Type\": \"PTR\",\n              \"Entry\": \"_http._tcp.local.\",\n              \"Value\": \"LIVEBOX._http._tcp.local. \",\n              \"Id\": \"PTR-_http__tcp_local_\"\n            },\n            {\n              \"Type\": \"SRV\",\n              \"Entry\": \"LIVEBOX._http._tcp.local.\",\n              \"Value\": \"LIVEBOX.local. \",\n              \"Id\": \"SRV-LIVEBOX__http__tcp_local_\"\n            }\n          ],\n          \"Children\": [\n            {\n              \"Key\": \"vap2g0priv\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"vap2g0priv\",\n              \"DeviceType\": \"\",\n              \"Active\": true,\n              \"Tags\": \"self lan vap wifi nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n              \"LastConnection\": \"2026-03-05T15:58:46Z\",\n              \"LastChanged\": \"2026-03-10T11:51:44Z\",\n              \"Master\": \"\",\n              \"PortState\": \"forwarding\",\n              \"NetDevName\": \"wl1\",\n              \"NetDevIndex\": 22,\n              \"NetDevState\": \"up\",\n              \"SSID\": \"Livebox-26D0\",\n              \"BSSID\": \"08:27:a8:cd:c9:7e\",\n              \"OperatingFrequencyBand\": \"2.4GHz\",\n              \"OperatingStandards\": \"be\",\n              \"Channel\": 1,\n              \"CurrentOperatingChannelBandwidth\": \"\",\n              \"OperatingClass\": 4,\n              \"Enabled\": true,\n              \"EssIdentifier\": \"Primary\",\n              \"Index\": \"35\",\n              \"Names\": [\n                {\n                  \"Name\": \"vap2g0priv\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"WPS\": {\n                \"Enable\": true,\n                \"PairingInProgress\": false\n              },\n              \"Children\": [\n                {\n                  \"Key\": \"00:BB:C1:90:A5:77\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"Imprimante Canon\",\n                  \"DeviceType\": \"Printer\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical wifi ssw_sta ipv4 ipv6 dhcp flowstats mdns events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                  \"LastConnection\": \"2026-03-06T14:50:21Z\",\n                  \"LastChanged\": \"2026-03-06T14:50:22Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:00:BB:C1:90:A5:77\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,6]\",\n                  \"IPAddress\": \"192.168.1.31\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"00:BB:C1:90:A5:77\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:a151e03f-ae7a-4651-bd4b-2ac92e98f454\",\n                  \"SignalStrength\": -71,\n                  \"SignalNoiseRatio\": 20,\n                  \"LastDataDownlinkRate\": 72222,\n                  \"LastDataUplinkRate\": 52000,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -71,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 72222,\n                  \"MaxDownlinkRateReached\": 72222,\n                  \"DownlinkMCS\": 7,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": true,\n                  \"UplinkMCS\": 5,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 72222,\n                  \"MaxUplinkRateReached\": 72222,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"Index\": \"24\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"24\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Imprimante Canon\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"CANONMG4250\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"mdns\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Printer\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.31\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_31\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"fe80::2bb:c1ff:fe90:a577\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::2bb:c1ff:fe90:a577\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"mDNSService\": [],\n                  \"mDNSRecord\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"00:BB:C1:90:A5:77\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"48:E1:E9:DB:4E:2A\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"MerossSmartSwitch\",\n                  \"DeviceType\": \"Power Meter\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp ssw_sta flowstats mdns events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n                  \"LastConnection\": \"2026-03-05T15:58:46Z\",\n                  \"LastChanged\": \"2026-03-05T15:58:58Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:48:E1:E9:DB:4E:2A\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,28,6]\",\n                  \"IPAddress\": \"192.168.1.32\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"48:E1:E9:DB:4E:2A\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:fe2903b7-817f-49b5-bf8e-aef4b7856e8c\",\n                  \"SignalStrength\": -62,\n                  \"SignalNoiseRatio\": 26,\n                  \"LastDataDownlinkRate\": 65000,\n                  \"LastDataUplinkRate\": 72222,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -62,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 72222,\n                  \"MaxDownlinkRateReached\": 72222,\n                  \"DownlinkMCS\": 7,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 7,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 72222,\n                  \"MaxUplinkRateReached\": 72222,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"Index\": \"25\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"25\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"MerossSmartSwitch\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"MerossSmartSwitch\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"mt7687\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"mdns\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Power Meter\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.32\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_32\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"fe80::4ae1:e9ff:fedb:4e2a\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::4ae1:e9ff:fedb:4e2a\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"mDNSService\": [],\n                  \"mDNSRecord\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"48:E1:E9:DB:4E:2A\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:0C:43\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"B0:4A:39:93:08:CA\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"Roborock\",\n                  \"DeviceType\": \"Domestic Robot\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp ssw_sta flowstats events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n                  \"LastConnection\": \"2026-03-10T02:59:54Z\",\n                  \"LastChanged\": \"2026-03-10T02:59:58Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"udhcp 1.31.1\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:B0:4A:39:93:08:CA\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n                  \"IPAddress\": \"192.168.1.2\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"B0:4A:39:93:08:CA\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:d697a63b-11c8-4865-b3d8-082e92d0b232\",\n                  \"SignalStrength\": -61,\n                  \"SignalNoiseRatio\": 30,\n                  \"LastDataDownlinkRate\": 65000,\n                  \"LastDataUplinkRate\": 72222,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -61,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 72222,\n                  \"MaxDownlinkRateReached\": 72222,\n                  \"DownlinkMCS\": 7,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 7,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 72222,\n                  \"MaxUplinkRateReached\": 72222,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"Index\": \"27\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"27\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"roborock-vacuum-a70\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"Roborock\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Domestic Robot\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.2\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_2\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"B0:4A:39:93:08:CA\",\n                    \"SupportedStandards\": \"80211k\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"44:1D:64:A2:AA:70\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"GA Chauffe eau\",\n                  \"DeviceType\": \"Google OnHub\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp flowstats wifi ssw_sta events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                  \"LastConnection\": \"2026-03-10T04:00:59Z\",\n                  \"LastChanged\": \"2026-03-10T04:01:01Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:44:1D:64:A2:AA:70\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,28,6]\",\n                  \"IPAddress\": \"192.168.1.3\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"44:1D:64:A2:AA:70\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:c621964e-6c3f-416c-8ce7-f7905142b327\",\n                  \"SignalStrength\": -40,\n                  \"SignalNoiseRatio\": 48,\n                  \"LastDataDownlinkRate\": 6500,\n                  \"LastDataUplinkRate\": 5500,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -40,\n                  \"MaxBandwidthSupported\": \"40MHz\",\n                  \"MaxDownlinkRateSupported\": 150000,\n                  \"MaxDownlinkRateReached\": 72222,\n                  \"DownlinkMCS\": 0,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 2,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 150000,\n                  \"MaxUplinkRateReached\": 72222,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"Index\": \"9\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"9\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"GA-178545227598\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"GA Chauffe eau\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Google OnHub\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.3\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_3\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"44:1D:64:A2:AA:70\",\n                    \"SupportedStandards\": \"80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"3E:6A:D2:0D:C9:D2\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TPLink Etage 2.4 GHz\",\n                  \"DeviceType\": \"WiFi_Access_Point\",\n                  \"Active\": true,\n                  \"Tags\": \"lan mac physical wifi ipv4 ipv6 ssw_sta hnid wifi_bridge flowstats dhcp microsoft events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                  \"LastConnection\": \"2026-03-10T13:11:03Z\",\n                  \"LastChanged\": \"2026-03-10T13:11:07Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"\",\n                  \"IPAddress\": \"192.168.1.41\",\n                  \"IPAddressSource\": \"Static\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"3E:6A:D2:0D:C9:D2\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:4d8b81f3-b8a5-4717-ac8a-abac47338687\",\n                  \"SignalStrength\": -67,\n                  \"SignalNoiseRatio\": 24,\n                  \"LastDataDownlinkRate\": 1000,\n                  \"LastDataUplinkRate\": 144444,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -67,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 144444,\n                  \"MaxDownlinkRateReached\": 130000,\n                  \"DownlinkMCS\": 0,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 15,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 144444,\n                  \"MaxUplinkRateReached\": 144444,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"14\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"wifi bridge\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"2\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"TPLink Etage 2.4 GHz\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"RE330\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"3\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"WiFi_Access_Point\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"WiFi Bridge\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.41\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_41\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"3E:6A:D2:0D:C9:D2\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"42:AE:30:04:7C:76\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TPLink Rdc 2.4 GHz\",\n                  \"DeviceType\": \"WiFi_Access_Point\",\n                  \"Active\": true,\n                  \"Tags\": \"lan mac physical wifi hnid wifi_bridge ssw_sta ipv4 ipv6 flowstats dhcp events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:09Z\",\n                  \"LastConnection\": \"2026-03-08T09:15:05Z\",\n                  \"LastChanged\": \"2026-03-09T09:13:35Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"\",\n                  \"IPAddress\": \"192.168.1.21\",\n                  \"IPAddressSource\": \"Static\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"42:AE:30:04:7C:76\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:260b37f9-f661-4cd6-a1d8-357d0832200f\",\n                  \"SignalStrength\": -58,\n                  \"SignalNoiseRatio\": 33,\n                  \"LastDataDownlinkRate\": 130000,\n                  \"LastDataUplinkRate\": 144444,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -58,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 144444,\n                  \"MaxDownlinkRateReached\": 130000,\n                  \"DownlinkMCS\": 15,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 15,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 144444,\n                  \"MaxUplinkRateReached\": 144444,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"4\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"wifi bridge\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"TPLink Rdc 2.4 GHz\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"WiFi_Access_Point\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"WiFi Bridge\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.21\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_21\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"42:AE:30:04:7C:76\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"00:24:E4:FB:09:4A\",\n                  \"DiscoverySource\": \"bridge\",\n                  \"Name\": \"Balance Withings\",\n                  \"DeviceType\": \"Set-top Box TV UHD\",\n                  \"Active\": false,\n                  \"Tags\": \"lan edev mac physical wifi flowstats events ipv4 ipv6 dhcp ssw_sta\",\n                  \"FirstSeen\": \"2026-03-06T03:01:12Z\",\n                  \"LastConnection\": \"2026-03-10T11:33:01Z\",\n                  \"LastChanged\": \"2026-03-10T11:33:05Z\",\n                  \"Master\": \"\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"00:24:E4:FB:09:4A\",\n                  \"Layer2Interface\": \"wl1\",\n                  \"InterfaceName\": \"vap2g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:8ab72653-94a0-43cc-90be-2d821b081e36\",\n                  \"SignalStrength\": -83,\n                  \"SignalNoiseRatio\": 7,\n                  \"LastDataDownlinkRate\": 13000,\n                  \"LastDataUplinkRate\": 1000,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"20MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"SGI20\",\n                  \"VhtCapabilities\": \"\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"n\",\n                  \"OperatingFrequencyBand\": \"2.4GHz\",\n                  \"AvgSignalStrengthByChain\": -83,\n                  \"MaxBandwidthSupported\": \"20MHz\",\n                  \"MaxDownlinkRateSupported\": 72222,\n                  \"MaxDownlinkRateReached\": 13000,\n                  \"DownlinkMCS\": 1,\n                  \"DownlinkBandwidth\": 20,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 0,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 72222,\n                  \"MaxUplinkRateReached\": 1000,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:00:24:E4:FB:09:4A\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,28,6]\",\n                  \"IPAddress\": \"\",\n                  \"IPAddressSource\": \"\",\n                  \"Index\": \"64\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"64\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Balance Withings\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Set-top Box TV UHD\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"IPv4Address\": [],\n                  \"IPv6Address\": [],\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": false,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"Unknown\",\n                    \"VendorSpecificElementOUIList\": \"00:90:4C,00:10:18,00:50:F2\",\n                    \"SupportedRadioStandards\": \"b,g,n\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                }\n              ]\n            },\n            {\n              \"Key\": \"vap5g0priv\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"vap5g0priv\",\n              \"DeviceType\": \"\",\n              \"Active\": true,\n              \"Tags\": \"self lan vap wifi nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n              \"LastConnection\": \"2026-03-05T15:58:46Z\",\n              \"LastChanged\": \"2026-03-10T11:53:16Z\",\n              \"Master\": \"\",\n              \"PortState\": \"forwarding\",\n              \"NetDevName\": \"wl0\",\n              \"NetDevIndex\": 18,\n              \"NetDevState\": \"up\",\n              \"SSID\": \"Livebox-26D0\",\n              \"BSSID\": \"08:27:a8:cd:c9:76\",\n              \"OperatingFrequencyBand\": \"5GHz\",\n              \"OperatingStandards\": \"be\",\n              \"Channel\": 36,\n              \"CurrentOperatingChannelBandwidth\": \"\",\n              \"OperatingClass\": 128,\n              \"Enabled\": true,\n              \"EssIdentifier\": \"Primary\",\n              \"Index\": \"38\",\n              \"Names\": [\n                {\n                  \"Name\": \"vap5g0priv\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"WPS\": {\n                \"Enable\": true,\n                \"PairingInProgress\": false\n              },\n              \"Children\": [\n                {\n                  \"Key\": \"46:AE:30:94:7C:77\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TPLink Rdc 5 GHz\",\n                  \"DeviceType\": \"WiFi_Access_Point\",\n                  \"Active\": true,\n                  \"Tags\": \"lan mac physical wifi flowstats hnid wifi_bridge ssw_sta ipv4 ipv6 samsung tv dhcp events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n                  \"LastConnection\": \"2026-03-09T17:08:24Z\",\n                  \"LastChanged\": \"2026-03-10T12:26:02Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"\",\n                  \"IPAddress\": \"192.168.1.80\",\n                  \"IPAddressSource\": \"Static\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"46:AE:30:94:7C:77\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:f9b4f2a5-c838-4f01-8186-2b60b1ff054c\",\n                  \"SignalStrength\": -62,\n                  \"SignalNoiseRatio\": 28,\n                  \"LastDataDownlinkRate\": 866667,\n                  \"LastDataUplinkRate\": 866667,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE,MU-BFR,MU-BFE\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ac\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -62,\n                  \"MaxBandwidthSupported\": \"80MHz\",\n                  \"MaxDownlinkRateSupported\": 866666,\n                  \"MaxDownlinkRateReached\": 866667,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": true,\n                  \"UplinkMCS\": 9,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 866666,\n                  \"MaxUplinkRateReached\": 866667,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"6\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"wifi bridge\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"1\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"TPLink Rdc 5 GHz\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"Samsung Q50AE 32 TV\",\n                      \"Source\": \"upnp\",\n                      \"Suffix\": \"1\",\n                      \"Id\": \"upnp\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"WiFi_Access_Point\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"WiFi Bridge\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.80\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_80\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:3d3d:6514:bd2:78df\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:3d3d:6514:bd2:78df\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"46:AE:30:94:7C:77\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": false,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"U-NII-1,U-NII-2C\",\n                    \"VendorSpecificElementOUIList\": \"00:0C:43,00:0C:E7,00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,n,ac\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [\n                    {\n                      \"UserAgent\": \"com.google.GoogleMobile/410.0 iPhone/26.3.1 hw/iPhone18_1\",\n                      \"Type\": \"HTTP\",\n                      \"LastSeen\": \"2026-03-07T16:35:35Z\",\n                      \"Source\": \"captiveportal\",\n                      \"Id\": \"1\"\n                    }\n                  ],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"Children\": [\n                    {\n                      \"Key\": \"40:AE:30:94:7C:76\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"TPLink RDC RE330\",\n                      \"DeviceType\": \"WiFi_Access_Point\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats microsoft events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:30Z\",\n                      \"LastChanged\": \"2026-03-06T06:09:32Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"MSFT 5.0\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:40:AE:30:94:7C:76\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,6,15,43,44,46,47,33,121,249]\",\n                      \"IPAddress\": \"192.168.1.21\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"40:AE:30:94:7C:76\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:7a130247-065e-48e7-83d5-584b47726396\",\n                      \"Index\": \"5\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"5\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"RE330\",\n                          \"Source\": \"dhcp\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"dhcp\"\n                        },\n                        {\n                          \"Name\": \"TPLink RDC RE330\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"WiFi_Access_Point\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.21\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": true,\n                          \"Id\": \"192_168_1_21\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"B0:E4:5C:7D:2A:F8\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"TV Chambre\",\n                      \"DeviceType\": \"TV\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats upnp mdns samsung tv events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:36Z\",\n                      \"LastChanged\": \"2026-03-05T21:39:43Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:B0:E4:5C:7D:2A:F8\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,26,252,43,42,6,12]\",\n                      \"IPAddress\": \"192.168.1.4\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"B0:E4:5C:7D:2A:F8\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:21a2c068-50ee-4a74-8203-a61d074aea99\",\n                      \"Index\": \"10\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"10\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Samsung\",\n                          \"Source\": \"dhcp\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"dhcp\"\n                        },\n                        {\n                          \"Name\": \"Samsung\",\n                          \"Source\": \"mdns\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"mdns\"\n                        },\n                        {\n                          \"Name\": \"Samsung Q50AE 32 TV\",\n                          \"Source\": \"upnp\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnp\"\n                        },\n                        {\n                          \"Name\": \"TV Chambre\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"TV\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        },\n                        {\n                          \"Type\": \"MediaRenderer\",\n                          \"Source\": \"upnp-uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\",\n                          \"Id\": \"upnp-uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\"\n                        },\n                        {\n                          \"Type\": \"TV\",\n                          \"Source\": \"dhcp\",\n                          \"Id\": \"dhcp\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.4\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_4\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"mDNSService\": [],\n                      \"mDNSRecord\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      },\n                      \"Children\": [\n                        {\n                          \"Key\": \"uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\",\n                          \"DiscoverySource\": \"upnpDev\",\n                          \"Name\": \"TQ32Q50AEUXXC\",\n                          \"DeviceType\": \"\",\n                          \"Active\": true,\n                          \"Tags\": \"upnp root logical\",\n                          \"FirstSeen\": \"2026-03-05T21:39:39Z\",\n                          \"LastConnection\": \"2026-03-05T21:39:39Z\",\n                          \"LastChanged\": \"2026-03-05T21:39:40Z\",\n                          \"Master\": \"\",\n                          \"Type\": \"urn:schemas-upnp-org:device:MediaRenderer:1\",\n                          \"Manufacturer\": \"Samsung Electronics\",\n                          \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                          \"ModelDescription\": \"Samsung TV DMR\",\n                          \"ModelName\": \"TQ32Q50AEUXXC\",\n                          \"ModelNumber\": \"AllShare1.0\",\n                          \"ModelURL\": \"http://www.samsung.com/sec\",\n                          \"SerialNumber\": \"0LNF3HHX201598K\",\n                          \"UDN\": \"uuid:eb81f124-9f36-44d7-bbdc-c3f19584ebd8\",\n                          \"UPC\": \"\",\n                          \"PresentationURL\": \"\",\n                          \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                          \"Index\": \"60\",\n                          \"Names\": [\n                            {\n                              \"Name\": \"TQ32Q50AEUXXC\",\n                              \"Source\": \"default\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"default\"\n                            },\n                            {\n                              \"Name\": \"Samsung Q50AE 32 TV\",\n                              \"Source\": \"upnpfriendlyname\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"upnpfriendlyname\"\n                            }\n                          ],\n                          \"DeviceTypes\": [],\n                          \"Service\": [\n                            {\n                              \"ServiceType\": \"urn:schemas-upnp-org:service:RenderingControl:1\",\n                              \"ServiceId\": \"urn:upnp-org:serviceId:RenderingControl\",\n                              \"SCPDURL\": \"/RenderingControl_1.xml\",\n                              \"ControlURL\": \"/upnp/control/RenderingControl1\",\n                              \"EventSubURL\": \"/upnp/event/RenderingControl1\",\n                              \"Id\": \"1\"\n                            },\n                            {\n                              \"ServiceType\": \"urn:schemas-upnp-org:service:ConnectionManager:1\",\n                              \"ServiceId\": \"urn:upnp-org:serviceId:ConnectionManager\",\n                              \"SCPDURL\": \"/ConnectionManager_1.xml\",\n                              \"ControlURL\": \"/upnp/control/ConnectionManager1\",\n                              \"EventSubURL\": \"/upnp/event/ConnectionManager1\",\n                              \"Id\": \"2\"\n                            },\n                            {\n                              \"ServiceType\": \"urn:schemas-upnp-org:service:AVTransport:1\",\n                              \"ServiceId\": \"urn:upnp-org:serviceId:AVTransport\",\n                              \"SCPDURL\": \"/AVTransport_1.xml\",\n                              \"ControlURL\": \"/upnp/control/AVTransport1\",\n                              \"EventSubURL\": \"/upnp/event/AVTransport1\",\n                              \"Id\": \"3\"\n                            }\n                          ]\n                        },\n                        {\n                          \"Key\": \"uuid:0aa11025-9352-417f-92b3-074119a50db2\",\n                          \"DiscoverySource\": \"upnpDev\",\n                          \"Name\": \"TQ32Q50AEUXXC\",\n                          \"DeviceType\": \"\",\n                          \"Active\": true,\n                          \"Tags\": \"upnp root logical\",\n                          \"FirstSeen\": \"2026-03-05T21:39:40Z\",\n                          \"LastConnection\": \"2026-03-05T21:39:40Z\",\n                          \"LastChanged\": \"2026-03-05T21:39:40Z\",\n                          \"Master\": \"\",\n                          \"Type\": \"urn:dial-multiscreen-org:device:dialreceiver:1\",\n                          \"Manufacturer\": \"Samsung\",\n                          \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                          \"ModelDescription\": \"Samsung DTV RCR\",\n                          \"ModelName\": \"TQ32Q50AEUXXC\",\n                          \"ModelNumber\": \"1.0\",\n                          \"ModelURL\": \"http://www.samsung.com/sec\",\n                          \"SerialNumber\": \"20090804RCR\",\n                          \"UDN\": \"uuid:0aa11025-9352-417f-92b3-074119a50db2\",\n                          \"UPC\": \"\",\n                          \"PresentationURL\": \"\",\n                          \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                          \"Index\": \"61\",\n                          \"Names\": [\n                            {\n                              \"Name\": \"TQ32Q50AEUXXC\",\n                              \"Source\": \"default\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"default\"\n                            },\n                            {\n                              \"Name\": \"Samsung Q50AE 32 TV\",\n                              \"Source\": \"upnpfriendlyname\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"upnpfriendlyname\"\n                            }\n                          ],\n                          \"DeviceTypes\": [],\n                          \"Service\": [\n                            {\n                              \"ServiceType\": \"urn:dial-multiscreen-org:service:dial:1\",\n                              \"ServiceId\": \"urn:dial-multiscreen-org:serviceId:dial\",\n                              \"SCPDURL\": \"dial.xml\",\n                              \"ControlURL\": \"/RCR/control/dial\",\n                              \"EventSubURL\": \"/RCR/event/dial\",\n                              \"Id\": \"1\"\n                            }\n                          ]\n                        },\n                        {\n                          \"Key\": \"uuid:d74cd5f7-b057-47f4-942e-284b7f3a2b6d\",\n                          \"DiscoverySource\": \"upnpDev\",\n                          \"Name\": \"TQ32Q50AEUXXC\",\n                          \"DeviceType\": \"\",\n                          \"Active\": true,\n                          \"Tags\": \"upnp root logical\",\n                          \"FirstSeen\": \"2026-03-05T21:39:42Z\",\n                          \"LastConnection\": \"2026-03-05T21:39:42Z\",\n                          \"LastChanged\": \"2026-03-05T21:39:43Z\",\n                          \"Master\": \"\",\n                          \"Type\": \"urn:samsung.com:device:ScreenMirroring:1\",\n                          \"Manufacturer\": \"Samsung Electronics\",\n                          \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                          \"ModelDescription\": \"Samsung TV ScreenSharing\",\n                          \"ModelName\": \"TQ32Q50AEUXXC\",\n                          \"ModelNumber\": \"AllShare1.0\",\n                          \"ModelURL\": \"http://www.samsung.com/sec\",\n                          \"SerialNumber\": \"0LNF3HHX201598K\",\n                          \"UDN\": \"uuid:d74cd5f7-b057-47f4-942e-284b7f3a2b6d\",\n                          \"UPC\": \"\",\n                          \"PresentationURL\": \"\",\n                          \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                          \"Index\": \"62\",\n                          \"Names\": [\n                            {\n                              \"Name\": \"TQ32Q50AEUXXC\",\n                              \"Source\": \"default\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"default\"\n                            },\n                            {\n                              \"Name\": \"Samsung Q50AE 32 TV\",\n                              \"Source\": \"upnpfriendlyname\",\n                              \"Suffix\": \"\",\n                              \"Id\": \"upnpfriendlyname\"\n                            }\n                          ],\n                          \"DeviceTypes\": [],\n                          \"Service\": []\n                        }\n                      ]\n                    },\n                    {\n                      \"Key\": \"B0:65:3A:85:7F:F0\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Salon\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp flowstats upnp events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:44Z\",\n                      \"LastChanged\": \"2026-03-05T20:04:20Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:B0:65:3A:85:7F:F0\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.5\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"B0:65:3A:85:7F:F0\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:7642aba4-f1f0-45de-8894-401b693413c5\",\n                      \"SignalStrength\": 0,\n                      \"SignalNoiseRatio\": 0,\n                      \"LastDataDownlinkRate\": 0,\n                      \"LastDataUplinkRate\": 0,\n                      \"EncryptionMode\": \"\",\n                      \"LinkBandwidth\": \"\",\n                      \"SecurityModeEnabled\": \"\",\n                      \"HtCapabilities\": \"\",\n                      \"VhtCapabilities\": \"\",\n                      \"HeCapabilities\": \"\",\n                      \"PairwiseAKM\": \"\",\n                      \"VendorCapabilities\": \"\",\n                      \"SupportedMCS\": \"\",\n                      \"AuthenticationState\": false,\n                      \"OperatingStandard\": \"\",\n                      \"OperatingFrequencyBand\": \"\",\n                      \"AvgSignalStrengthByChain\": 0,\n                      \"MaxBandwidthSupported\": \"\",\n                      \"MaxDownlinkRateSupported\": 0,\n                      \"MaxDownlinkRateReached\": 0,\n                      \"DownlinkMCS\": 0,\n                      \"DownlinkBandwidth\": 0,\n                      \"DownlinkShortGuard\": false,\n                      \"UplinkMCS\": 0,\n                      \"UplinkBandwidth\": 0,\n                      \"UplinkShortGuard\": false,\n                      \"MaxUplinkRateSupported\": 0,\n                      \"MaxUplinkRateReached\": 0,\n                      \"MaxTxSpatialStreamsSupported\": 0,\n                      \"MaxRxSpatialStreamsSupported\": 0,\n                      \"Index\": \"11\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"11\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Salon\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.5\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_5\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      },\n                      \"WiFiStaStats\": {\n                        \"EhtCapabilities\": \"\",\n                        \"MLOMode\": \"\",\n                        \"OperatingFrequencyBandList\": \"\",\n                        \"AffiliatedSta\": []\n                      }\n                    },\n                    {\n                      \"Key\": \"20:21:41:54:2F:2D\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Chambre\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:45Z\",\n                      \"LastChanged\": \"2026-03-05T20:03:57Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:20:21:41:54:2F:2D\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.6\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"20:21:41:54:2F:2D\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:3acaa91a-94c2-404f-acfc-65070210e06d\",\n                      \"Index\": \"8\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"8\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Chambre\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.6\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_6\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"20:21:41:54:41:F8\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Chambre Chloe\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n                      \"LastChanged\": \"2026-03-05T20:03:35Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:20:21:41:54:41:F8\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.7\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"20:21:41:54:41:F8\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:64f41606-9163-4738-9257-13f6716638a7\",\n                      \"Index\": \"7\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"7\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Chambre Chloe\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.7\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_7\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    }\n                  ],\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"3A:6A:D2:8D:C9:D3\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TPLink Etage 5 GHz\",\n                  \"DeviceType\": \"WiFi_Access_Point\",\n                  \"Active\": true,\n                  \"Tags\": \"lan mac physical wifi flowstats hnid wifi_bridge ssw_sta ipv4 ipv6 dhcp microsoft events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                  \"LastConnection\": \"2026-03-10T05:00:46Z\",\n                  \"LastChanged\": \"2026-03-10T05:01:30Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"\",\n                  \"IPAddress\": \"192.168.1.80\",\n                  \"IPAddressSource\": \"Static\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"3A:6A:D2:8D:C9:D3\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:694be30c-9ab0-4325-8f5e-8f6c6c182c15\",\n                  \"SignalStrength\": -78,\n                  \"SignalNoiseRatio\": 13,\n                  \"LastDataDownlinkRate\": 195000,\n                  \"LastDataUplinkRate\": 351000,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE,MU-BFR,MU-BFE\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ac\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -78,\n                  \"MaxBandwidthSupported\": \"80MHz\",\n                  \"MaxDownlinkRateSupported\": 866666,\n                  \"MaxDownlinkRateReached\": 351000,\n                  \"DownlinkMCS\": 4,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": true,\n                  \"UplinkMCS\": 4,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 866666,\n                  \"MaxUplinkRateReached\": 468000,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"15\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"wifi bridge\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"3\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"TPLink Etage 5 GHz\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"RE330\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"2\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"WiFi_Access_Point\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"WiFi Bridge\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.0.100\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_0_100\"\n                    },\n                    {\n                      \"Address\": \"192.168.1.80\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_80\"\n                    },\n                    {\n                      \"Address\": \"169.254.9.127\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"AutoIP\",\n                      \"Reserved\": false,\n                      \"Id\": \"169_254_9_127\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:21b4:3a54:b9c:f374\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:21b4:3a54:b9c:f374\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"3A:6A:D2:8D:C9:D3\",\n                    \"SupportedStandards\": \"\",\n                    \"Supports24GHz\": false,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"U-NII-1,U-NII-2C\",\n                    \"VendorSpecificElementOUIList\": \"00:0C:43,00:0C:E7,00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,n,ac\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"Children\": [\n                    {\n                      \"Key\": \"20:21:41:54:98:65\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split chambre Parent\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:44Z\",\n                      \"LastChanged\": \"2026-03-05T20:05:55Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:20:21:41:54:98:65\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.9\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"20:21:41:54:98:65\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:189e3266-f0f5-48cd-85f1-cc7a201aaa09\",\n                      \"Index\": \"17\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"17\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split chambre Parent\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.9\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_9\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"A4:57:A0:8E:C3:98\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"S\\u00e8che Linge Samsung\",\n                      \"DeviceType\": \"Apple Time Capsule\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n                      \"LastChanged\": \"2026-03-08T15:25:58Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:A4:57:A0:8E:C3:98\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.13\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"A4:57:A0:8E:C3:98\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:cc21553a-c408-44a9-afa8-fa1d5d505ef3\",\n                      \"Index\": \"20\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"20\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Samsung-Dryer\",\n                          \"Source\": \"dhcp\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"dhcp\"\n                        },\n                        {\n                          \"Name\": \"S\\u00e8che Linge Samsung\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Apple Time Capsule\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.13\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_13\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"B0:65:3A:8A:B9:EE\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Salon Parent\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical wifi ssw_sta ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:46Z\",\n                      \"LastChanged\": \"2026-03-05T20:06:47Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:B0:65:3A:8A:B9:EE\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.8\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"B0:65:3A:8A:B9:EE\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:534ed730-a7cf-4959-80c5-f8d1fc9941e7\",\n                      \"SignalStrength\": 0,\n                      \"SignalNoiseRatio\": 0,\n                      \"LastDataDownlinkRate\": 0,\n                      \"LastDataUplinkRate\": 0,\n                      \"EncryptionMode\": \"\",\n                      \"LinkBandwidth\": \"\",\n                      \"SecurityModeEnabled\": \"\",\n                      \"HtCapabilities\": \"SGI20\",\n                      \"VhtCapabilities\": \"\",\n                      \"HeCapabilities\": \"\",\n                      \"PairwiseAKM\": \"\",\n                      \"VendorCapabilities\": \"\",\n                      \"SupportedMCS\": \"\",\n                      \"AuthenticationState\": false,\n                      \"OperatingStandard\": \"\",\n                      \"OperatingFrequencyBand\": \"\",\n                      \"AvgSignalStrengthByChain\": 0,\n                      \"MaxBandwidthSupported\": \"\",\n                      \"MaxDownlinkRateSupported\": 0,\n                      \"MaxDownlinkRateReached\": 0,\n                      \"DownlinkMCS\": 0,\n                      \"DownlinkBandwidth\": 0,\n                      \"DownlinkShortGuard\": false,\n                      \"UplinkMCS\": 0,\n                      \"UplinkBandwidth\": 0,\n                      \"UplinkShortGuard\": false,\n                      \"MaxUplinkRateSupported\": 0,\n                      \"MaxUplinkRateReached\": 0,\n                      \"MaxTxSpatialStreamsSupported\": 0,\n                      \"MaxRxSpatialStreamsSupported\": 0,\n                      \"Index\": \"26\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"26\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Salon Parent\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.8\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_8\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"SSWSta\": {\n                        \"AssociationMACAddress\": \"\",\n                        \"SupportedStandards\": \"80211k\",\n                        \"Supports24GHz\": true,\n                        \"Supports5GHz\": false,\n                        \"Supports6GHz\": false,\n                        \"ReconnectClass\": \"\",\n                        \"FailedSteerCount\": 0,\n                        \"SuccessSteerCount\": 0,\n                        \"AvgSteeringTime\": 0,\n                        \"SupportedUNIIBands\": \"\",\n                        \"VendorSpecificElementOUIList\": \"\",\n                        \"SupportedRadioStandards\": \"b,g,n\",\n                        \"SupportedMLOModes\": \"\",\n                        \"MaxNumberOfAffiliatedSta\": 0\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      },\n                      \"WiFiStaStats\": {\n                        \"EhtCapabilities\": \"\",\n                        \"MLOMode\": \"\",\n                        \"OperatingFrequencyBandList\": \"\",\n                        \"AffiliatedSta\": []\n                      }\n                    },\n                    {\n                      \"Key\": \"20:21:41:54:34:03\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Couloir Parent\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:47Z\",\n                      \"LastChanged\": \"2026-03-05T20:05:47Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:20:21:41:54:34:03\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.14\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"20:21:41:54:34:03\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:3ed92780-2fcd-4c53-8948-ae20b7ab908b\",\n                      \"Index\": \"16\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"16\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Couloir Parent\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.14\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_14\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"B0:65:3A:7C:6C:E6\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Grenier Parent\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:52Z\",\n                      \"LastChanged\": \"2026-03-05T20:06:13Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:B0:65:3A:7C:6C:E6\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.16\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"B0:65:3A:7C:6C:E6\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:c5b4c1cb-a27c-4664-930b-809b1b977800\",\n                      \"Index\": \"19\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"19\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Grenier Parent\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.16\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_16\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"AC:BC:32:A4:62:FB\",\n                      \"DiscoverySource\": \"bridge\",\n                      \"Name\": \"MacBook Val\\u00e9rie\",\n                      \"DeviceType\": \"Laptop iOS\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical wifi flowstats events ipv4 ipv6 dhcp ssw_sta\",\n                      \"FirstSeen\": \"2026-03-07T12:43:29Z\",\n                      \"LastConnection\": \"2026-03-08T16:42:07Z\",\n                      \"LastChanged\": \"2026-03-08T16:42:07Z\",\n                      \"Master\": \"\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"AC:BC:32:A4:62:FB\",\n                      \"Layer2Interface\": \"wl0\",\n                      \"InterfaceName\": \"vap5g0priv\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:7c500f55-323f-48c9-8de7-bfd6d4d4d686\",\n                      \"SignalStrength\": -58,\n                      \"SignalNoiseRatio\": 28,\n                      \"LastDataDownlinkRate\": 975000,\n                      \"LastDataUplinkRate\": 780000,\n                      \"EncryptionMode\": \"AES\",\n                      \"LinkBandwidth\": \"80MHz\",\n                      \"SecurityModeEnabled\": \"WPA2-Personal\",\n                      \"HtCapabilities\": \"40MHz,SGI20,SGI40\",\n                      \"VhtCapabilities\": \"SGI80,SU-BFR,SU-BFE\",\n                      \"HeCapabilities\": \"\",\n                      \"PairwiseAKM\": \"000FAC02\",\n                      \"VendorCapabilities\": \"\",\n                      \"SupportedMCS\": \"\",\n                      \"AuthenticationState\": true,\n                      \"OperatingStandard\": \"ac\",\n                      \"OperatingFrequencyBand\": \"5GHz\",\n                      \"AvgSignalStrengthByChain\": -58,\n                      \"MaxBandwidthSupported\": \"80MHz\",\n                      \"MaxDownlinkRateSupported\": 1300000,\n                      \"MaxDownlinkRateReached\": 1300000,\n                      \"DownlinkMCS\": 7,\n                      \"DownlinkBandwidth\": 80,\n                      \"DownlinkShortGuard\": true,\n                      \"UplinkMCS\": 9,\n                      \"UplinkBandwidth\": 80,\n                      \"UplinkShortGuard\": false,\n                      \"MaxUplinkRateSupported\": 1300000,\n                      \"MaxUplinkRateReached\": 1300000,\n                      \"MaxTxSpatialStreamsSupported\": 3,\n                      \"MaxRxSpatialStreamsSupported\": 3,\n                      \"IPAddress\": \"192.168.1.29\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:AC:BC:32:A4:62:FB\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,252,95,44,46]\",\n                      \"Index\": \"69\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"69\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"MBP-de-Valerie\",\n                          \"Source\": \"dhcp\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"dhcp\"\n                        },\n                        {\n                          \"Name\": \"MacBook-Pro-de-Valerie\",\n                          \"Source\": \"mdns\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"mdns\"\n                        },\n                        {\n                          \"Name\": \"MacBook Val\\u00e9rie\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Computer\",\n                          \"Source\": \"default\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Type\": \"Laptop iOS\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      },\n                      \"WiFiStaStats\": {\n                        \"EhtCapabilities\": \"\",\n                        \"MLOMode\": \"NotApplicable\",\n                        \"OperatingFrequencyBandList\": \"\",\n                        \"AffiliatedSta\": []\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.29\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_29\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"SSWSta\": {\n                        \"AssociationMACAddress\": \"\",\n                        \"SupportedStandards\": \"80211w\",\n                        \"Supports24GHz\": true,\n                        \"Supports5GHz\": true,\n                        \"Supports6GHz\": false,\n                        \"ReconnectClass\": \"\",\n                        \"FailedSteerCount\": 0,\n                        \"SuccessSteerCount\": 0,\n                        \"AvgSteeringTime\": 0,\n                        \"SupportedUNIIBands\": \"U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n                        \"VendorSpecificElementOUIList\": \"00:17:F2,00:90:4C,00:50:F2\",\n                        \"SupportedRadioStandards\": \"a,n,ac\",\n                        \"SupportedMLOModes\": \"\",\n                        \"MaxNumberOfAffiliatedSta\": 0\n                      }\n                    },\n                    {\n                      \"Key\": \"3C:6A:D2:8D:C9:D2\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"TPLink Etage RE330\",\n                      \"DeviceType\": \"WiFi_Access_Point\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp microsoft flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T15:59:34Z\",\n                      \"LastChanged\": \"2026-03-09T10:34:44Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"MSFT 5.0\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:3C:6A:D2:8D:C9:D2\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,6,15,43,44,46,47,33,121,249]\",\n                      \"IPAddress\": \"192.168.1.41\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"3C:6A:D2:8D:C9:D2\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:c26c5bae-3855-4a30-9fd0-713e6a371ba2\",\n                      \"Index\": \"21\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"21\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"RE330\",\n                          \"Source\": \"dhcp\",\n                          \"Suffix\": \"1\",\n                          \"Id\": \"dhcp\"\n                        },\n                        {\n                          \"Name\": \"TPLink Etage RE330\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"WiFi_Access_Point\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.41\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": true,\n                          \"Id\": \"192_168_1_41\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    },\n                    {\n                      \"Key\": \"20:21:41:54:2F:3A\",\n                      \"DiscoverySource\": \"import\",\n                      \"Name\": \"Split Chambr2 Parent\",\n                      \"DeviceType\": \"Femtocell\",\n                      \"Active\": true,\n                      \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats events\",\n                      \"FirstSeen\": \"2026-03-05T15:58:12Z\",\n                      \"LastConnection\": \"2026-03-05T16:00:01Z\",\n                      \"LastChanged\": \"2026-03-09T21:22:41Z\",\n                      \"Master\": \"\",\n                      \"VendorClassID\": \"\",\n                      \"UserClassID\": \"\",\n                      \"ClientID\": \"01:20:21:41:54:2F:3A\",\n                      \"SerialNumber\": \"\",\n                      \"ProductClass\": \"\",\n                      \"OUI\": \"\",\n                      \"DHCPOption55\": \"[1,3,28,6]\",\n                      \"IPAddress\": \"192.168.1.15\",\n                      \"IPAddressSource\": \"DHCP\",\n                      \"Location\": \"\",\n                      \"PhysAddress\": \"20:21:41:54:2F:3A\",\n                      \"Layer2Interface\": \"\",\n                      \"InterfaceName\": \"\",\n                      \"MACVendor\": \"\",\n                      \"Owner\": \"\",\n                      \"UniqueID\": \"urn:uuid:bf665637-dd79-4af5-a530-3d999d39cb3f\",\n                      \"Index\": \"18\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Device\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"18\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Split Chambr2 Parent\",\n                          \"Source\": \"webui\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"DeviceTypes\": [\n                        {\n                          \"Type\": \"Femtocell\",\n                          \"Source\": \"webui\",\n                          \"Id\": \"webui\"\n                        }\n                      ],\n                      \"BDD\": {\n                        \"CloudVersion\": \"\",\n                        \"BDDRequestsSent\": 0,\n                        \"BDDRequestsAnswered\": 0,\n                        \"BDDRequestsFailed\": 0,\n                        \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                        \"DeviceName\": \"\",\n                        \"DeviceType\": \"\",\n                        \"ModelName\": \"\",\n                        \"OperatingSystem\": \"\",\n                        \"SoftwareVersion\": \"\",\n                        \"Manufacturer\": \"\",\n                        \"MACVendor\": \"\",\n                        \"DeviceCategory\": \"\",\n                        \"PerformManualLookup\": false\n                      },\n                      \"IPv4Address\": [\n                        {\n                          \"Address\": \"192.168.1.15\",\n                          \"Status\": \"reachable\",\n                          \"Scope\": \"global\",\n                          \"AddressSource\": \"DHCP\",\n                          \"Reserved\": false,\n                          \"Id\": \"192_168_1_15\"\n                        }\n                      ],\n                      \"IPv6Address\": [],\n                      \"Locations\": [],\n                      \"Groups\": [],\n                      \"Priority\": {\n                        \"Configuration\": \"Automatic\",\n                        \"Type\": \"BestEffort\"\n                      },\n                      \"UserAgents\": [],\n                      \"WANAccess\": {\n                        \"BlockedReasons\": \"\"\n                      }\n                    }\n                  ],\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"54:EF:44:63:24:3A\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"Camera-Hub-G3-243A\",\n                  \"DeviceType\": \"IP Camera\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical wifi flowstats ipv4 ipv6 dhcp mdns ssw_sta events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n                  \"LastConnection\": \"2026-03-08T08:22:15Z\",\n                  \"LastChanged\": \"2026-03-08T08:22:19Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"udhcp 1.31.1\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:54:EF:44:63:24:3A\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n                  \"IPAddress\": \"192.168.1.22\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"54:EF:44:63:24:3A\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:2c84cd52-21b2-48cd-b241-ee5b18645eb5\",\n                  \"SignalStrength\": -31,\n                  \"SignalNoiseRatio\": 59,\n                  \"LastDataDownlinkRate\": 433333,\n                  \"LastDataUplinkRate\": 433333,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"MS-WPS\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ac\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -31,\n                  \"MaxBandwidthSupported\": \"80MHz\",\n                  \"MaxDownlinkRateSupported\": 433333,\n                  \"MaxDownlinkRateReached\": 433333,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": true,\n                  \"UplinkMCS\": 9,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 433333,\n                  \"MaxUplinkRateReached\": 433333,\n                  \"MaxTxSpatialStreamsSupported\": 1,\n                  \"MaxRxSpatialStreamsSupported\": 1,\n                  \"Index\": \"29\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"29\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Camera-Hub-G3-243A\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"Camera-Hub-G3-243A\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"mdns\"\n                    },\n                    {\n                      \"Name\": \"Camera-Hub-G3-243A\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"IP Camera\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.22\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_22\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"fe80::56ef:44ff:fe63:243a\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::56ef:44ff:fe63:243a\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"mDNSService\": [],\n                  \"mDNSRecord\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"54:EF:44:63:24:3A\",\n                    \"SupportedStandards\": \"80211k\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"F8:0F:F9:65:E6:09\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"Chromecast Wifi\",\n                  \"DeviceType\": \"Chromecast\",\n                  \"Active\": false,\n                  \"Tags\": \"lan edev mac physical wifi ssw_sta flowstats ipv4 ipv6 dhcp events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n                  \"LastConnection\": \"2026-03-10T03:36:38Z\",\n                  \"LastChanged\": \"2026-03-10T03:38:00Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:F8:0F:F9:65:E6:09\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,33,3,6,15,28,51,58,59]\",\n                  \"IPAddress\": \"\",\n                  \"IPAddressSource\": \"\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"F8:0F:F9:65:E6:09\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:7d220a1a-5465-49df-997a-ba69adf1ba3a\",\n                  \"SignalStrength\": -42,\n                  \"SignalNoiseRatio\": 50,\n                  \"LastDataDownlinkRate\": 360000,\n                  \"LastDataUplinkRate\": 200000,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"40MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SU-BFE,MU-BFE\",\n                  \"HeCapabilities\": \"\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ac\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -42,\n                  \"MaxBandwidthSupported\": \"80MHz\",\n                  \"MaxDownlinkRateSupported\": 866666,\n                  \"MaxDownlinkRateReached\": 360000,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 40,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 9,\n                  \"UplinkBandwidth\": 40,\n                  \"UplinkShortGuard\": true,\n                  \"MaxUplinkRateSupported\": 866666,\n                  \"MaxUplinkRateReached\": 200000,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"31\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"31\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Chromecast-Ultra\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"1\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"Chromecast Wifi\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Chromecast\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.27\",\n                      \"Status\": \"not reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_27\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"\",\n                    \"SupportedStandards\": \"80211k,80211v,80211u\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4\",\n                    \"VendorSpecificElementOUIList\": \"00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"34:2B:6E:3A:D4:FD\",\n                  \"DiscoverySource\": \"bridge\",\n                  \"Name\": \"iPad Pro Val\\u00e9rie (LiveBox)\",\n                  \"DeviceType\": \"Tablet iOS\",\n                  \"Active\": false,\n                  \"Tags\": \"lan edev mac physical wifi ipv4 ipv6 dhcp apple ssw_sta\",\n                  \"FirstSeen\": \"2026-03-07T19:07:18Z\",\n                  \"LastConnection\": \"2026-03-09T09:24:23Z\",\n                  \"LastChanged\": \"2026-03-09T09:32:58Z\",\n                  \"Master\": \"\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"34:2B:6E:3A:D4:FD\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:02020aac-0949-476f-a138-605381013eaa\",\n                  \"SignalStrength\": -82,\n                  \"SignalNoiseRatio\": 2,\n                  \"LastDataDownlinkRate\": 1020830,\n                  \"LastDataUplinkRate\": 8120,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE\",\n                  \"HeCapabilities\": \"SU&MU-BFE\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ax\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -82,\n                  \"MaxBandwidthSupported\": \"160MHz\",\n                  \"MaxDownlinkRateSupported\": 2401911,\n                  \"MaxDownlinkRateReached\": 1200950,\n                  \"DownlinkMCS\": 10,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 0,\n                  \"UplinkBandwidth\": 20,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 2401911,\n                  \"MaxUplinkRateReached\": 1200950,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:34:2B:6E:3A:D4:FD\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n                  \"IPAddress\": \"\",\n                  \"IPAddressSource\": \"\",\n                  \"Index\": \"70\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"70\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"iPad-de-Valerie\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"iPad-de-Valerie\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"mdns\"\n                    },\n                    {\n                      \"Name\": \"iPad Pro Val\\u00e9rie (LiveBox)\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Tablet\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Type\": \"Tablet iOS\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"IPv4Address\": [],\n                  \"IPv6Address\": [],\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"\",\n                    \"SupportedStandards\": \"80211k,80211v,80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": true,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n                    \"VendorSpecificElementOUIList\": \"00:17:F2,00:90:4C,00:10:18,00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"60:E3:2B:AB:7A:2A\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TUF-GAMING\",\n                  \"DeviceType\": \"Laptop Windows\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp microsoft wifi ssw_sta flowstats events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n                  \"LastConnection\": \"2026-03-10T15:05:22Z\",\n                  \"LastChanged\": \"2026-03-10T15:05:27Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"MSFT 5.0\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:60:E3:2B:AB:7A:2A\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,6,15,31,33,43,44,46,47,119,121,249,252]\",\n                  \"IPAddress\": \"192.168.1.12\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"60:E3:2B:AB:7A:2A\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:bdbace3c-2392-4b46-93c8-43c45e37d142\",\n                  \"SignalStrength\": -51,\n                  \"SignalNoiseRatio\": 40,\n                  \"LastDataDownlinkRate\": 1080880,\n                  \"LastDataUplinkRate\": 1200950,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE,MU-BFE\",\n                  \"HeCapabilities\": \"SU&MU-BFE\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"WFA-MBO\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ax\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -51,\n                  \"MaxBandwidthSupported\": \"160MHz\",\n                  \"MaxDownlinkRateSupported\": 2401911,\n                  \"MaxDownlinkRateReached\": 1200950,\n                  \"DownlinkMCS\": 10,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 11,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 2401911,\n                  \"MaxUplinkRateReached\": 1200950,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"3\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"3\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"TUF-GAMING\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Laptop Windows\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.12\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_12\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"fe80::6e75:db25:433f:2cfa\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::6e75:db25:433f:2cfa\"\n                    },\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:1004:51ff:2eff:dac3\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:1004:51ff:2eff:dac3\"\n                    },\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:c4a4:a27e:f11f:d6c6\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:c4a4:a27e:f11f:d6c6\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"60:E3:2B:AB:7A:2A\",\n                    \"SupportedStandards\": \"80211k,80211v,80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 1,\n                    \"AvgSteeringTime\": 3331,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4\",\n                    \"VendorSpecificElementOUIList\": \"\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"42:51:99:A9:0D:82\",\n                  \"DiscoverySource\": \"dhcp\",\n                  \"Name\": \"iPad Pro Val\\u00e9rie (EXT1)\",\n                  \"DeviceType\": \"Tablet iOS\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp apple flowstats events wifi ssw_sta\",\n                  \"FirstSeen\": \"2026-03-05T22:04:51Z\",\n                  \"LastConnection\": \"2026-03-10T11:53:09Z\",\n                  \"LastChanged\": \"2026-03-10T11:53:21Z\",\n                  \"Master\": \"\",\n                  \"IPAddress\": \"192.168.1.24\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"42:51:99:A9:0D:82\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:cdbbc83f-c56f-4271-a6e0-1a23fd95613e\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:42:51:99:A9:0D:82\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n                  \"SignalStrength\": -60,\n                  \"SignalNoiseRatio\": 30,\n                  \"LastDataDownlinkRate\": 907360,\n                  \"LastDataUplinkRate\": 1080880,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE\",\n                  \"HeCapabilities\": \"SU&MU-BFE\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ax\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -60,\n                  \"MaxBandwidthSupported\": \"160MHz\",\n                  \"MaxDownlinkRateSupported\": 2401911,\n                  \"MaxDownlinkRateReached\": 1200950,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 10,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 2401911,\n                  \"MaxUplinkRateReached\": 1200950,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"63\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"63\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"iPad\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"iPad Pro Val\\u00e9rie (EXT1)\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"iPad-de-Valerie\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"1\",\n                      \"Id\": \"mdns\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Tablet\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Type\": \"Tablet iOS\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.24\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_24\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"fe80::c7d:80a6:b5e5:a235\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::c7d:80a6:b5e5:a235\"\n                    },\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:314d:966a:3b1f:3d01\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:314d:966a:3b1f:3d01\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"42:51:99:A9:0D:82\",\n                    \"SupportedStandards\": \"80211k,80211v,80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": true,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 1,\n                    \"AvgSteeringTime\": 9476,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n                    \"VendorSpecificElementOUIList\": \"\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"A2:FB:01:E0:EB:D9\",\n                  \"DiscoverySource\": \"bridge\",\n                  \"Name\": \"iPhone-Kristof\",\n                  \"DeviceType\": \"Mobile iOS\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical wifi flowstats ipv4 ipv6 events dhcp apple ssw_sta\",\n                  \"FirstSeen\": \"2026-03-09T09:19:26Z\",\n                  \"LastConnection\": \"2026-03-10T14:06:45Z\",\n                  \"LastChanged\": \"2026-03-10T14:06:51Z\",\n                  \"Master\": \"\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"A2:FB:01:E0:EB:D9\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:3ec486c8-4b6a-4ff9-9815-05dbf3a359ba\",\n                  \"SignalStrength\": -58,\n                  \"SignalNoiseRatio\": 32,\n                  \"LastDataDownlinkRate\": 960730,\n                  \"LastDataUplinkRate\": 1080880,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SU-BFE\",\n                  \"HeCapabilities\": \"SU&MU-BFE\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ax\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -58,\n                  \"MaxBandwidthSupported\": \"80MHz\",\n                  \"MaxDownlinkRateSupported\": 1200955,\n                  \"MaxDownlinkRateReached\": 1200950,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 10,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 1200955,\n                  \"MaxUplinkRateReached\": 1200950,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"IPAddress\": \"192.168.1.30\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:A2:FB:01:E0:EB:D9\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n                  \"Index\": \"75\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"75\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"iPhone\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"iPhone-Kristof\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"iPhone-de-Kristof\",\n                      \"Source\": \"mdns\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"mdns\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Computer\",\n                      \"Source\": \"default\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Type\": \"Mobile\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Type\": \"Mobile iOS\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.30\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_30\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"A2:FB:01:E0:EB:D9\",\n                    \"SupportedStandards\": \"80211k,80211v,80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": false,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 0,\n                    \"AvgSteeringTime\": 0,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3\",\n                    \"VendorSpecificElementOUIList\": \"\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                },\n                {\n                  \"Key\": \"5C:13:CC:43:91:67\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"iPhone-Valerie\",\n                  \"DeviceType\": \"Mobile iOS\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical ipv4 ipv6 dhcp apple wifi ssw_sta flowstats events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n                  \"LastConnection\": \"2026-03-10T11:53:15Z\",\n                  \"LastChanged\": \"2026-03-10T15:37:25Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:5C:13:CC:43:91:67\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,121,3,6,15,108,114,119,162,252]\",\n                  \"IPAddress\": \"192.168.1.18\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"5C:13:CC:43:91:67\",\n                  \"Layer2Interface\": \"wl0\",\n                  \"InterfaceName\": \"vap5g0priv\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:0fb29793-494d-468a-a462-5723ae105077\",\n                  \"SignalStrength\": -55,\n                  \"SignalNoiseRatio\": 35,\n                  \"LastDataDownlinkRate\": 907360,\n                  \"LastDataUplinkRate\": 960730,\n                  \"EncryptionMode\": \"AES\",\n                  \"LinkBandwidth\": \"80MHz\",\n                  \"SecurityModeEnabled\": \"WPA2-Personal\",\n                  \"HtCapabilities\": \"40MHz,SGI20,SGI40,40MHz-INTOL\",\n                  \"VhtCapabilities\": \"SGI80,SGI160,SU-BFE,MU-BFE\",\n                  \"HeCapabilities\": \"SU&MU-BFE\",\n                  \"PairwiseAKM\": \"000FAC02\",\n                  \"VendorCapabilities\": \"\",\n                  \"SupportedMCS\": \"\",\n                  \"AuthenticationState\": true,\n                  \"OperatingStandard\": \"ax\",\n                  \"OperatingFrequencyBand\": \"5GHz\",\n                  \"AvgSignalStrengthByChain\": -55,\n                  \"MaxBandwidthSupported\": \"160MHz\",\n                  \"MaxDownlinkRateSupported\": 300000,\n                  \"MaxDownlinkRateReached\": 1200950,\n                  \"DownlinkMCS\": 9,\n                  \"DownlinkBandwidth\": 80,\n                  \"DownlinkShortGuard\": false,\n                  \"UplinkMCS\": 9,\n                  \"UplinkBandwidth\": 80,\n                  \"UplinkShortGuard\": false,\n                  \"MaxUplinkRateSupported\": 300000,\n                  \"MaxUplinkRateReached\": 1200950,\n                  \"MaxTxSpatialStreamsSupported\": 2,\n                  \"MaxRxSpatialStreamsSupported\": 2,\n                  \"Index\": \"2\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"2\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"iPhone-Valerie\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    },\n                    {\n                      \"Name\": \"iPhone-Valerie\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Mobile iOS\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"Mobile\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.18\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_18\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:8859:abbb:2aec:7fbf\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:8859:abbb:2aec:7fbf\"\n                    },\n                    {\n                      \"Address\": \"fe80::1cb7:4924:38cd:fbce\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::1cb7:4924:38cd:fbce\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"SSWSta\": {\n                    \"AssociationMACAddress\": \"5C:13:CC:43:91:67\",\n                    \"SupportedStandards\": \"80211k,80211v,80211w\",\n                    \"Supports24GHz\": true,\n                    \"Supports5GHz\": true,\n                    \"Supports6GHz\": true,\n                    \"ReconnectClass\": \"\",\n                    \"FailedSteerCount\": 0,\n                    \"SuccessSteerCount\": 6,\n                    \"AvgSteeringTime\": 5187,\n                    \"SupportedUNIIBands\": \"Unknown,U-NII-1,U-NII-2A,U-NII-2C,U-NII-3,U-NII-4,U-NII-5,U-NII-6,U-NII-7,U-NII-8\",\n                    \"VendorSpecificElementOUIList\": \"00:17:F2,00:50:F2\",\n                    \"SupportedRadioStandards\": \"a,b,g,n,ac,ax\",\n                    \"SupportedMLOModes\": \"\",\n                    \"MaxNumberOfAffiliatedSta\": 0\n                  },\n                  \"UserAgents\": [\n                    {\n                      \"UserAgent\": \"com.google.GoogleMobile/410.0 iPhone/26.3 hw/iPhone18_1\",\n                      \"Type\": \"HTTP\",\n                      \"LastSeen\": \"2026-03-03T09:13:29Z\",\n                      \"Source\": \"captiveportal\",\n                      \"Id\": \"1\"\n                    },\n                    {\n                      \"UserAgent\": \"com.google.GoogleMobile/411.0 iPhone/26.3.1 hw/iPhone18_1\",\n                      \"Type\": \"HTTP\",\n                      \"LastSeen\": \"2026-03-10T15:37:25Z\",\n                      \"Source\": \"captiveportal\",\n                      \"Id\": \"2\"\n                    }\n                  ],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"WiFiStaStats\": {\n                    \"EhtCapabilities\": \"\",\n                    \"MLOMode\": \"NotApplicable\",\n                    \"OperatingFrequencyBandList\": \"\",\n                    \"AffiliatedSta\": []\n                  },\n                  \"InterfaceType\": \"Wi-Fi\"\n                }\n              ]\n            },\n            {\n              \"Key\": \"ETH0\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"ETH0\",\n              \"DeviceType\": \"\",\n              \"Active\": true,\n              \"Tags\": \"self lan eth nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:16Z\",\n              \"LastConnection\": \"2026-03-10T03:36:33Z\",\n              \"LastChanged\": \"2026-03-10T03:36:34Z\",\n              \"Master\": \"\",\n              \"MaxBitRateSupported\": 1000,\n              \"CurrentBitRate\": 100,\n              \"CurrentDuplexMode\": \"Full\",\n              \"PortState\": \"forwarding\",\n              \"NetDevName\": \"eth3\",\n              \"NetDevIndex\": 17,\n              \"NetDevState\": \"up\",\n              \"Index\": \"39\",\n              \"Names\": [\n                {\n                  \"Name\": \"ETH0\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"Children\": [\n                {\n                  \"Key\": \"44:09:B8:65:22:2B\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"Chromecast\",\n                  \"DeviceType\": \"Chromecast\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical eth ipv4 ipv6 flowstats dhcp mdns upnp events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:14Z\",\n                  \"LastConnection\": \"2026-03-10T03:36:34Z\",\n                  \"LastChanged\": \"2026-03-10T03:36:38Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:44:09:B8:65:22:2B\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,33,3,6,15,28,51,58,59]\",\n                  \"IPAddress\": \"192.168.1.26\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"44:09:B8:65:22:2B\",\n                  \"Layer2Interface\": \"eth3\",\n                  \"InterfaceName\": \"ETH0\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:1a6866c1-08cd-449c-ac4b-b957d3680a1b\",\n                  \"Index\": \"28\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"28\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Chromecast\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Name\": \"Chromecast-Ultra\",\n                      \"Source\": \"dhcp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"Chromecast\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"Chromecast\",\n                      \"Source\": \"dhcp\",\n                      \"Id\": \"dhcp\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.26\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_26\"\n                    }\n                  ],\n                  \"IPv6Address\": [\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:7c:5d2b:bd1d:8e00\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:7c:5d2b:bd1d:8e00\"\n                    },\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:c9ef:4b53:c21d:52b5\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:c9ef:4b53:c21d:52b5\"\n                    },\n                    {\n                      \"Address\": \"fe80::4609:b8ff:fe65:222b\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"link\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"fe80::4609:b8ff:fe65:222b\"\n                    },\n                    {\n                      \"Address\": \"2a01:cb05:8e11:a800:4609:b8ff:fe65:222b\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"Static\",\n                      \"Id\": \"2a01:cb05:8e11:a800:4609:b8ff:fe65:222b\"\n                    }\n                  ],\n                  \"Locations\": [],\n                  \"mDNSService\": [],\n                  \"mDNSRecord\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"Children\": [\n                    {\n                      \"Key\": \"uuid:e1bd6572-590f-8608-3981-544385e40fc0\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"Chromecast Ultra\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:33Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:33Z\",\n                      \"LastChanged\": \"2026-03-05T16:08:01Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:dial-multiscreen-org:device:dial:1\",\n                      \"Manufacturer\": \"Google Inc.\",\n                      \"ManufacturerURL\": \"\",\n                      \"ModelDescription\": \"\",\n                      \"ModelName\": \"Chromecast Ultra\",\n                      \"ModelNumber\": \"\",\n                      \"ModelURL\": \"\",\n                      \"SerialNumber\": \"\",\n                      \"UDN\": \"uuid:e1bd6572-590f-8608-3981-544385e40fc0\",\n                      \"UPC\": \"\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"Linux/4.1.16-mrvl, UPnP/1.0, Portable SDK for UPnP devices/1.6.18\",\n                      \"Index\": \"49\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Chromecast Ultra\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Salle \\u00e0 manger\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": [\n                        {\n                          \"ServiceType\": \"urn:dial-multiscreen-org:service:dial:1\",\n                          \"ServiceId\": \"urn:dial-multiscreen-org:serviceId:dial\",\n                          \"SCPDURL\": \"/ssdp/notfound\",\n                          \"ControlURL\": \"/ssdp/notfound\",\n                          \"EventSubURL\": \"/ssdp/notfound\",\n                          \"Id\": \"1\"\n                        }\n                      ]\n                    }\n                  ],\n                  \"InterfaceType\": \"Ethernet\",\n                  \"InterfaceNum\": 0,\n                  \"CurrentBitRate\": 100\n                }\n              ],\n              \"InterfaceType\": \"Ethernet\",\n              \"InterfaceNum\": 0\n            },\n            {\n              \"Key\": \"ETH1\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"ETH1\",\n              \"DeviceType\": \"\",\n              \"Active\": true,\n              \"Tags\": \"self lan eth nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:16Z\",\n              \"LastConnection\": \"2026-03-10T07:04:20Z\",\n              \"LastChanged\": \"2026-03-10T07:04:21Z\",\n              \"Master\": \"\",\n              \"MaxBitRateSupported\": 1000,\n              \"CurrentBitRate\": 100,\n              \"CurrentDuplexMode\": \"Full\",\n              \"PortState\": \"forwarding\",\n              \"NetDevName\": \"eth2\",\n              \"NetDevIndex\": 16,\n              \"NetDevState\": \"up\",\n              \"Index\": \"40\",\n              \"Names\": [\n                {\n                  \"Name\": \"ETH1\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"Children\": [\n                {\n                  \"Key\": \"C4:57:6E:32:88:1E\",\n                  \"DiscoverySource\": \"import\",\n                  \"Name\": \"TV Salon\",\n                  \"DeviceType\": \"TV\",\n                  \"Active\": true,\n                  \"Tags\": \"lan edev mac physical eth ipv4 ipv6 dhcp flowstats upnp samsung tv events\",\n                  \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n                  \"LastConnection\": \"2026-03-10T07:04:23Z\",\n                  \"LastChanged\": \"2026-03-10T07:04:24Z\",\n                  \"Master\": \"\",\n                  \"VendorClassID\": \"udhcp v1.21.1\",\n                  \"UserClassID\": \"\",\n                  \"ClientID\": \"01:C4:57:6E:32:88:1E\",\n                  \"SerialNumber\": \"\",\n                  \"ProductClass\": \"\",\n                  \"OUI\": \"\",\n                  \"DHCPOption55\": \"[1,3,6,12,15,28,42]\",\n                  \"IPAddress\": \"192.168.1.10\",\n                  \"IPAddressSource\": \"DHCP\",\n                  \"Location\": \"\",\n                  \"PhysAddress\": \"C4:57:6E:32:88:1E\",\n                  \"Layer2Interface\": \"eth2\",\n                  \"InterfaceName\": \"ETH1\",\n                  \"MACVendor\": \"\",\n                  \"Owner\": \"\",\n                  \"UniqueID\": \"urn:uuid:2b04c531-44d4-4d66-ae0b-ba87663ac07b\",\n                  \"Index\": \"1\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Device\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"1\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"[TV] Samsung\",\n                      \"Source\": \"upnp\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"upnp\"\n                    },\n                    {\n                      \"Name\": \"TV Salon\",\n                      \"Source\": \"webui\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"webui\"\n                    }\n                  ],\n                  \"DeviceTypes\": [\n                    {\n                      \"Type\": \"TV\",\n                      \"Source\": \"webui\",\n                      \"Id\": \"webui\"\n                    },\n                    {\n                      \"Type\": \"MediaRenderer\",\n                      \"Source\": \"upnp-uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\",\n                      \"Id\": \"upnp-uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\"\n                    }\n                  ],\n                  \"BDD\": {\n                    \"CloudVersion\": \"\",\n                    \"BDDRequestsSent\": 0,\n                    \"BDDRequestsAnswered\": 0,\n                    \"BDDRequestsFailed\": 0,\n                    \"BDDLastSyncTimestamp\": \"0001-01-01T00:00:00Z\",\n                    \"DeviceName\": \"\",\n                    \"DeviceType\": \"\",\n                    \"ModelName\": \"\",\n                    \"OperatingSystem\": \"\",\n                    \"SoftwareVersion\": \"\",\n                    \"Manufacturer\": \"\",\n                    \"MACVendor\": \"\",\n                    \"DeviceCategory\": \"\",\n                    \"PerformManualLookup\": false\n                  },\n                  \"IPv4Address\": [\n                    {\n                      \"Address\": \"192.168.1.10\",\n                      \"Status\": \"reachable\",\n                      \"Scope\": \"global\",\n                      \"AddressSource\": \"DHCP\",\n                      \"Reserved\": false,\n                      \"Id\": \"192_168_1_10\"\n                    }\n                  ],\n                  \"IPv6Address\": [],\n                  \"Locations\": [],\n                  \"Groups\": [],\n                  \"Priority\": {\n                    \"Configuration\": \"Automatic\",\n                    \"Type\": \"BestEffort\"\n                  },\n                  \"UserAgents\": [],\n                  \"WANAccess\": {\n                    \"BlockedReasons\": \"\"\n                  },\n                  \"Children\": [\n                    {\n                      \"Key\": \"uuid:04c4b400-0050-1000-8378-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:34Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:34Z\",\n                      \"LastChanged\": \"2026-03-05T15:58:35Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:04c4b400-0050-1000-8378-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"54\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:08f0d182-0096-1000-82d5-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:34Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:34Z\",\n                      \"LastChanged\": \"2026-03-05T16:08:01Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:dial-multiscreen-org:device:dialreceiver:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                      \"ModelDescription\": \"Samsung TV NS\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com/sec\",\n                      \"SerialNumber\": \"20090804RCR\",\n                      \"UDN\": \"uuid:08f0d182-0096-1000-82d5-c4576e32881e\",\n                      \"UPC\": \"\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"51\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": [\n                        {\n                          \"ServiceType\": \"urn:dial-multiscreen-org:service:dial:1\",\n                          \"ServiceId\": \"urn:dial-multiscreen-org:serviceId:dial\",\n                          \"SCPDURL\": \"/smp_26_\",\n                          \"ControlURL\": \"/smp_27_\",\n                          \"EventSubURL\": \"/smp_28_\",\n                          \"Id\": \"1\"\n                        }\n                      ]\n                    },\n                    {\n                      \"Key\": \"uuid:08f0d181-0096-1000-bf66-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:34Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:34Z\",\n                      \"LastChanged\": \"2026-03-05T16:08:01Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:RemoteControlReceiver:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                      \"ModelDescription\": \"Samsung TV RCR\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com/sec\",\n                      \"SerialNumber\": \"20090804RCR\",\n                      \"UDN\": \"uuid:08f0d181-0096-1000-bf66-c4576e32881e\",\n                      \"UPC\": \"\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"52\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:34Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:34Z\",\n                      \"LastChanged\": \"2026-03-05T16:08:02Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:schemas-upnp-org:device:MediaRenderer:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com/sec\",\n                      \"ModelDescription\": \"Samsung TV DMR\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"AllShare1.0\",\n                      \"ModelURL\": \"http://www.samsung.com/sec\",\n                      \"SerialNumber\": \"20110517DMR\",\n                      \"UDN\": \"uuid:0ee6b281-00fa-1000-92dd-c4576e32881e\",\n                      \"UPC\": \"\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"53\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": [\n                        {\n                          \"ServiceType\": \"urn:schemas-upnp-org:service:RenderingControl:1\",\n                          \"ServiceId\": \"urn:upnp-org:serviceId:RenderingControl\",\n                          \"SCPDURL\": \"/smp_16_\",\n                          \"ControlURL\": \"/smp_17_\",\n                          \"EventSubURL\": \"/smp_18_\",\n                          \"Id\": \"1\"\n                        },\n                        {\n                          \"ServiceType\": \"urn:schemas-upnp-org:service:ConnectionManager:1\",\n                          \"ServiceId\": \"urn:upnp-org:serviceId:ConnectionManager\",\n                          \"SCPDURL\": \"/smp_19_\",\n                          \"ControlURL\": \"/smp_20_\",\n                          \"EventSubURL\": \"/smp_21_\",\n                          \"Id\": \"2\"\n                        },\n                        {\n                          \"ServiceType\": \"urn:schemas-upnp-org:service:AVTransport:1\",\n                          \"ServiceId\": \"urn:upnp-org:serviceId:AVTransport\",\n                          \"SCPDURL\": \"/smp_22_\",\n                          \"ControlURL\": \"/smp_23_\",\n                          \"EventSubURL\": \"/smp_24_\",\n                          \"Id\": \"3\"\n                        }\n                      ]\n                    },\n                    {\n                      \"Key\": \"uuid:042c1d80-0046-1000-a243-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-06T06:00:48Z\",\n                      \"LastConnection\": \"2026-03-06T06:00:48Z\",\n                      \"LastChanged\": \"2026-03-06T06:00:48Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:042c1d80-0046-1000-a243-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"65\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:08f0d180-0096-1000-82d5-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-06T07:59:55Z\",\n                      \"LastConnection\": \"2026-03-06T07:59:55Z\",\n                      \"LastChanged\": \"2026-03-06T07:59:55Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:08f0d180-0096-1000-82d5-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"66\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:04c4b400-0050-1000-8598-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-07T06:16:27Z\",\n                      \"LastConnection\": \"2026-03-07T06:16:27Z\",\n                      \"LastChanged\": \"2026-03-07T06:16:27Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:04c4b400-0050-1000-8598-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"68\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:08f0d180-0096-1000-bf66-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-08T06:28:41Z\",\n                      \"LastConnection\": \"2026-03-08T06:28:41Z\",\n                      \"LastChanged\": \"2026-03-08T06:28:41Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:08f0d180-0096-1000-bf66-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"71\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:1d34ce80-00ea-1000-b245-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-09T06:59:49Z\",\n                      \"LastConnection\": \"2026-03-09T06:59:49Z\",\n                      \"LastChanged\": \"2026-03-09T06:59:49Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:1d34ce80-00ea-1000-b245-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"72\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:05f5e100-0064-1000-b398-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-09T07:00:29Z\",\n                      \"LastConnection\": \"2026-03-09T07:00:29Z\",\n                      \"LastChanged\": \"2026-03-09T07:00:29Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:05f5e100-0064-1000-b398-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"73\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    },\n                    {\n                      \"Key\": \"uuid:055d4a80-005a-1000-9803-c4576e32881e\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"UE65HU8500\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp root logical\",\n                      \"FirstSeen\": \"2026-03-09T10:52:10Z\",\n                      \"LastConnection\": \"2026-03-09T10:52:10Z\",\n                      \"LastChanged\": \"2026-03-09T10:52:11Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:samsung.com:device:MainTVServer2:1\",\n                      \"Manufacturer\": \"Samsung Electronics\",\n                      \"ManufacturerURL\": \"http://www.samsung.com\",\n                      \"ModelDescription\": \"Samsung DTV MainTVServer2\",\n                      \"ModelName\": \"UE65HU8500\",\n                      \"ModelNumber\": \"1.0\",\n                      \"ModelURL\": \"http://www.samsung.com\",\n                      \"SerialNumber\": \"20100621\",\n                      \"UDN\": \"uuid:055d4a80-005a-1000-9803-c4576e32881e\",\n                      \"UPC\": \"123456789012\",\n                      \"PresentationURL\": \"\",\n                      \"Server\": \"SHP, UPnP/1.0, Samsung UPnP SDK/1.0\",\n                      \"Index\": \"76\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"UE65HU8500\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"[TV] Samsung\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": []\n                    }\n                  ],\n                  \"InterfaceType\": \"Ethernet\",\n                  \"InterfaceNum\": 1,\n                  \"CurrentBitRate\": 100\n                }\n              ],\n              \"InterfaceType\": \"Ethernet\",\n              \"InterfaceNum\": 1\n            },\n            {\n              \"Key\": \"ETH2\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"ETH2\",\n              \"DeviceType\": \"\",\n              \"Active\": false,\n              \"Tags\": \"self lan eth nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n              \"LastConnection\": \"2026-03-05T15:58:10Z\",\n              \"LastChanged\": \"2026-03-05T15:58:28Z\",\n              \"Master\": \"\",\n              \"MaxBitRateSupported\": 1000,\n              \"CurrentBitRate\": 0,\n              \"CurrentDuplexMode\": \"\",\n              \"PortState\": \"disabled\",\n              \"NetDevName\": \"eth1\",\n              \"NetDevIndex\": 15,\n              \"NetDevState\": \"down\",\n              \"Index\": \"41\",\n              \"Names\": [\n                {\n                  \"Name\": \"ETH2\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"InterfaceType\": \"Ethernet\",\n              \"InterfaceNum\": 0\n            },\n            {\n              \"Key\": \"ETH3\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"ETH3\",\n              \"DeviceType\": \"\",\n              \"Active\": false,\n              \"Tags\": \"self lan eth nemo interface events\",\n              \"FirstSeen\": \"2026-03-05T15:58:10Z\",\n              \"LastConnection\": \"2026-03-05T15:58:10Z\",\n              \"LastChanged\": \"2026-03-05T15:58:28Z\",\n              \"Master\": \"\",\n              \"MaxBitRateSupported\": 1000,\n              \"CurrentBitRate\": 0,\n              \"CurrentDuplexMode\": \"\",\n              \"PortState\": \"disabled\",\n              \"NetDevName\": \"eth0\",\n              \"NetDevIndex\": 14,\n              \"NetDevState\": \"down\",\n              \"Index\": \"42\",\n              \"Names\": [\n                {\n                  \"Name\": \"ETH3\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"InterfaceType\": \"Ethernet\",\n              \"InterfaceNum\": 0\n            },\n            {\n              \"Key\": \"uuid:c35f9bee-b8d5-3a28-89dc-acbfd5fc25cc\",\n              \"DiscoverySource\": \"upnpDev\",\n              \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n              \"DeviceType\": \"\",\n              \"Active\": true,\n              \"Tags\": \"upnp root logical\",\n              \"FirstSeen\": \"2026-03-05T15:58:35Z\",\n              \"LastConnection\": \"2026-03-05T15:58:35Z\",\n              \"LastChanged\": \"2026-03-05T15:58:36Z\",\n              \"Master\": \"\",\n              \"Type\": \"urn:schemas-upnp-org:device:InternetGatewayDevice:2\",\n              \"Manufacturer\": \"Arcadyan\",\n              \"ManufacturerURL\": \"https://www.arcadyan.com\",\n              \"ModelDescription\": \"Arcadyan,fr,ARNA-fr-G01.R06.C01_04\",\n              \"ModelName\": \"Residential Livebox (GPON, WAN Ethernet)\",\n              \"ModelNumber\": \"4+\",\n              \"ModelURL\": \"\",\n              \"SerialNumber\": \"JA25170AV053744\",\n              \"UDN\": \"uuid:c35f9bee-b8d5-3a28-89dc-acbfd5fc25cc\",\n              \"UPC\": \"\",\n              \"PresentationURL\": \"http://192.168.1.1\",\n              \"Server\": \"Unspecified, UPnP/1.0, SoftAtHome\",\n              \"Index\": \"55\",\n              \"Names\": [\n                {\n                  \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                },\n                {\n                  \"Name\": \"Orange Livebox\",\n                  \"Source\": \"upnpfriendlyname\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"upnpfriendlyname\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"Service\": [],\n              \"Children\": [\n                {\n                  \"Key\": \"uuid:71815a2c-3220-3991-8e34-b0a6d2a7865d\",\n                  \"DiscoverySource\": \"upnpDev\",\n                  \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                  \"DeviceType\": \"\",\n                  \"Active\": true,\n                  \"Tags\": \"upnp embedded logical\",\n                  \"FirstSeen\": \"2026-03-05T15:58:35Z\",\n                  \"LastConnection\": \"2026-03-05T15:58:35Z\",\n                  \"LastChanged\": \"2026-03-05T15:58:37Z\",\n                  \"Master\": \"\",\n                  \"Type\": \"urn:schemas-upnp-org:device:WANDevice:2\",\n                  \"Manufacturer\": \"Arcadyan\",\n                  \"ManufacturerURL\": \"https://www.arcadyan.com\",\n                  \"ModelDescription\": \"Arcadyan,fr,ARNA-fr-G01.R06.C01_04\",\n                  \"ModelName\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                  \"ModelNumber\": \"4+\",\n                  \"ModelURL\": \"https://www.arcadyan.com\",\n                  \"SerialNumber\": \"JA25170AV053744\",\n                  \"UDN\": \"uuid:71815a2c-3220-3991-8e34-b0a6d2a7865d\",\n                  \"UPC\": \"\",\n                  \"PresentationURL\": \"http://192.168.1.1\",\n                  \"Server\": \"Unspecified, UPnP/1.0, SoftAtHome\",\n                  \"Index\": \"56\",\n                  \"Names\": [\n                    {\n                      \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                      \"Source\": \"default\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"default\"\n                    },\n                    {\n                      \"Name\": \"Orange Livebox\",\n                      \"Source\": \"upnpfriendlyname\",\n                      \"Suffix\": \"\",\n                      \"Id\": \"upnpfriendlyname\"\n                    }\n                  ],\n                  \"DeviceTypes\": [],\n                  \"Service\": [\n                    {\n                      \"ServiceType\": \"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1\",\n                      \"ServiceId\": \"urn:upnp-org:serviceId:WANCommonIFC1\",\n                      \"SCPDURL\": \"/c35f9bee/gateicfgSCPD.xml\",\n                      \"ControlURL\": \"/c35f9bee/upnp/control/WANCommonIFC1\",\n                      \"EventSubURL\": \"/c35f9bee/upnp/control/WANCommonIFC1\",\n                      \"Id\": \"1\"\n                    }\n                  ],\n                  \"Children\": [\n                    {\n                      \"Key\": \"uuid:7c1ca860-aa01-3a00-82a0-38b8222a27ed\",\n                      \"DiscoverySource\": \"upnpDev\",\n                      \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                      \"DeviceType\": \"\",\n                      \"Active\": true,\n                      \"Tags\": \"upnp embedded logical\",\n                      \"FirstSeen\": \"2026-03-05T15:58:35Z\",\n                      \"LastConnection\": \"2026-03-05T15:58:35Z\",\n                      \"LastChanged\": \"2026-03-05T15:58:36Z\",\n                      \"Master\": \"\",\n                      \"Type\": \"urn:schemas-upnp-org:device:WANConnectionDevice:2\",\n                      \"Manufacturer\": \"Arcadyan\",\n                      \"ManufacturerURL\": \"https://www.arcadyan.com\",\n                      \"ModelDescription\": \"Arcadyan,fr,ARNA-fr-G01.R06.C01_04\",\n                      \"ModelName\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                      \"ModelNumber\": \"4+\",\n                      \"ModelURL\": \"https://www.arcadyan.com\",\n                      \"SerialNumber\": \"JA25170AV053744\",\n                      \"UDN\": \"uuid:7c1ca860-aa01-3a00-82a0-38b8222a27ed\",\n                      \"UPC\": \"\",\n                      \"PresentationURL\": \"http://192.168.1.1\",\n                      \"Server\": \"Unspecified, UPnP/1.0, SoftAtHome\",\n                      \"Index\": \"57\",\n                      \"Names\": [\n                        {\n                          \"Name\": \"Residential Livebox (GPON, WAN Ethernet)\",\n                          \"Source\": \"default\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"default\"\n                        },\n                        {\n                          \"Name\": \"Orange Livebox\",\n                          \"Source\": \"upnpfriendlyname\",\n                          \"Suffix\": \"\",\n                          \"Id\": \"upnpfriendlyname\"\n                        }\n                      ],\n                      \"DeviceTypes\": [],\n                      \"Service\": [\n                        {\n                          \"ServiceType\": \"urn:schemas-upnp-org:service:WANIPConnection:2\",\n                          \"ServiceId\": \"urn:upnp-org:serviceId:WANIPConn1\",\n                          \"SCPDURL\": \"/c35f9bee/gateconnSCPD_IP.xml\",\n                          \"ControlURL\": \"/c35f9bee/upnp/control/WANIPConn1\",\n                          \"EventSubURL\": \"/c35f9bee/upnp/control/WANIPConn1\",\n                          \"Id\": \"1\"\n                        },\n                        {\n                          \"ServiceType\": \"urn:schemas-upnp-org:service:WANIPv6FirewallControl:1\",\n                          \"ServiceId\": \"urn:upnp-org:serviceId:WANIPv6FwCtrl1\",\n                          \"SCPDURL\": \"/c35f9bee/wanipv6fwctrlSCPD.xml\",\n                          \"ControlURL\": \"/c35f9bee/upnp/control/WANIPv6FwCtrl1\",\n                          \"EventSubURL\": \"/c35f9bee/upnp/control/WANIPv6FwCtrl1\",\n                          \"Id\": \"2\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"Key\": \"DECT\",\n          \"DiscoverySource\": \"voice_handsets\",\n          \"Name\": \"DECT\",\n          \"DeviceType\": \"Phone\",\n          \"Active\": true,\n          \"Tags\": \"voice interface dect physical\",\n          \"FirstSeen\": \"2026-03-05T15:58:22Z\",\n          \"LastConnection\": \"2026-03-05T15:58:22Z\",\n          \"LastChanged\": \"0001-01-01T00:00:00Z\",\n          \"Master\": \"\",\n          \"Location\": \"\",\n          \"Owner\": \"\",\n          \"Index\": \"36\",\n          \"Names\": [\n            {\n              \"Name\": \"DECT\",\n              \"Source\": \"default\",\n              \"Suffix\": \"\",\n              \"Id\": \"default\"\n            }\n          ],\n          \"DeviceTypes\": [\n            {\n              \"Type\": \"Phone\",\n              \"Source\": \"tags\",\n              \"Id\": \"tags\"\n            }\n          ],\n          \"Locations\": [],\n          \"Groups\": []\n        },\n        {\n          \"Key\": \"FXS\",\n          \"DiscoverySource\": \"voice_handsets\",\n          \"Name\": \"FXS\",\n          \"DeviceType\": \"Phone\",\n          \"Active\": true,\n          \"Tags\": \"voice interface physical\",\n          \"FirstSeen\": \"2026-03-05T15:58:22Z\",\n          \"LastConnection\": \"2026-03-05T15:58:22Z\",\n          \"LastChanged\": \"2026-03-05T15:58:34Z\",\n          \"Master\": \"\",\n          \"Location\": \"\",\n          \"Owner\": \"\",\n          \"Index\": \"37\",\n          \"Names\": [\n            {\n              \"Name\": \"FXS\",\n              \"Source\": \"default\",\n              \"Suffix\": \"\",\n              \"Id\": \"default\"\n            }\n          ],\n          \"DeviceTypes\": [\n            {\n              \"Type\": \"Phone\",\n              \"Source\": \"tags\",\n              \"Id\": \"tags\"\n            }\n          ],\n          \"Locations\": [],\n          \"Groups\": [],\n          \"Children\": [\n            {\n              \"Key\": \"FXS1\",\n              \"DiscoverySource\": \"voice_handsets\",\n              \"Name\": \"FXS1\",\n              \"DeviceType\": \"Phone\",\n              \"Active\": true,\n              \"Tags\": \"voice handset physical\",\n              \"FirstSeen\": \"2026-03-05T15:58:33Z\",\n              \"LastConnection\": \"2026-03-05T18:11:58Z\",\n              \"LastChanged\": \"2026-03-05T18:11:59Z\",\n              \"Master\": \"\",\n              \"Location\": \"\",\n              \"Owner\": \"\",\n              \"DirectoryNumber\": \"201\",\n              \"EndpointType\": \"FXS\",\n              \"OutgoingTrunkLine\": \"LINE1\",\n              \"Index\": \"50\",\n              \"Names\": [\n                {\n                  \"Name\": \"FXS1\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                },\n                {\n                  \"Name\": \"FXS1\",\n                  \"Source\": \"handset\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"handset\"\n                }\n              ],\n              \"DeviceTypes\": [\n                {\n                  \"Type\": \"Phone\",\n                  \"Source\": \"tags\",\n                  \"Id\": \"tags\"\n                },\n                {\n                  \"Type\": \"Computer\",\n                  \"Source\": \"default\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"Locations\": [],\n              \"Groups\": []\n            }\n          ]\n        },\n        {\n          \"Key\": \"guest\",\n          \"DiscoverySource\": \"selflan\",\n          \"Name\": \"guest\",\n          \"DeviceType\": \"\",\n          \"Active\": true,\n          \"Tags\": \"self lan mac nemo interface ipv4 ipv6 bridge dhcpserver\",\n          \"FirstSeen\": \"2026-03-05T15:58:11Z\",\n          \"LastConnection\": \"2026-03-05T15:58:42Z\",\n          \"LastChanged\": \"2026-03-05T15:58:45Z\",\n          \"Master\": \"\",\n          \"PortState\": \"\",\n          \"PhysAddress\": \"08:27:A8:CD:C9:79\",\n          \"Layer2Interface\": \"\",\n          \"InterfaceName\": \"\",\n          \"MACVendor\": \"\",\n          \"NetDevName\": \"brguest\",\n          \"NetDevIndex\": 21,\n          \"NetDevState\": \"down\",\n          \"IPAddress\": \"192.168.144.1\",\n          \"IPAddressSource\": \"self\",\n          \"DHCPv4ServerPool\": \"guest\",\n          \"DHCPv4ServerEnable\": true,\n          \"DHCPv4ServerMinAddress\": \"192.168.144.2\",\n          \"DHCPv4ServerMaxAddress\": \"192.168.144.254\",\n          \"DHCPv4ServerNetmask\": \"255.255.255.0\",\n          \"DHCPv4DomainName\": \"guest\",\n          \"Index\": \"43\",\n          \"Names\": [\n            {\n              \"Name\": \"guest\",\n              \"Source\": \"default\",\n              \"Suffix\": \"\",\n              \"Id\": \"default\"\n            }\n          ],\n          \"DeviceTypes\": [],\n          \"IPv4Address\": [\n            {\n              \"Address\": \"192.168.144.1\",\n              \"Status\": \"reachable\",\n              \"Scope\": \"global\",\n              \"AddressSource\": \"self\",\n              \"Reserved\": true,\n              \"Id\": \"192_168_144_1\"\n            }\n          ],\n          \"IPv6Address\": [\n            {\n              \"Address\": \"2a01:cb05:8e11:a801:a27:a8ff:fecd:c976\",\n              \"Status\": \"reachable\",\n              \"Scope\": \"global\",\n              \"AddressSource\": \"self\",\n              \"Id\": \"2a01:cb05:8e11:a801:a27:a8ff:fecd:c976\"\n            },\n            {\n              \"Address\": \"fe80::a27:a8ff:fecd:c979\",\n              \"Status\": \"reachable\",\n              \"Scope\": \"link\",\n              \"AddressSource\": \"self\",\n              \"Id\": \"fe80::a27:a8ff:fecd:c979\"\n            }\n          ],\n          \"Children\": [\n            {\n              \"Key\": \"vap2g0guest\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"vap2g0guest\",\n              \"DeviceType\": \"\",\n              \"Active\": false,\n              \"Tags\": \"self lan vap wifi nemo interface\",\n              \"FirstSeen\": \"2026-03-05T15:58:13Z\",\n              \"LastConnection\": \"2026-03-05T15:58:13Z\",\n              \"LastChanged\": \"2026-03-05T15:58:47Z\",\n              \"Master\": \"\",\n              \"PortState\": \"disabled\",\n              \"NetDevName\": \"wl1.1\",\n              \"NetDevIndex\": 47,\n              \"NetDevState\": \"down\",\n              \"SSID\": \"Livebox-26D0_wifi_invite\",\n              \"BSSID\": \"08:27:a8:cd:c9:81\",\n              \"OperatingFrequencyBand\": \"2.4GHz\",\n              \"OperatingStandards\": \"be\",\n              \"Channel\": 1,\n              \"CurrentOperatingChannelBandwidth\": \"\",\n              \"OperatingClass\": 4,\n              \"Enabled\": false,\n              \"EssIdentifier\": \"Guest\",\n              \"Index\": \"44\",\n              \"Names\": [\n                {\n                  \"Name\": \"vap2g0guest\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"WPS\": {\n                \"Enable\": false,\n                \"PairingInProgress\": false\n              }\n            },\n            {\n              \"Key\": \"vap5g0guest\",\n              \"DiscoverySource\": \"selflan\",\n              \"Name\": \"vap5g0guest\",\n              \"DeviceType\": \"\",\n              \"Active\": false,\n              \"Tags\": \"self lan vap wifi nemo interface\",\n              \"FirstSeen\": \"2026-03-05T15:58:17Z\",\n              \"LastConnection\": \"2026-03-05T15:58:17Z\",\n              \"LastChanged\": \"2026-03-05T15:58:47Z\",\n              \"Master\": \"\",\n              \"PortState\": \"disabled\",\n              \"NetDevName\": \"wl0.1\",\n              \"NetDevIndex\": 46,\n              \"NetDevState\": \"down\",\n              \"SSID\": \"Livebox-26D0_wifi_invite\",\n              \"BSSID\": \"08:27:a8:cd:c9:79\",\n              \"OperatingFrequencyBand\": \"5GHz\",\n              \"OperatingStandards\": \"be\",\n              \"Channel\": 36,\n              \"CurrentOperatingChannelBandwidth\": \"\",\n              \"OperatingClass\": 128,\n              \"Enabled\": false,\n              \"EssIdentifier\": \"Guest\",\n              \"Index\": \"47\",\n              \"Names\": [\n                {\n                  \"Name\": \"vap5g0guest\",\n                  \"Source\": \"default\",\n                  \"Suffix\": \"\",\n                  \"Id\": \"default\"\n                }\n              ],\n              \"DeviceTypes\": [],\n              \"WPS\": {\n                \"Enable\": false,\n                \"PairingInProgress\": false\n              }\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/DeviceInfo_get.json",
    "content": "{\n    \"status\": {\n        \"Manufacturer\": \"Sagemcom\",\n        \"ManufacturerOUI\": \"581DD8\",\n        \"ModelName\": \"SagemcomFast5698_OFR\",\n        \"Description\": \"SagemcomFast5698_OFR Sagemcom fr\",\n        \"ProductClass\": \"Livebox W7\",\n        \"SerialNumber\": \"LP29446DQ954457\",\n        \"HardwareVersion\": \"SG_LBW7_27.2.0\",\n        \"SoftwareVersion\": \"SG??-fr-G02.R08.C03_00\",\n        \"RescueVersion\": \"SG??-fr-G02.R08.C03_00\",\n        \"ModemFirmwareVersion\": \"\",\n        \"EnabledOptions\": \"\",\n        \"AdditionalHardwareVersion\": \"\",\n        \"AdditionalSoftwareVersion\": \"sbl-G2.R8.C3-fr\",\n        \"SpecVersion\": \"1.1\",\n        \"ProvisioningCode\": \"HASH.8343.1368\",\n        \"UpTime\": 292656,\n        \"FirstUseDate\": \"0001-01-01T00:00:00Z\",\n        \"DeviceLog\": \"\",\n        \"VendorConfigFileNumberOfEntries\": 1,\n        \"ManufacturerURL\": \"http://www.sagemcom.com/\",\n        \"Country\": \"fr\",\n        \"ExternalIPAddress\": \"90.116.58.128\",\n        \"DeviceStatus\": \"Up\",\n        \"NumberOfReboots\": 1,\n        \"UpgradeOccurred\": true,\n        \"ResetOccurred\": false,\n        \"RestoreOccurred\": true,\n        \"StandbyOccurred\": false,\n        \"X_SOFTATHOME-COM_AdditionalSoftwareVersions\": \"\",\n        \"BaseMAC\": \"F8:87:C6:19:30:2F\"\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/HomeLan_Interface_get.json",
    "content": "{\n    \"status\": {\n        \"vap2g0priv\": {\n            \"FriendlyName\": \"2.4GHz-Private_SSID\",\n            \"Name\": \"vap2g0priv\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 3740\n        },\n        \"vap5g0priv\": {\n            \"FriendlyName\": \"5GHz-Private_SSID\",\n            \"Name\": \"vap5g0priv\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 3738\n        },\n        \"ETH0\": {\n            \"FriendlyName\": \"LAN-10G\",\n            \"Name\": \"ETH0\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"ETH1\": {\n            \"FriendlyName\": \"eth1\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"ETH2\": {\n            \"FriendlyName\": \"eth2\",\n            \"Name\": \"ETH2\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"ETH3\": {\n            \"FriendlyName\": \"eth3\",\n            \"Name\": \"ETH3\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"eth1_wan\": {\n            \"FriendlyName\": \"WAN_Ethernet\",\n            \"Name\": \"ETH1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"ETH4\": {\n            \"FriendlyName\": \"eth4\",\n            \"Name\": \"ETH4\",\n            \"Alias\": \"Eth\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"vlan_data\": {\n            \"FriendlyName\": \"WAN_Ethernet-Internet\",\n            \"Name\": \"vlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_multi\": {\n            \"FriendlyName\": \"WAN_Ethernet-MultiServices\",\n            \"Name\": \"vlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_voip\": {\n            \"FriendlyName\": \"WAN_Ethernet-VoIP\",\n            \"Name\": \"vlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv1\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_VOD\",\n            \"Name\": \"vlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vlan_iptv2\": {\n            \"FriendlyName\": \"WAN_Ethernet-IPTV_Live\",\n            \"Name\": \"vlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"veip0\": {\n            \"FriendlyName\": \"WAN_GPON\",\n            \"Name\": \"veip0\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 3741\n        },\n        \"gvlan_data\": {\n            \"FriendlyName\": \"WAN_GPON-Internet\",\n            \"Name\": \"gvlan_data\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_multi\": {\n            \"FriendlyName\": \"WAN_GPON-MultiServices\",\n            \"Name\": \"gvlan_multi\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 3735\n        },\n        \"gvlan_voip\": {\n            \"FriendlyName\": \"WAN_GPON-VoIP\",\n            \"Name\": \"gvlan_voip\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv1\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_VOD\",\n            \"Name\": \"gvlan_iptv1\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"gvlan_iptv2\": {\n            \"FriendlyName\": \"WAN_GPON-IPTV_Live\",\n            \"Name\": \"gvlan_iptv2\",\n            \"Alias\": \"WAN_Virtual\",\n            \"NumberOfStoredMeasures\": 3737\n        },\n        \"vap2g0guest\": {\n            \"FriendlyName\": \"2.4GHz-Guest_SSID\",\n            \"Name\": \"vap2g0guest\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        },\n        \"vap5g0guest\": {\n            \"FriendlyName\": \"5GHz-Guest_SSID\",\n            \"Name\": \"vap5g0guest\",\n            \"Alias\": \"WiFi\",\n            \"NumberOfStoredMeasures\": 0\n        }\n    }\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/LEDs_LED_Orange_get.json",
    "content": "{\"status\":{\"Brightness\":5,\"Path\":\"/var/dev/led/Orange\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/LEDs_LED_Orange_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/LEDs_LED_White_get.json",
    "content": "{\"status\":{\"Brightness\":48,\"Path\":\"/var/dev/led/White\"}}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/LEDs_LED_White_set.json",
    "content": "{\"status\":true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/SSW_DataElements_Network_APMLDTemplate_privMlo_get.json",
    "content": "{\"status\": {\n\t\"Alias\": \"privMlo\",\n\t\"GroupName\": \"lan\",\n\t\"MLOEnable\": true,\n\t\"SingleMLDUnit\": 0,\n\t\"EMLSREnable\": true,\n\t\"EMLMREnable\": true,\n\t\"STREnable\": true,\n\t\"SplitMLDMode\": \"AllMatch\"\n\t}\n}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/SSW_DataElements_Network_APMLDTemplate_privMlo_set.json",
    "content": "{\"status\": true}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/Screen_getShowWifiPassword.json",
    "content": "{\"status\":false}\n"
  },
  {
    "path": "src/LiveboxMonitor/test/lbw7/Screen_setShowWifiPassword.json",
    "content": "{\"status\":null}\n"
  }
]