I haven't really been able to control any routers to date, with the exception of maybe SNMP. But there isn't much you can control with it except to get stats. I suppose you could write HTTP based drivers for a lot of them, not sure how much you can standardize. A lot of routers do support UPnP which might be another mechanism for controlling things like setup up port forwards.
You have the physical:
Port Up/Down (Probably Read Only)
Port Througput (bps NOT Bps) - Again read only
Port Errors
Might want read only fields for info fields:
Public IP Address, Name, Model, etc.
Device Info:
CPU, Memory
WiFi Info:
SSID
Signal Levels
Here is a sample SNMP config file for an OpenWRT (Linux based) router...
Code:
<!-- System Identification -->
<!-- System Uptime -->
<SNMPObject>
<FieldName>Uptime</FieldName>
<OID>.1.3.6.1.2.1.1.3.0</OID>
<CQCType>String</CQCType>
<StringType>Interval</StringType>
<IntervalFormat>%(D) Days, %(H) Hours, %(M) Mins</IntervalFormat>
</SNMPObject>
<!-- System Name -->
<SNMPObject>
<FieldName>Name</FieldName>
<OID>.1.3.6.1.2.1.1.5.0</OID>
<CQCType>String</CQCType>
</SNMPObject>
<!-- System Location -->
<SNMPObject>
<FieldName>Location</FieldName>
<OID>.1.3.6.1.2.1.1.6.0</OID>
<CQCType>String</CQCType>
</SNMPObject>
<!-- System Description -->
<SNMPObject>
<FieldName>Description</FieldName>
<OID>.1.3.6.1.2.1.1.1.0</OID>
<CQCType>String</CQCType>
</SNMPObject>
<!-- Memory Info -->
<!-- Total Memory -->
<SNMPObject>
<FieldName>MemTotal</FieldName>
<OID>.1.3.6.1.4.1.2021.4.5.0</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- Free Memory -->
<SNMPObject>
<FieldName>MemFree</FieldName>
<OID>.1.3.6.1.4.1.2021.4.11.0</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- % Mem Util -->
<SNMPObject>
<FieldName>MemUtil</FieldName>
<OID>.1.3.6.1.4.1.2021.4.11.0</OID>
<CQCType>Card</CQCType>
<InCalc>100-%(V)/$(Router.MemTotal)</InCalc>
</SNMPObject>
<!-- CPU Info -->
<!-- % CPU Util 1 Minute Avg -->
<SNMPObject>
<FieldName>CPUAvgUtil</FieldName>
<OID>1.3.6.1.4.1.2021.10.1.3.1</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- % CPU Util User -->
<SNMPObject>
<FieldName>CPUUser</FieldName>
<OID>.1.3.6.1.4.1.2021.11.10.0</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- % CPU Util System -->
<SNMPObject>
<FieldName>CPUSystem</FieldName>
<OID>.1.3.6.1.4.1.2021.11.10.0</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- % CPU Util Idle -->
<SNMPObject>
<FieldName>CPUIdle</FieldName>
<OID>.1.3.6.1.4.1.2021.11.11.0</OID>
<CQCType>Card</CQCType>
</SNMPObject>
<!-- Interface Info -->
<!-- IP Address Table (Static) -->
<SNMPObject>
<FieldName>IPAddress-%(i)</FieldName>
<OID>1.3.6.1.2.1.4.20.1.1</OID>
<OIDType>StaticTable</OIDType>
<CQCType>String</CQCType>
</SNMPObject>
<!-- Interface Table (Static) -->
<SNMPObject>
<FieldName>Interface-%(i)</FieldName>
<OID>1.3.6.1.2.1.2.2.1.2</OID>
<OIDType>StaticTable</OIDType>
<CQCType>String</CQCType>
<XLAT>Loopback,lo,Ethernet0,eth0,Ethernet1,eth1,LAN,br0,WAN,ppp0</XLAT>
</SNMPObject>
<!-- Interface In Utilization Table kbps (Static) -->
<SNMPObject>
<FieldName>InUtil-%(i)</FieldName>
<OID>1.3.6.1.2.1.2.2.1.10</OID>
<OIDType>StaticTable</OIDType>
<CQCType>Card</CQCType>
<InCalc>%(V)*8/1000</InCalc>
</SNMPObject>
<!-- Interface Out Utilization Table kbps (Static) -->
<SNMPObject>
<FieldName>OutUtil-%(i)</FieldName>
<OID>1.3.6.1.2.1.2.2.1.16</OID>
<OIDType>StaticTable</OIDType>
<CQCType>Card</CQCType>
<InCalc>%(V)*8/1000</InCalc>
</SNMPObject>
<!-- Connection Info -->