Christian Manivong d8c3a149cc
driver / standard (pull_request) Successful in 14s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 43s
driver / test (3.10) (pull_request) Successful in 3m24s
driver / test (3.11) (pull_request) Successful in 3m25s
driver / test (3.12) (pull_request) Successful in 3m34s
driver / test (3.13) (pull_request) Successful in 3m22s
driver / lowest (pull_request) Successful in 3m2s
driver / security (pull_request) Successful in 47s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Successful in 19m4s
driver / publish (pull_request) Skipped
chore(release): 0.3.0
2026-10-23 10:29:07 +02:00
2026-10-23 10:29:07 +02:00
2026-10-23 10:29:07 +02:00

napalm-zyxel

NAPALM driver for Zyxel VMG series residential gateways (VMG4005-B50A and similar), built on napalm-device-types (ResidentialGatewayDriver).

Tested against

Model Firmware
not recorded yet not recorded yet

Connection

The gateway's web API (the Zyxel DAL protocol) over HTTP on port 80, or HTTPS on port 443 with use_tls. The driver fetches the gateway's RSA public key, sends a fresh AES key encrypted with it, and logs in with the web interface account; every request and response after that is AES-encrypted.

from napalm import get_network_driver

driver = get_network_driver("zyxel")
with driver("192.0.2.1", "admin", "secret", optional_args={"use_tls": True}) as device:
    print(device.get_facts())
Optional argument Default Meaning
use_tls False HTTPS instead of HTTP
port 443 with use_tls, else 80 port of the web interface
verify False verify the gateway's TLS certificate

Supported

Getter / action Source
get_facts basic device information
get_interfaces, get_interfaces_ip basic device information (WAN, LAN, Wi-Fi)
get_arp_table derived from the active LAN hosts
get_wan_status basic device information
get_hosts DAL LAN_HOSTS, else the DHCP page
get_port_forwards, get_nat_translations DAL NAT_PORTMAP, else the status page
get_wireless_clients, get_ssids, get_radio_status DAL, else the wireless page
get_diagnostics DAL DIAGNOSTICS
ping DAL PINGTEST
is_alive TCP connect to the web port
reboot_host DAL REBOOT
restart_wifi DAL WIFI_RESTART

Not supported

Configuration changes (load_merge_candidate and load_replace_candidate raise NotImplementedError), get_config, LLDP, BGP, NTP, SNMP, users, routes, MAC address table, optics, environment, traceroute, VPN tunnels and the CLI.

Development

The rules are in STANDARDS.md.

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov

License

Apache-2.0

S
Description
No description provided
Readme
108 KiB
0 Stars 1 Watchers 0 Forks
2026-10-23 13:01:34 +00:00
Languages
Python 100%