X-Git-Url: https://git.sur5r.net/?p=gsconf;a=blobdiff_plain;f=gs105e.c;h=a5b9aa60300345753050f02d0d3bcd3000ae9fae;hp=bcd90080921b6882364ea5993c5a46071c8d11e2;hb=11ae7c1958d87f75fb840c6556fa99abf85e6607;hpb=bdf95351d3563e4039ee2cc229452d78b3b6a612 diff --git a/gs105e.c b/gs105e.c index bcd9008..a5b9aa6 100644 --- a/gs105e.c +++ b/gs105e.c @@ -90,7 +90,7 @@ void makeHeader(unsigned int queryType) { 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 @@ -226,6 +226,9 @@ void gs105e_interpret_slice(unsigned int ID, char * data, int len) { case ACT_DHCP:; settings.dhcp = data[1] & 0x03; break; + case GS_VLANSETTING:; + settings.vlanType = data[0]; + break; } } @@ -304,7 +307,12 @@ int gs105e_actRecv(void) { } int gs105e_act() { gs105e_query(); - return gs105e_actRecv(); + int n = gs105e_actRecv(); + if (n < 0){ + gs105e_query(); + n = gs105e_actRecv(); + } + return n; } @@ -351,7 +359,7 @@ int gs105e_restart(int vlanId) { 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(); @@ -373,6 +381,14 @@ int gs105e_setName(char * data) { 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}; @@ -381,6 +397,14 @@ int gs105e_dhcpSettings(int 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; @@ -469,6 +493,7 @@ void gs105e_queryAll(void) { addQuery(ACT_DHCP); addQuery(GS_PORTSTATUS); addQuery(GS_VLAN); + addQuery(GS_VLANSETTING); gs105e_query (); gs105e_receive();