gs105e_queryData[1] = queryType % 256;
memcpy(&gs105e_queryData[8], myMac, 6);
- if (memcpy(settings.mac, "\x00\x00\x00\x00\x00\x00", 6))
+ if (memcmp(settings.mac, "\x00\x00\x00\x00\x00\x00", 6))
memcpy(&gs105e_queryData[14], settings.mac, 6);
memcpy(&gs105e_queryData[24], "\x4e\x53\x44\x50", 4); //Magic!! :-O
break;
case GS_PORTDIAG:;
p = &settings.portStatistics[data[0]];
- p->cableError = toUInt4(&data[1]);
- p->errorDist = toUInt4(&data[5]);
+ p->cableError = (char)toUInt4(&data[1]);
+ p->errorDist = (char)toUInt4(&data[5]);
break;
case ACT_DHCP:;
settings.dhcp = data[1] & 0x03;
break;
+ case GS_VLANSETTING:;
+ settings.vlanType = data[0];
+ break;
}
}
return -1;
}
+
+
if (data[2] == 0) {
+ for (n = 32; n < len; ) {
+ id = (data[n] * 256) + data[n + 1];
+ slLen = (data[n+2] * 256) + data[n + 3];
+
+ gs105e_interpret_slice(id, &data[n + 4], slLen);
+ n += slLen + 4;
+ }
return data[2];
}
}
int gs105e_act() {
gs105e_query();
- return gs105e_actRecv();
+ int n = gs105e_actRecv();
+ if (n < 0){
+ gs105e_query();
+ n = gs105e_actRecv();
+ }
+ return n;
}
int gs105e_mirrorPorts(int outputPort, int mirrorMask) {
makeHeader(QR_EXEC);
- char data[3] = {outputPort, 0, mirrorMask};
+ char data[3] = {(char)outputPort, 0, (char) mirrorMask};
addActData(ACT_PORTMIRROR, 3, data);
return gs105e_act();
}
int gs105e_cableDiagnostics(int port) {
- makeHeader(QR_EXEC);
+ makeHeader(QR_REQ);
char data[1] = {port};
- addActData(ACT_PORTMIRROR, 3, data);
+ addActData(GS_PORTDIAG, 1, data);
return gs105e_act();
}
return gs105e_act();
}
+int gs105e_setPassword(char * data) {
+ makeHeader(QR_EXEC);
+
+
+ addActData(GS_NEWPASSWORD, strlen(data), data);
+ return gs105e_act();
+}
+
int gs105e_dhcpSettings(int action) {
makeHeader(QR_EXEC);
char data[1] = {(char)action};
return gs105e_act();
}
+int gs105e_vlanEnable(void) {
+ makeHeader(QR_EXEC);
+ char data[1] = {4};
+
+ addActData(GS_VLANSETTING, 1, data);
+ return gs105e_act();
+}
+
void addDiscoveredDevice(int id) {
struct gs105e_discovered * ddev = gs105e_devs;
addQuery(ACT_DHCP);
addQuery(GS_PORTSTATUS);
addQuery(GS_VLAN);
+ addQuery(GS_VLANSETTING);
gs105e_query ();
gs105e_receive();