summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test-data/description.txt7
-rw-r--r--test-data/filtre-ip.lst21
-rw-r--r--test-data/filtre-mac.lst21
-rw-r--r--test-data/hostnames.lst21
-rw-r--r--test-data/input/.SW_Eglise_ESTANCARBON-getcfg.cgi.out.swpbin0 -> 20480 bytes
-rw-r--r--test-data/input/Daniel_POUZENC-brmacs.cgi.out22
-rw-r--r--test-data/input/Daniel_POUZENC-status.cgi.out95
-rw-r--r--test-data/input/Denis_MAUBE-brmacs.cgi.out0
-rw-r--r--test-data/input/Denis_MAUBE-status.cgi.out0
-rw-r--r--test-data/input/Eglise_ESTANCARBON-brmacs.cgi.out22
-rw-r--r--test-data/input/Eglise_ESTANCARBON-status.cgi.out97
-rw-r--r--test-data/input/Joel_PINCE-brmacs.cgi.out22
-rw-r--r--test-data/input/Joel_PINCE-status.cgi.out97
-rw-r--r--test-data/input/SW_Eglise_ESTANCARBON-mactable_data.cgi.out22
-rw-r--r--test-data/input/SW_PI_EGL-mactable_data.cgi.out23
-rw-r--r--test-data/input/SW_SergeGOUSSE-mac-addr-table.out25
-rw-r--r--test-data/input/SW_SergeGOUSSE-show-version.out10
-rw-r--r--test-data/input/Samuel_BOURILLON-brmacs.cgi.out22
-rw-r--r--test-data/input/Samuel_BOURILLON-status.cgi.out95
-rw-r--r--test-data/input/TTN_CG_EST-brmacs.cgi.out23
-rw-r--r--test-data/input/TTN_CG_EST-sta.cgi.out101
-rw-r--r--test-data/input/TTN_CG_EST-status.cgi.out102
-rw-r--r--test-data/input/TTN_CG_POINTIS-brmacs.cgi.out23
-rw-r--r--test-data/input/TTN_CG_POINTIS-status.cgi.out97
-rw-r--r--test-data/input/TTN_ESTAN_SUD-brmacs.cgi.out22
-rw-r--r--test-data/input/TTN_ESTAN_SUD-status.cgi.out102
-rw-r--r--test-data/input/TTN_JP_TX_NE-brmacs.cgi.out21
-rw-r--r--test-data/input/TTN_JP_TX_NE-status.cgi.out102
-rw-r--r--test-data/input/TTN_PI_EGL_NORD_EST-brmacs.cgi.out22
-rw-r--r--test-data/input/TTN_PI_EGL_NORD_EST-status.cgi.out102
-rw-r--r--test-data/input/TTN_PI_EGL_RX_CG-brmacs.cgi.out23
-rw-r--r--test-data/input/TTN_PI_EGL_RX_CG-status.cgi.out97
-rw-r--r--test-data/input/TTN_PI_ESTAN-brmacs.cgi.out22
-rw-r--r--test-data/input/TTN_PI_ESTAN-status.cgi.out97
-rw-r--r--test-data/input/VINSONNEAU_RX_CG_EST-brmacs.cgi.out22
-rw-r--r--test-data/input/VINSONNEAU_RX_CG_EST-status.cgi.out97
-rw-r--r--test-data/input/stg-ip-neigh.out9
-rw-r--r--test-data/input/stg2-lldp.out185
38 files changed, 1891 insertions, 0 deletions
diff --git a/test-data/description.txt b/test-data/description.txt
new file mode 100644
index 0000000..00c5e39
--- /dev/null
+++ b/test-data/description.txt
@@ -0,0 +1,7 @@
+Jeu de test réduit
+
+Pouzenc (OpenWRT 15.05.1 NAT)
+Bourillion (OpenWRT 15.05.1 No NAT)
+Pince (Routeur custom NAT)
+Vinsonneau (OpenWRT 15.05.1 NAT)
+Maubé (NanoStation Routeur)
diff --git a/test-data/filtre-ip.lst b/test-data/filtre-ip.lst
new file mode 100644
index 0000000..675e5b4
--- /dev/null
+++ b/test-data/filtre-ip.lst
@@ -0,0 +1,21 @@
+172.16.0.254
+172.16.10.8
+172.16.10.28
+172.16.10.30
+172.16.10.37
+172.16.10.123
+172.16.11.41
+172.16.11.44
+172.16.11.46
+172.16.11.104
+172.16.11.105
+172.16.11.106
+172.16.11.158
+172.16.20.3
+172.16.20.210
+172.16.20.216
+172.16.21.69
+172.16.30.23
+172.16.30.27
+172.16.30.38
+fe80::8300
diff --git a/test-data/filtre-mac.lst b/test-data/filtre-mac.lst
new file mode 100644
index 0000000..783567a
--- /dev/null
+++ b/test-data/filtre-mac.lst
@@ -0,0 +1,21 @@
+52:54:00:df:ef:b4
+00:27:22:0e:67:f9
+dc:9f:db:72:c2:fd
+24:a4:3c:ee:7b:fb
+04:18:d6:0c:fe:5e
+04:18:d6:0c:ff:3a
+04:18:d6:0e:37:d4
+24:a4:3c:80:ef:3c
+24:a4:3c:ee:89:ca
+00:15:6d:8e:22:46
+04:18:d6:0c:fe:b6
+24:a4:3c:da:3e:3c
+04:18:d6:5a:92:4b
+00:27:22:0e:74:15
+c0:4a:00:fe:1f:87
+c0:4a:00:fe:09:bd
+e8:de:27:b5:f2:b1
+44:d9:e7:51:bf:a7
+dc:9f:db:80:96:6c
+24:a4:3c:3c:fe:71
+10:fe:ed:f1:e1:f3
diff --git a/test-data/hostnames.lst b/test-data/hostnames.lst
new file mode 100644
index 0000000..fb85ad8
--- /dev/null
+++ b/test-data/hostnames.lst
@@ -0,0 +1,21 @@
+stg.chd.sx
+TTN_CG_EST
+Daniel_POUZENC
+TTN_PI_EGL_NORD_EST
+TTN_PI_EGL_RX_CG
+TTN_CG_POINTIS
+Joel_PINCE
+Samuel_BOURILLON
+TTN_JP_TX_NE
+TTN_ESTAN_SUD
+TTN_PI_ESTAN
+Eglise_ESTANCARBON
+VINSONNEAU_RX_CG_EST
+Denis_MAUBE
+rt-pince
+rt-pouzenc
+rt-vinsonneau
+SW_SergeGOUSSE
+SW_PI_EGL
+SW_Eglise_ESTANCARBON
+rt-bourillon
diff --git a/test-data/input/.SW_Eglise_ESTANCARBON-getcfg.cgi.out.swp b/test-data/input/.SW_Eglise_ESTANCARBON-getcfg.cgi.out.swp
new file mode 100644
index 0000000..9c0d7dc
--- /dev/null
+++ b/test-data/input/.SW_Eglise_ESTANCARBON-getcfg.cgi.out.swp
Binary files differ
diff --git a/test-data/input/Daniel_POUZENC-brmacs.cgi.out b/test-data/input/Daniel_POUZENC-brmacs.cgi.out
new file mode 100644
index 0000000..13ee834
--- /dev/null
+++ b/test-data/input/Daniel_POUZENC-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"10.06"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"10.05"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"18.87"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"10.07"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"8.58"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"10.07"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"9.97"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"9.99"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"10.06"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"10.06"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"10.06"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"9.53"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"7.01"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"19.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.03"},
+{"bridge":"br0","port":"eth0","hwaddr":"c0:4a:00:fe:09:bd","ageing":"0.03"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"10.07"},
+null ]}
diff --git a/test-data/input/Daniel_POUZENC-status.cgi.out b/test-data/input/Daniel_POUZENC-status.cgi.out
new file mode 100644
index 0000000..e46d7b7
--- /dev/null
+++ b/test-data/input/Daniel_POUZENC-status.cgi.out
@@ -0,0 +1,95 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 625344,
+ "time": "2013-12-12 05:42:11",
+ "fwversion": "v5.5.10",
+ "hostname": "Daniel_POUZENC",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_PI_EGL_NORD_EST",
+ "hide_essid": 0,
+ "apmac": "24:A4:3C:EE:7B:FB",
+ "countrycode": 250,
+ "channel": 116,
+ "frequency": "5580 MHz",
+ "dfs": "1",
+ "opmode": "11naht20",
+ "antenna": "300 - 22 dBi",
+ "chains": "2X2",
+ "signal": -76, "rssi": 20, "noisef": -93,
+ "ack": 43,
+ "distance": 3300,
+ "ccq": 898,
+ "txrate": "78", "rxrate": "78",
+ "security": "WPA", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 62, "capacity": 55, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 18,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 17, 17, 0 ],
+ "chainrssimgmt" : [ 17, 17, 0 ],
+ "chainrssiext" : [ 17, 17, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "DC:9F:DB:73:C2:FD",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "DC:9F:DB:72:C2:FD",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "DC:9F:DB:72:C2:FD",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 130, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "DC:9F:DB:72:C2:FD",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/Denis_MAUBE-brmacs.cgi.out b/test-data/input/Denis_MAUBE-brmacs.cgi.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test-data/input/Denis_MAUBE-brmacs.cgi.out
diff --git a/test-data/input/Denis_MAUBE-status.cgi.out b/test-data/input/Denis_MAUBE-status.cgi.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test-data/input/Denis_MAUBE-status.cgi.out
diff --git a/test-data/input/Eglise_ESTANCARBON-brmacs.cgi.out b/test-data/input/Eglise_ESTANCARBON-brmacs.cgi.out
new file mode 100644
index 0000000..8256fa9
--- /dev/null
+++ b/test-data/input/Eglise_ESTANCARBON-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:15:6d:8e:22:46","ageing":"30.62"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"39.63"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"9.45"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"0.35"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"32.76"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"43.36"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"14.34"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"38.85"},
+{"bridge":"br0","port":"eth0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"2.89"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"108.60"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"19.15"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"17.43"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"31.18"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"43.39"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.62"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"8.88"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"108.60"},
+,null ]}
diff --git a/test-data/input/Eglise_ESTANCARBON-status.cgi.out b/test-data/input/Eglise_ESTANCARBON-status.cgi.out
new file mode 100644
index 0000000..4733d0f
--- /dev/null
+++ b/test-data/input/Eglise_ESTANCARBON-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 3727796,
+ "time": "2014-11-13 20:10:51",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "Eglise_ESTANCARBON",
+ "devmodel": "NanoBeamM5 400",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_PI_ESTAN",
+ "hide_essid": 0,
+ "apmac": "04:18:D6:0C:FE:B6",
+ "countrycode": 250,
+ "channel": 64,
+ "frequency": "5320 MHz",
+ "dfs": "1",
+ "opmode": "11NAHT40MINUS",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -77, "rssi": 19, "noisef": -95,
+ "ack": 45,
+ "distance": 3150,
+ "ccq": 958,
+ "txrate": "108", "rxrate": "81",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 50, "capacity": 23, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 0,
+ "rx_crypts": 2,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 9, 19, 0 ],
+ "chainrssimgmt" : [ 9, 19, 0 ],
+ "chainrssiext" : [ 9, 19, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "24:A4:3C:DB:3E:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 1000, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "24:A4:3C:DA:3E:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "24:A4:3C:DA:3E:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "24:A4:3C:DA:3E:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/Joel_PINCE-brmacs.cgi.out b/test-data/input/Joel_PINCE-brmacs.cgi.out
new file mode 100644
index 0000000..c2c8e5a
--- /dev/null
+++ b/test-data/input/Joel_PINCE-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"1.67"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"2.06"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"1.94"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"1.68"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"1.68"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"2.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"1.99"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"7.47"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"1.67"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"1.67"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"1.68"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"2.36"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"2.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.11"},
+{"bridge":"br0","port":"eth0","hwaddr":"c0:4a:00:fe:1f:87","ageing":"0.10"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"1.68"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"7.47"},
+,null ]}
diff --git a/test-data/input/Joel_PINCE-status.cgi.out b/test-data/input/Joel_PINCE-status.cgi.out
new file mode 100644
index 0000000..e863530
--- /dev/null
+++ b/test-data/input/Joel_PINCE-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 1820020,
+ "time": "2014-10-22 18:14:35",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "Joel_PINCE",
+ "devmodel": "NanoBeamM5 400",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_CG_EST",
+ "hide_essid": 0,
+ "apmac": "00:27:22:0E:67:F9",
+ "countrycode": 250,
+ "channel": 36,
+ "frequency": "5180 MHz",
+ "dfs": "0",
+ "opmode": "11NAHT20",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -69, "rssi": 27, "noisef": -98,
+ "ack": 38,
+ "distance": 2100,
+ "ccq": 978,
+ "txrate": "52", "rxrate": "117",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 45, "capacity": 55, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 0,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 18, 27, 0 ],
+ "chainrssimgmt" : [ 18, 27, 0 ],
+ "chainrssiext" : [ 18, 27, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "04:18:D6:0F:37:D4",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 1000, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "04:18:D6:0E:37:D4",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "04:18:D6:0E:37:D4",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "04:18:D6:0E:37:D4",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/SW_Eglise_ESTANCARBON-mactable_data.cgi.out b/test-data/input/SW_Eglise_ESTANCARBON-mactable_data.cgi.out
new file mode 100644
index 0000000..1d735a6
--- /dev/null
+++ b/test-data/input/SW_Eglise_ESTANCARBON-mactable_data.cgi.out
@@ -0,0 +1,22 @@
+Content-Type: application/json
+
+{
+"macs": [
+{ "mac": "24:a4:3c:da:3e:3c", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "24:a4:3c:ee:89:ca", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "dc:9f:db:72:c2:fd", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "04:18:d6:0c:ff:3a", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "04:18:d6:0c:fe:b6", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "10:fe:ed:f1:e1:f3", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "04:18:d6:0c:fe:5e", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "24:a4:3c:ee:7b:fb", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "00:27:22:0e:74:15", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "44:d9:e7:51:bf:a7", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "00:27:22:0e:67:f9", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "52:54:00:df:ef:b4", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "04:18:d6:0e:37:d4", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "dc:9f:db:80:96:6c", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "24:a4:3c:80:ef:3c", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "04:18:d6:5a:92:4b", "port": 1, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+{ "mac": "00:15:6d:8e:22:46", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "", "sacmd": ""},
+]}
diff --git a/test-data/input/SW_PI_EGL-mactable_data.cgi.out b/test-data/input/SW_PI_EGL-mactable_data.cgi.out
new file mode 100644
index 0000000..dbb4b9f
--- /dev/null
+++ b/test-data/input/SW_PI_EGL-mactable_data.cgi.out
@@ -0,0 +1,23 @@
+Content-Type: application/json
+
+{
+"macs": [
+{ "mac": "44:d9:e7:51:bf:a7", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "24:a4:3c:ee:7b:fb", "port": 4, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "52:54:00:df:ef:b4", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "24:a4:3c:ee:89:ca", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "04:18:d6:0c:fe:b6", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "00:27:22:0e:74:15", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "00:27:22:0e:67:f9", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "24:a4:3c:80:ef:3c", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "04:18:d6:0c:ff:3a", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "00:15:6d:8e:22:46", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "04:18:d6:0c:fe:5e", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "04:18:d6:5a:92:4b", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "dc:9f:db:72:c2:fd", "port": 4, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "24:a4:3c:3c:fe:71", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "24:a4:3c:da:3e:3c", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "10:fe:ed:f1:e1:f3", "port": 2, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "04:18:d6:0e:37:d4", "port": 5, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+{ "mac": "c0:4a:00:fe:09:bd", "port": 4, "fid" : 1, "queue": 0, "is_static": 0,"leaky": 0, "mirror": 0, "clone": 0, "da_pri": 0,"cross_pt_state": 0, "white_list_en": 0,"dacmd": "FORWARD", "sacmd": "FORWARD"},
+]}
diff --git a/test-data/input/SW_SergeGOUSSE-mac-addr-table.out b/test-data/input/SW_SergeGOUSSE-mac-addr-table.out
new file mode 100644
index 0000000..9796898
--- /dev/null
+++ b/test-data/input/SW_SergeGOUSSE-mac-addr-table.out
@@ -0,0 +1,25 @@
+(UBNT EdgeSwitch) #show mac-addr-table
+
+VLAN ID MAC Address Interface IfIndex Status
+------- ------------------ --------------------- ------- ------------
+1 00:15:6D:8E:22:46 0/15 15 Learned
+1 00:27:22:0E:67:F9 0/17 17 Learned
+1 00:27:22:0E:74:15 0/17 17 Learned
+1 04:18:D6:0C:FE:5E 0/15 15 Learned
+1 04:18:D6:0C:FE:B6 0/15 15 Learned
+1 04:18:D6:0C:FF:3A 0/15 15 Learned
+1 04:18:D6:0E:37:D4 0/17 17 Learned
+1 04:18:D6:5A:92:4B 0/17 17 Learned
+1 10:FE:ED:F1:E1:F3 0/15 15 Learned
+1 24:A4:3C:3C:FE:71 0/15 15 Learned
+1 24:A4:3C:80:EF:3C 0/15 15 Learned
+1 24:A4:3C:DA:3E:3C 0/15 15 Learned
+1 24:A4:3C:EE:7B:FB 0/15 15 Learned
+1 24:A4:3C:EE:89:CA 0/17 17 Learned
+1 44:D9:E7:51:BF:A7 5/1 65 Management
+1 52:54:00:DF:EF:B4 0/1 1 Learned
+1 C0:4A:00:FE:09:BD 0/15 15 Learned
+1 C0:4A:00:FE:1F:87 0/17 17 Learned
+1 DC:9F:DB:72:C2:FD 0/15 15 Learned
+1 DC:9F:DB:80:96:6C 0/15 15 Learned
+1 E8:DE:27:B5:F2:B1 0/17 17 Learned
diff --git a/test-data/input/SW_SergeGOUSSE-show-version.out b/test-data/input/SW_SergeGOUSSE-show-version.out
new file mode 100644
index 0000000..3d72609
--- /dev/null
+++ b/test-data/input/SW_SergeGOUSSE-show-version.out
@@ -0,0 +1,10 @@
+
+Switch: 1
+
+System Description............................. EdgeSwitch 24-Port 250W, 1.3.0.4831995, Linux 3.6.5-f4a26ed5
+Machine Type................................... EdgeSwitch 24-Port 250W
+Machine Model.................................. ES-24-250W
+Serial Number.................................. 44D9E751BFA7
+Burned In MAC Address.......................... 44:D9:E7:51:BF:A7
+Software Version............................... 1.3.0.4831995
+
diff --git a/test-data/input/Samuel_BOURILLON-brmacs.cgi.out b/test-data/input/Samuel_BOURILLON-brmacs.cgi.out
new file mode 100644
index 0000000..b6a76b9
--- /dev/null
+++ b/test-data/input/Samuel_BOURILLON-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"17.94"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"14.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"5.24"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"17.94"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"7.31"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"17.92"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"17.34"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"13.40"},
+{"bridge":"br0","port":"eth0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"7.43"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"23.16"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"17.95"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"17.94"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"5.71"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"17.93"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"1.08"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"17.95"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"23.16"},
+,null ]}
diff --git a/test-data/input/Samuel_BOURILLON-status.cgi.out b/test-data/input/Samuel_BOURILLON-status.cgi.out
new file mode 100644
index 0000000..a7e374c
--- /dev/null
+++ b/test-data/input/Samuel_BOURILLON-status.cgi.out
@@ -0,0 +1,95 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 6314396,
+ "time": "2014-12-13 18:48:50",
+ "fwversion": "v5.5.10",
+ "hostname": "Samuel_BOURILLON",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_ESTAN_SUD",
+ "hide_essid": 0,
+ "apmac": "00:15:6D:8E:22:46",
+ "countrycode": 250,
+ "channel": 36,
+ "frequency": "5180 MHz",
+ "dfs": "0",
+ "opmode": "11naht40plus",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -67, "rssi": 29, "noisef": -91,
+ "ack": 33,
+ "distance": 1350,
+ "ccq": 991,
+ "txrate": "300", "rxrate": "300",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 91, "capacity": 94, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 10117,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 23, 27, 0 ],
+ "chainrssimgmt" : [ 23, 27, 0 ],
+ "chainrssiext" : [ 23, 27, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "24:A4:3C:81:EF:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "24:A4:3C:80:EF:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "24:A4:3C:80:EF:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 300, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "24:A4:3C:80:EF:3C",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_CG_EST-brmacs.cgi.out b/test-data/input/TTN_CG_EST-brmacs.cgi.out
new file mode 100644
index 0000000..55ca852
--- /dev/null
+++ b/test-data/input/TTN_CG_EST-brmacs.cgi.out
@@ -0,0 +1,23 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:15:6d:8e:22:46","ageing":"37.30"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"2.18"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"2.03"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"34.43"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"37.32"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"1.37"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"37.27"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"37.30"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"20.83"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"37.30"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"19.14"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"16.47"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"45.05"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.00"},
+{"bridge":"br0","port":"ath0","hwaddr":"c0:4a:00:fe:1f:87","ageing":"0.00"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"10.57"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"37.30"},
+{"bridge":"br0","port":"ath0","hwaddr":"e8:de:27:b5:f2:b1","ageing":"1.94"},
+null ]}
diff --git a/test-data/input/TTN_CG_EST-sta.cgi.out b/test-data/input/TTN_CG_EST-sta.cgi.out
new file mode 100644
index 0000000..82c9312
--- /dev/null
+++ b/test-data/input/TTN_CG_EST-sta.cgi.out
@@ -0,0 +1,101 @@
+Content-Type: text/html
+
+[
+ {
+ "mac": "04:18:D6:5A:92:4B",
+ "name" : "VINSONNEAU_RX_",
+ "lastip" : "172.16.11.158",
+ "associd" : 2,
+ "aprepeater" : 0,
+ "tx" : 39,
+ "rx" : 39,
+ "signal" : -74,
+ "ccq" : 98,
+ "idle" : 1,
+ "uptime" : 3515190,
+ "ack" : 34,
+ "distance" : 1800,
+ "txpower" : 46,
+ "noisefloor" : -93,
+ "airmax" : {
+ "priority" : 3,
+ "quality" : 30,
+ "beam" : 255,
+ "signal" : -79,
+ "capacity" : 26 },
+ "stats" : {
+ "rx_data" : 29362203,
+ "rx_bytes" : 4686272344,
+ "rx_pps" : 0,
+ "tx_data" : 185631576,
+ "tx_bytes" : 62097748795,
+ "tx_pps" : 19 },
+ "rates" : [ "MCS0", "MCS1", "MCS2", "MCS3", "MCS4", "MCS5", "MCS6", "MCS7", "MCS8", "MCS9", "MCS10", "MCS11", "MCS12", "MCS13", "MCS14", "MCS15" ],
+ "signals" : [ 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0 ]
+ },
+ {
+ "mac": "00:27:22:0E:74:15",
+ "name" : "Denis_MAUBE",
+ "lastip" : "172.16.20.3",
+ "associd" : 1,
+ "aprepeater" : 0,
+ "tx" : 130,
+ "rx" : 104,
+ "signal" : -69,
+ "ccq" : 98,
+ "idle" : 1,
+ "uptime" : 696096,
+ "ack" : 26,
+ "distance" : 600,
+ "txpower" : 46,
+ "noisefloor" : -93,
+ "airmax" : {
+ "priority" : 3,
+ "quality" : 88,
+ "beam" : 255,
+ "signal" : -62,
+ "capacity" : 81 },
+ "stats" : {
+ "rx_data" : 4120683,
+ "rx_bytes" : 706998342,
+ "rx_pps" : 0,
+ "tx_data" : 5968214,
+ "tx_bytes" : 7042103177,
+ "tx_pps" : 0 },
+ "rates" : [ "MCS0", "MCS1", "MCS2", "MCS3", "MCS4", "MCS5", "MCS6", "MCS7", "MCS8", "MCS9", "MCS10", "MCS11", "MCS12", "MCS13", "MCS14", "MCS15" ],
+ "signals" : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -69, -69, -69 ]
+ },
+ {
+ "mac": "04:18:D6:0E:37:D4",
+ "name" : "Joel_PINCE",
+ "lastip" : "172.16.11.41",
+ "associd" : 3,
+ "aprepeater" : 0,
+ "tx" : 117,
+ "rx" : 52,
+ "signal" : -79,
+ "ccq" : 98,
+ "idle" : 0,
+ "uptime" : 1811831,
+ "ack" : 36,
+ "distance" : 2100,
+ "txpower" : 46,
+ "noisefloor" : -93,
+ "airmax" : {
+ "priority" : 3,
+ "quality" : 48,
+ "beam" : 255,
+ "signal" : -69,
+ "capacity" : 54 },
+ "stats" : {
+ "rx_data" : 168393796,
+ "rx_bytes" : 54842823310,
+ "rx_pps" : 3,
+ "tx_data" : 364320371,
+ "tx_bytes" : 388971864934,
+ "tx_pps" : 20 },
+ "rates" : [ "MCS0", "MCS1", "MCS2", "MCS3", "MCS4", "MCS5", "MCS6", "MCS7", "MCS8", "MCS9", "MCS10", "MCS11", "MCS12", "MCS13", "MCS14", "MCS15" ],
+ "signals" : [ 0, 0, 0, -79, -79, 0, 0, 0, 0, 0, 0, -79, -78, 0, 0, 0 ]
+ }
+]
+
diff --git a/test-data/input/TTN_CG_EST-status.cgi.out b/test-data/input/TTN_CG_EST-status.cgi.out
new file mode 100644
index 0000000..6424f07
--- /dev/null
+++ b/test-data/input/TTN_CG_EST-status.cgi.out
@@ -0,0 +1,102 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 4912949,
+ "time": "2014-01-30 20:42:17",
+ "fwversion": "v5.5.10",
+ "hostname": "TTN_CG_EST",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_CG_EST",
+ "hide_essid": 0,
+ "apmac": "00:27:22:0E:67:F9",
+ "countrycode": 250,
+ "channel": 36,
+ "frequency": "5180 MHz",
+ "dfs": "0",
+ "opmode": "11naht20",
+ "antenna": "Combined - 16 dBi",
+ "chains": "2X2",
+ "signal": -73, "rssi": 23, "noisef": -94,
+ "ack": 38,
+ "distance": 2100,
+ "ccq": 985,
+ "txrate": "94.25", "rxrate": "71.5",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 3,
+ "polling": {
+ "enabled": 1, "quality": 57, "capacity": 57, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 144293,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 23, 27, 0 ],
+ "chainrssimgmt" : [ 23, 28, 0 ],
+ "chainrssiext" : [ 23, 27, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "00:27:22:0F:67:F9",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth1",
+ "hwaddr": "02:27:22:0F:67:F9",
+ "enabled" : true,
+ "status" : { "plugged": 0, "speed": 0, "duplex": 0 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "00:27:22:0E:67:F9",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "00:27:22:0E:67:F9",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 130, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "00:27:22:0E:67:F9",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_CG_POINTIS-brmacs.cgi.out b/test-data/input/TTN_CG_POINTIS-brmacs.cgi.out
new file mode 100644
index 0000000..0f2835e
--- /dev/null
+++ b/test-data/input/TTN_CG_POINTIS-brmacs.cgi.out
@@ -0,0 +1,23 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"43.99"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:67:f9","ageing":"45.23"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:74:15","ageing":"15.04"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"5.94"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"38.35"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0e:37:d4","ageing":"48.29"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:5a:92:4b","ageing":"44.44"},
+{"bridge":"br0","port":"ath0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"8.49"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"119.28"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"24.74"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"2.88"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"0.10"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"36.78"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"48.99"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.04"},
+{"bridge":"br0","port":"ath0","hwaddr":"c0:4a:00:fe:09:bd","ageing":"0.68"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"14.47"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"119.28"},
+,null ]}
diff --git a/test-data/input/TTN_CG_POINTIS-status.cgi.out b/test-data/input/TTN_CG_POINTIS-status.cgi.out
new file mode 100644
index 0000000..fc251f1
--- /dev/null
+++ b/test-data/input/TTN_CG_POINTIS-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 7180028,
+ "time": "2014-12-23 19:08:03",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "TTN_CG_POINTIS",
+ "devmodel": "NanoBeamM5 400",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_CG_POINTIS",
+ "hide_essid": 0,
+ "apmac": "04:18:D6:0C:FF:3A",
+ "countrycode": 250,
+ "channel": 128,
+ "frequency": "5640 MHz",
+ "dfs": "1",
+ "opmode": "11NAHT40MINUS",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -61, "rssi": 35, "noisef": -102,
+ "ack": 73,
+ "distance": 6900,
+ "ccq": 955,
+ "txrate": "300", "rxrate": "300",
+ "security": "WPA", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 98, "capacity": 97, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 2659,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 30, 34, 0 ],
+ "chainrssimgmt" : [ 30, 34, 0 ],
+ "chainrssiext" : [ 30, 34, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "04:18:D6:0D:FF:3A",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 1000, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "04:18:D6:0C:FF:3A",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "04:18:D6:0C:FF:3A",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "04:18:D6:0C:FF:3A",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_ESTAN_SUD-brmacs.cgi.out b/test-data/input/TTN_ESTAN_SUD-brmacs.cgi.out
new file mode 100644
index 0000000..f0641de
--- /dev/null
+++ b/test-data/input/TTN_ESTAN_SUD-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:67:f9","ageing":"3.42"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:74:15","ageing":"6.49"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"7.18"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"7.17"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"7.15"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0e:37:d4","ageing":"6.77"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:5a:92:4b","ageing":"2.63"},
+{"bridge":"br0","port":"ath0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"5.11"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"72.39"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"5.64"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"7.18"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"7.16"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"6.83"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"7.18"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.13"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"7.16"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"72.39"},
+,null ]}
diff --git a/test-data/input/TTN_ESTAN_SUD-status.cgi.out b/test-data/input/TTN_ESTAN_SUD-status.cgi.out
new file mode 100644
index 0000000..12e2782
--- /dev/null
+++ b/test-data/input/TTN_ESTAN_SUD-status.cgi.out
@@ -0,0 +1,102 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 3727706,
+ "time": "2014-11-13 20:17:19",
+ "fwversion": "v5.5.10",
+ "hostname": "TTN_ESTAN_SUD",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_ESTAN_SUD",
+ "hide_essid": 0,
+ "apmac": "00:15:6D:8E:22:46",
+ "countrycode": 250,
+ "channel": 36,
+ "frequency": "5180 MHz",
+ "dfs": "0",
+ "opmode": "11naht40plus",
+ "antenna": "Combined - 16 dBi",
+ "chains": "2X2",
+ "signal": -67, "rssi": 29, "noisef": -91,
+ "ack": 32,
+ "distance": 1200,
+ "ccq": 991,
+ "txrate": "300", "rxrate": "300",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 94, "capacity": 96, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 5724,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 25, 29, 0 ],
+ "chainrssimgmt" : [ 25, 29, 0 ],
+ "chainrssiext" : [ 25, 29, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "00:15:6D:8F:22:46",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth1",
+ "hwaddr": "02:15:6D:8F:22:46",
+ "enabled" : true,
+ "status" : { "plugged": 0, "speed": 0, "duplex": 0 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "00:15:6D:8E:22:46",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "00:15:6D:8E:22:46",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 300, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "00:15:6D:8E:22:46",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_JP_TX_NE-brmacs.cgi.out b/test-data/input/TTN_JP_TX_NE-brmacs.cgi.out
new file mode 100644
index 0000000..4a632f8
--- /dev/null
+++ b/test-data/input/TTN_JP_TX_NE-brmacs.cgi.out
@@ -0,0 +1,21 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:15:6d:8e:22:46","ageing":"34.50"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:67:f9","ageing":"31.40"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:74:15","ageing":"1.20"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"34.51"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"24.52"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"35.01"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0e:37:d4","ageing":"35.17"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:5a:92:4b","ageing":"30.61"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"40.30"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"10.91"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"34.50"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"9.19"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"35.01"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.16"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"0.64"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"40.30"},
+,null ]}
diff --git a/test-data/input/TTN_JP_TX_NE-status.cgi.out b/test-data/input/TTN_JP_TX_NE-status.cgi.out
new file mode 100644
index 0000000..b7e1477
--- /dev/null
+++ b/test-data/input/TTN_JP_TX_NE-status.cgi.out
@@ -0,0 +1,102 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 1820040,
+ "time": "2014-10-22 18:22:54",
+ "fwversion": "v5.5.10",
+ "hostname": "TTN_JP_TX_NE",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_JP_NE",
+ "hide_essid": 0,
+ "apmac": "24:A4:3C:EE:89:CA",
+ "countrycode": 250,
+ "channel": 64,
+ "frequency": "5320 MHz",
+ "dfs": "1",
+ "opmode": "11naht20",
+ "antenna": "Combined - 16 dBi",
+ "chains": "2X2",
+ "signal": -96, "rssi": 0, "noisef": -96,
+ "ack": 28,
+ "distance": 1050,
+ "ccq": 0,
+ "txrate": "0", "rxrate": "0",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 0,
+ "polling": {
+ "enabled": 1, "quality": 0, "capacity": 0, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 973,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 0, 0, 0 ],
+ "chainrssimgmt" : [ 0, 0, 0 ],
+ "chainrssiext" : [ 0, 0, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "24:A4:3C:EF:89:CA",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth1",
+ "hwaddr": "26:A4:3C:EF:89:CA",
+ "enabled" : true,
+ "status" : { "plugged": 0, "speed": 0, "duplex": 0 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "24:A4:3C:EE:89:CA",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "24:A4:3C:EE:89:CA",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 130, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "24:A4:3C:EE:89:CA",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_PI_EGL_NORD_EST-brmacs.cgi.out b/test-data/input/TTN_PI_EGL_NORD_EST-brmacs.cgi.out
new file mode 100644
index 0000000..f67e268
--- /dev/null
+++ b/test-data/input/TTN_PI_EGL_NORD_EST-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:15:6d:8e:22:46","ageing":"51.98"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:67:f9","ageing":"48.46"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:74:15","ageing":"18.27"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"9.17"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"41.58"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"2.73"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0e:37:d4","ageing":"51.85"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:5a:92:4b","ageing":"47.66"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"62.54"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"27.96"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"6.11"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"40.00"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"52.20"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.50"},
+{"bridge":"br0","port":"ath0","hwaddr":"c0:4a:00:fe:09:bd","ageing":"1.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"17.70"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"62.55"},
+,null ]}
diff --git a/test-data/input/TTN_PI_EGL_NORD_EST-status.cgi.out b/test-data/input/TTN_PI_EGL_NORD_EST-status.cgi.out
new file mode 100644
index 0000000..c32a4ce
--- /dev/null
+++ b/test-data/input/TTN_PI_EGL_NORD_EST-status.cgi.out
@@ -0,0 +1,102 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 2588353,
+ "time": "2014-10-31 16:48:07",
+ "fwversion": "v5.5.10",
+ "hostname": "TTN_PI_EGL_NORD_EST",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_PI_EGL_NORD_EST",
+ "hide_essid": 0,
+ "apmac": "24:A4:3C:EE:7B:FB",
+ "countrycode": 250,
+ "channel": 116,
+ "frequency": "5580 MHz",
+ "dfs": "1",
+ "opmode": "11naht20",
+ "antenna": "Combined - 16 dBi",
+ "chains": "2X2",
+ "signal": -76, "rssi": 20, "noisef": -88,
+ "ack": 43,
+ "distance": 3300,
+ "ccq": 918,
+ "txrate": "78", "rxrate": "78",
+ "security": "WPA", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 65, "capacity": 61, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 5238,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 17, 16, 0 ],
+ "chainrssimgmt" : [ 17, 16, 0 ],
+ "chainrssiext" : [ 17, 16, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "24:A4:3C:EF:7B:FB",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth1",
+ "hwaddr": "26:A4:3C:EF:7B:FB",
+ "enabled" : true,
+ "status" : { "plugged": 0, "speed": 0, "duplex": 0 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "24:A4:3C:EE:7B:FB",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "24:A4:3C:EE:7B:FB",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 130, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "24:A4:3C:EE:7B:FB",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_PI_EGL_RX_CG-brmacs.cgi.out b/test-data/input/TTN_PI_EGL_RX_CG-brmacs.cgi.out
new file mode 100644
index 0000000..4e82bfa
--- /dev/null
+++ b/test-data/input/TTN_PI_EGL_RX_CG-brmacs.cgi.out
@@ -0,0 +1,23 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"eth0","hwaddr":"00:15:6d:8e:22:46","ageing":"24.62"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"25.85"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"28.99"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"18.98"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"29.59"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"28.92"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:5a:92:4b","ageing":"25.07"},
+{"bridge":"br0","port":"eth0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"9.12"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"99.93"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"5.37"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"24.63"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"1.45"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"17.40"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"29.59"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.28"},
+{"bridge":"br0","port":"eth0","hwaddr":"c0:4a:00:fe:09:bd","ageing":"0.32"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"24.63"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"99.94"},
+,null ]}
diff --git a/test-data/input/TTN_PI_EGL_RX_CG-status.cgi.out b/test-data/input/TTN_PI_EGL_RX_CG-status.cgi.out
new file mode 100644
index 0000000..82d90f0
--- /dev/null
+++ b/test-data/input/TTN_PI_EGL_RX_CG-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 2588411,
+ "time": "2014-10-31 16:41:06",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "TTN_PI_EGL_RX_CG",
+ "devmodel": "NanoBeamM5 400",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_CG_POINTIS",
+ "hide_essid": 0,
+ "apmac": "04:18:D6:0C:FF:3A",
+ "countrycode": 250,
+ "channel": 128,
+ "frequency": "5640 MHz",
+ "dfs": "1",
+ "opmode": "11NAHT40MINUS",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -64, "rssi": 32, "noisef": -102,
+ "ack": 73,
+ "distance": 6900,
+ "ccq": 984,
+ "txrate": "300", "rxrate": "300",
+ "security": "WPA", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 95, "capacity": 90, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 0,
+ "rx_crypts": 1,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 30, 28, 0 ],
+ "chainrssimgmt" : [ 30, 28, 0 ],
+ "chainrssiext" : [ 30, 28, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "04:18:D6:0D:FE:5E",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 1000, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "04:18:D6:0C:FE:5E",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "04:18:D6:0C:FE:5E",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "04:18:D6:0C:FE:5E",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/TTN_PI_ESTAN-brmacs.cgi.out b/test-data/input/TTN_PI_ESTAN-brmacs.cgi.out
new file mode 100644
index 0000000..918b2c3
--- /dev/null
+++ b/test-data/input/TTN_PI_ESTAN-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"15.26"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:67:f9","ageing":"24.27"},
+{"bridge":"br0","port":"eth0","hwaddr":"00:27:22:0e:74:15","ageing":"27.34"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"28.03"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"28.00"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:0e:37:d4","ageing":"27.62"},
+{"bridge":"br0","port":"eth0","hwaddr":"04:18:d6:5a:92:4b","ageing":"23.49"},
+{"bridge":"br0","port":"ath0","hwaddr":"10:fe:ed:f1:e1:f3","ageing":"2.80"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"93.24"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"3.78"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"27.67"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"2.07"},
+{"bridge":"br0","port":"eth0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"15.82"},
+{"bridge":"br0","port":"eth0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"28.03"},
+{"bridge":"br0","port":"eth0","hwaddr":"52:54:00:df:ef:b4","ageing":"1.12"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"28.02"},
+{"bridge":"br0","port":"eth0","hwaddr":"dc:9f:db:80:96:6c","ageing":"93.24"},
+,null ]}
diff --git a/test-data/input/TTN_PI_ESTAN-status.cgi.out b/test-data/input/TTN_PI_ESTAN-status.cgi.out
new file mode 100644
index 0000000..989c0df
--- /dev/null
+++ b/test-data/input/TTN_PI_ESTAN-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 1372367,
+ "time": "2014-10-17 13:53:42",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "TTN_PI_ESTAN",
+ "devmodel": "NanoBeamM5 400",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "ap",
+ "essid": "TTN_PI_ESTAN",
+ "hide_essid": 0,
+ "apmac": "04:18:D6:0C:FE:B6",
+ "countrycode": 250,
+ "channel": 64,
+ "frequency": "5320 MHz",
+ "dfs": "1",
+ "opmode": "11NAHT40MINUS",
+ "antenna": "400 - 25 dBi",
+ "chains": "2X2",
+ "signal": -76, "rssi": 20, "noisef": -96,
+ "ack": 46,
+ "distance": 3300,
+ "ccq": 991,
+ "txrate": "81", "rxrate": "108",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 47, "capacity": 22, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 4824,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 40,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 11, 20, 0 ],
+ "chainrssimgmt" : [ 11, 20, 0 ],
+ "chainrssiext" : [ 11, 20, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "04:18:D6:0D:FE:B6",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 1000, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "04:18:D6:0C:FE:B6",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "04:18:D6:0C:FE:B6",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "04:18:D6:0C:FE:B6",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/VINSONNEAU_RX_CG_EST-brmacs.cgi.out b/test-data/input/VINSONNEAU_RX_CG_EST-brmacs.cgi.out
new file mode 100644
index 0000000..bd2156b
--- /dev/null
+++ b/test-data/input/VINSONNEAU_RX_CG_EST-brmacs.cgi.out
@@ -0,0 +1,22 @@
+Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
+Content-Type: text/html
+
+{ "brmacs": [
+{"bridge":"br0","port":"ath0","hwaddr":"00:15:6d:8e:22:46","ageing":"26.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:67:f9","ageing":"23.08"},
+{"bridge":"br0","port":"ath0","hwaddr":"00:27:22:0e:74:15","ageing":"26.17"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:5e","ageing":"26.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:fe:b6","ageing":"16.20"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0c:ff:3a","ageing":"26.65"},
+{"bridge":"br0","port":"ath0","hwaddr":"04:18:d6:0e:37:d4","ageing":"26.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:3c:fe:71","ageing":"26.91"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:80:ef:3c","ageing":"2.59"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:da:3e:3c","ageing":"26.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:7b:fb","ageing":"0.87"},
+{"bridge":"br0","port":"ath0","hwaddr":"24:a4:3c:ee:89:ca","ageing":"14.61"},
+{"bridge":"br0","port":"ath0","hwaddr":"44:d9:e7:51:bf:a7","ageing":"26.65"},
+{"bridge":"br0","port":"ath0","hwaddr":"52:54:00:df:ef:b4","ageing":"0.05"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:72:c2:fd","ageing":"26.19"},
+{"bridge":"br0","port":"ath0","hwaddr":"dc:9f:db:80:96:6c","ageing":"26.91"},
+{"bridge":"br0","port":"eth0","hwaddr":"e8:de:27:b5:f2:b1","ageing":"0.04"},
+,null ]}
diff --git a/test-data/input/VINSONNEAU_RX_CG_EST-status.cgi.out b/test-data/input/VINSONNEAU_RX_CG_EST-status.cgi.out
new file mode 100644
index 0000000..87f383a
--- /dev/null
+++ b/test-data/input/VINSONNEAU_RX_CG_EST-status.cgi.out
@@ -0,0 +1,97 @@
+Content-Type: application/json
+
+{ "host": {
+ "uptime": 3523577,
+ "time": "2014-11-11 11:27:12",
+ "fwversion": "v5.5.10",
+ "fwprefix": "XW",
+ "hostname": "VINSONNEAU_RX_CG_EST",
+ "devmodel": "NanoBeamM5 19",
+ "netrole": "bridge"
+ },
+ "wireless": {
+ "mode": "sta",
+ "essid": "TTN_CG_EST",
+ "hide_essid": 0,
+ "apmac": "00:27:22:0E:67:F9",
+ "countrycode": 250,
+ "channel": 36,
+ "frequency": "5180 MHz",
+ "dfs": "0",
+ "opmode": "11NAHT20",
+ "antenna": "Combined - 19 dBi",
+ "chains": "2X2",
+ "signal": -78, "rssi": 18, "noisef": -98,
+ "ack": 32,
+ "distance": 1200,
+ "ccq": 935,
+ "txrate": "78", "rxrate": "39",
+ "security": "WPA2", "qos": "No QoS",
+ "rstatus": 5,
+ "count": 1,
+ "polling": {
+ "enabled": 1, "quality": 25, "capacity": 30, "priority": 3, "noack": 0,
+ "airsync_mode": 0, "airsync_connections": 0,
+ "airsync_down_util" : 0, "airsync_up_util" : 0,
+ "airselect" : 0, "airselect_interval" : 1000
+ },
+ "stats": { "rx_nwids": 0,
+ "rx_crypts": 0,
+ "rx_frags": 0,
+ "tx_retries": 0,
+ "missed_beacons": 0,
+ "err_other": 0
+ },
+ "wds": 1,
+ "aprepeater": 0,
+ "chwidth": 20,
+ "chanbw": 0,
+ "cwmmode": 0,
+ "rx_chainmask": 3,
+ "tx_chainmask": 3,
+ "chainrssi" : [ 16, 13, 0 ],
+ "chainrssimgmt" : [ 16, 13, 0 ],
+ "chainrssiext" : [ 16, 13, 0 ]
+ },
+ "airview": { "enabled": 0 },
+ "services": { "dhcpc": 0, "dhcpd": 0, "pppoe": 0 },
+ "firewall": { "iptables": 0, "ebtables" : 0 },
+ "genuine": "/images/genuine.png",
+ "interfaces" : [
+ {
+ "ifname" : "lo",
+ "hwaddr": "00:00:00:00:00:00",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "eth0",
+ "hwaddr": "04:18:D6:5B:92:4B",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 100, "duplex": 1 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "wifi0",
+ "hwaddr": "04:18:D6:5A:92:4B",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "ath0",
+ "hwaddr": "04:18:D6:5A:92:4B",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ },
+ {
+ "ifname" : "br0",
+ "hwaddr": "04:18:D6:5A:92:4B",
+ "enabled" : true,
+ "status" : { "plugged": 1, "speed": 0, "duplex": 255 },
+ "services" : { "dhcpc": false, "dhcpd": false, "pppoe": false }
+ }
+ ]
+}
diff --git a/test-data/input/stg-ip-neigh.out b/test-data/input/stg-ip-neigh.out
new file mode 100644
index 0000000..19007d5
--- /dev/null
+++ b/test-data/input/stg-ip-neigh.out
@@ -0,0 +1,9 @@
+fe80::8300 dev eth1 lladdr 10:fe:ed:f1:e1:f3 router STALE
+172.16.11.46 dev eth1 lladdr 24:a4:3c:ee:89:ca STALE
+172.16.20.3 dev eth1 lladdr 00:27:22:0e:74:15 STALE
+172.16.20.210 dev eth1 lladdr c0:4a:00:fe:1f:87 REACHABLE
+172.16.21.69 dev eth1 lladdr e8:de:27:b5:f2:b1 DELAY
+172.16.20.216 dev eth1 lladdr c0:4a:00:fe:09:bd PERMANENT
+172.16.11.41 dev eth1 lladdr 04:18:d6:0e:37:d4 STALE
+172.16.11.104 dev eth1 lladdr 00:15:6d:8e:22:46 STALE
+172.16.10.8 dev eth1 lladdr 00:27:22:0e:67:f9 STALE
diff --git a/test-data/input/stg2-lldp.out b/test-data/input/stg2-lldp.out
new file mode 100644
index 0000000..2200b95
--- /dev/null
+++ b/test-data/input/stg2-lldp.out
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lldp label="LLDP neighbors">
+ <interface label="Interface" name="eth0" via="CDPv1" rid="35" age="7 days, 18:04:45">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_CG_EST</id>
+ <name label="SysName">TTN_CG_EST</name>
+ <descr label="SysDescr">N5N running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.10.8</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="655" age="7 days, 03:21:09">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">Daniel_POUZENC</id>
+ <name label="SysName">Daniel_POUZENC</name>
+ <descr label="SysDescr">NB5 running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.10.28</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="161" age="7 days, 18:04:21">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_PI_EGL_NORD_EST</id>
+ <name label="SysName">TTN_PI_EGL_NORD_EST</name>
+ <descr label="SysDescr">N5N running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.10.30</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="308" age="7 days, 18:03:57">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_PI_EGL_RX_CG</id>
+ <name label="SysName">TTN_PI_EGL_RX_CG</name>
+ <descr label="SysDescr">N5B-400 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.10.37</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="2" age="7 days, 18:04:52">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_CG_POINTIS</id>
+ <name label="SysName">TTN_CG_POINTIS</name>
+ <descr label="SysDescr">N5B-400 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.10.123</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="43" age="7 days, 18:04:43">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">Joel_PINCE</id>
+ <name label="SysName">Joel_PINCE</name>
+ <descr label="SysDescr">N5B-400 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.41</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="166" age="7 days, 18:04:20">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">Samuel_BOURILLON</id>
+ <name label="SysName">Samuel_BOURILLON</name>
+ <descr label="SysDescr">NB5 running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.44</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="85" age="7 days, 18:04:36">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_JP_TX_NE</id>
+ <name label="SysName">TTN_JP_TX_NE</name>
+ <descr label="SysDescr">N5N running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.46</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="359" age="7 days, 18:03:52">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_ESTAN_SUD</id>
+ <name label="SysName">TTN_ESTAN_SUD</name>
+ <descr label="SysDescr">N5N running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.104</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="125" age="7 days, 18:04:28">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">TTN_PI_ESTAN</id>
+ <name label="SysName">TTN_PI_ESTAN</name>
+ <descr label="SysDescr">N5B-400 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.105</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="345" age="7 days, 18:03:54">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">Eglise_ESTANCARBON</id>
+ <name label="SysName">Eglise_ESTANCARBON</name>
+ <descr label="SysDescr">N5B-400 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.106</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="100" age="7 days, 18:04:33">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">VINSONNEAU_RX_CG_EST</id>
+ <name label="SysName">VINSONNEAU_RX_CG_EST</name>
+ <descr label="SysDescr">N5B-19 running on
+XW.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.11.158</mgmt-ip>
+ <capability label="Capability" type="Bridge" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">br0</id>
+ <descr label="PortDescr">br0</descr>
+ </port>
+ </interface>
+ <interface label="Interface" name="eth0" via="CDPv1" rid="197" age="7 days, 18:04:14">
+ <chassis label="Chassis">
+ <id label="ChassisID" type="local">Denis_MAUBE</id>
+ <name label="SysName">Denis_MAUBE</name>
+ <descr label="SysDescr">N5N running on
+XM.v5.5.10</descr>
+ <mgmt-ip label="MgmtIP">172.16.20.3</mgmt-ip>
+ <capability label="Capability" type="Router" enabled="on"/>
+ </chassis>
+ <port label="Port">
+ <id label="PortID" type="ifname">ath0</id>
+ <descr label="PortDescr">ath0</descr>
+ </port>
+ </interface>
+</lldp>