From 673880518e62093d45594ccfa562ac6c0c7a506f Mon Sep 17 00:00:00 2001 From: neil Date: Sat, 10 Sep 2011 22:46:04 +0000 Subject: [PATCH] - The "Start wireless networking" checkbox has been removed. The "AROSTCP/WirelessAutorun" env var is now set to True if a known wireless driver is selected for any interface. The new env var "AROSTCP/WirelessDevice" is set to the name and unit of this driver. - Driver name is no longer hardcoded to "atheros5000.device" when restarting WirelessManager. - New interfaces now use DHCP by default. - Default interface names are now incremented (eth0 to eth1 etc.). - User is warned about DHCP limitations when a second interface is created. - Full path of device is no longer shown in interface list (it was too long). git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@41256 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/prefs/network/catalogs/network.cd | 9 ++-- workbench/prefs/network/main.c | 2 +- workbench/prefs/network/netpeditor.c | 41 ++++++--------- workbench/prefs/network/prefsdata.c | 78 ++++++++++++++++------------- workbench/prefs/network/prefsdata.h | 12 +++-- 5 files changed, 74 insertions(+), 68 deletions(-) diff --git a/workbench/prefs/network/catalogs/network.cd b/workbench/prefs/network/catalogs/network.cd index e64489122e..eca7ffaf4d 100644 --- a/workbench/prefs/network/catalogs/network.cd +++ b/workbench/prefs/network/catalogs/network.cd @@ -100,9 +100,6 @@ Mobile Broadband MSG_AUTOSTART_STACK (//) Start networking during system boot ; -MSG_AUTOSTART_WIRELESS (//) -Enable wireless networking -; MSG_AUTOSTART_MOBILE (//) Start ModemManager during system boot ; @@ -139,12 +136,18 @@ Close MSG_ERROR_TITLE (//) Error ; +MSG_WARNING_TITLE (//) +Warning +; MSG_ERR_NOT_SAVED_PREFS (//) Network preferences not saved to %s ; MSG_ERR_NOT_COPIED_FILES (//) Additional files not copied to %s ; +MSG_WARN_MULTIPLE_IFACES (//) +DHCP does not work reliably when multiple interfaces are configured +; MSG_INFO_TITLE (//) Information ; diff --git a/workbench/prefs/network/main.c b/workbench/prefs/network/main.c index 2a062a9311..e695f5f72b 100644 --- a/workbench/prefs/network/main.c +++ b/workbench/prefs/network/main.c @@ -15,7 +15,7 @@ #include "netpeditor.h" #include "prefsdata.h" -#define VERSION "$VER: Network 1.10 (31.5.2011) AROS Dev Team" +#define VERSION "$VER: Network 1.11 (10.9.2011) AROS Dev Team" int main(int argc, char **argv) { diff --git a/workbench/prefs/network/netpeditor.c b/workbench/prefs/network/netpeditor.c index 02bb458f6c..7c991a1c55 100644 --- a/workbench/prefs/network/netpeditor.c +++ b/workbench/prefs/network/netpeditor.c @@ -1,5 +1,5 @@ /* - Copyright © 2009-2010, The AROS Development Team. All rights reserved. + Copyright © 2009-2011, The AROS Development Team. All rights reserved. $Id$ */ @@ -63,7 +63,6 @@ struct NetPEditor_DATA *netped_netAddButton, *netped_netEditButton, *netped_netRemoveButton, - *netped_wirelessAutostart, *netped_MBBInitString[MAXATCOMMANDS], *netped_MBBAutostart, *netped_MBBDeviceString, @@ -139,7 +138,7 @@ AROS_UFHA(struct Interface *, entry, A1)) *array++ = entry->up ? "*" : ""; *array++ = entry->ifDHCP ? (STRPTR)"DHCP" : entry->IP; *array++ = entry->ifDHCP ? (STRPTR)"DHCP" : entry->mask; - *array++ = entry->device; + *array++ = FilePart(entry->device); *array = unitbuffer; } else @@ -282,9 +281,6 @@ BOOL Gadgets2NetworkPrefs(struct NetPEditor_DATA *data) } SetNetworkCount(entries); - GET(data->netped_wirelessAutostart, MUIA_Selected, &lng); - SetWirelessAutostart(lng); - for(i = 0 ; i < MAXATCOMMANDS; i++) SetMobile_atcommand(i,""); a = 0; @@ -379,8 +375,6 @@ BOOL NetworkPrefs2Gadgets SET(data->netped_networkList, MUIA_List_Quiet, FALSE); - NNSET(data->netped_wirelessAutostart, MUIA_Selected, (IPTR)GetWirelessAutostart()); - for(i = 0 ; i < MAXATCOMMANDS; i++) NNSET((data->netped_MBBInitString[i]), MUIA_String_Contents, ""); @@ -401,6 +395,7 @@ BOOL NetworkPrefs2Gadgets void DisplayErrorMessage(Object * obj, enum ErrorCode errorcode) { + CONST_STRPTR title = _(MSG_ERROR_TITLE); CONST_STRPTR errormessage = NULL; CONST_STRPTR additionaldata = NULL; Object * app = NULL; @@ -439,11 +434,16 @@ void DisplayErrorMessage(Object * obj, enum ErrorCode errorcode) errormessage = _(MSG_ERR_NOT_COPIED_FILES); additionaldata = PREFS_PATH_ENVARC; break; + case MULTIPLE_IFACES: + errormessage = _(MSG_WARN_MULTIPLE_IFACES); + title = _(MSG_WARNING_TITLE); + break; case ALL_OK: return; } - MUI_Request(app, wnd, 0, _(MSG_ERROR_TITLE), _(MSG_BUTTON_OK), errormessage, additionaldata); + MUI_Request(app, wnd, 0, title, _(MSG_BUTTON_OK), errormessage, + additionaldata); } /*** Methods ****************************************************************/ @@ -454,7 +454,6 @@ Object * NetPEditor__OM_NEW(Class *CLASS, Object *self, struct opSet *message) *autostart, *interfaceList, *DHCPState, *addButton, *editButton, *removeButton, *inputGroup, *networkList, *netAddButton, *netEditButton, *netRemoveButton, - *wirelessAutostart, *MBBInitString[MAXATCOMMANDS], *MBBAutostart,*MBBDeviceString,*MBBUnit,*MBBUsername,*MBBPassword; @@ -589,13 +588,6 @@ Object * NetPEditor__OM_NEW(Class *CLASS, Object *self, struct opSet *message) Child, (IPTR)HVSpace, End), End), - Child, (IPTR)ColGroup(2), - Child, (IPTR)(wirelessAutostart = MUI_MakeObject(MUIO_Checkmark, NULL)), - Child, (IPTR)HGroup, - Child, (IPTR)Label2(__(MSG_AUTOSTART_WIRELESS)), - Child, (IPTR)HVSpace, - End, - End, End, Child, (IPTR)VGroup, @@ -826,7 +818,6 @@ Object * NetPEditor__OM_NEW(Class *CLASS, Object *self, struct opSet *message) data->netped_addButton = addButton; data->netped_editButton = editButton; data->netped_removeButton = removeButton; - data->netped_wirelessAutostart = wirelessAutostart; data->netped_networkList = networkList; data->netped_netAddButton = netAddButton; data->netped_netEditButton = netEditButton; @@ -930,7 +921,7 @@ Object * NetPEditor__OM_NEW(Class *CLASS, Object *self, struct opSet *message) DoMethod ( editButton, MUIM_Notify, MUIA_Pressed, FALSE, - (IPTR)self, 1, MUIM_NetPEditor_EditEntry, FALSE + (IPTR)self, 2, MUIM_NetPEditor_EditEntry, FALSE ); DoMethod ( @@ -967,12 +958,6 @@ Object * NetPEditor__OM_NEW(Class *CLASS, Object *self, struct opSet *message) DoMethod ( - wirelessAutostart, MUIM_Notify, MUIA_Selected, MUIV_EveryTime, - (IPTR)self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE - ); - - DoMethod - ( MBBAutostart, MUIM_Notify, MUIA_Selected, MUIV_EveryTime, (IPTR)self, 3, MUIM_Set, MUIA_PrefsEditor_Changed, TRUE ); @@ -1326,6 +1311,7 @@ IPTR NetPEditor__MUIM_NetPEditor_EditEntry { struct Interface iface; InitInterface(&iface); + iface.name[strlen(iface.name) - 1] += entries; SetUp(&iface, TRUE); // new entries are UP DoMethod ( @@ -1333,6 +1319,11 @@ IPTR NetPEditor__MUIM_NetPEditor_EditEntry MUIM_List_InsertSingle, &iface, MUIV_List_Insert_Bottom ); } + + /* Warn about DHCP limitations with more than one interface */ + if (entries == 1) + DisplayErrorMessage(self, MULTIPLE_IFACES); + SET(data->netped_interfaceList, MUIA_List_Active, entries + 1); } diff --git a/workbench/prefs/network/prefsdata.c b/workbench/prefs/network/prefsdata.c index 1a4855234e..90d48f0637 100644 --- a/workbench/prefs/network/prefsdata.c +++ b/workbench/prefs/network/prefsdata.c @@ -108,7 +108,7 @@ void SetDefaultWirelessPrefsValues() } SetNetworkCount(0); - SetWirelessAutostart(FALSE); + SetWirelessDevice(NULL); } void SetDefaultMobilePrefsValues() @@ -131,7 +131,7 @@ void SetDefaultMobilePrefsValues() void InitInterface(struct Interface *iface) { SetName(iface, DEFAULTNAME); - SetIfDHCP(iface, FALSE); + SetIfDHCP(iface, TRUE); SetIP(iface, DEFAULTIP); SetMask(iface, DEFAULTMASK); SetDevice(iface, DEFAULTDEVICE); @@ -264,12 +264,6 @@ BOOL WriteNetworkPrefs(CONST_STRPTR destdir) fprintf(ConfFile, "%s", (GetAutostart()) ? "True" : "False"); fclose(ConfFile); - CombinePath2P(filename, filenamelen, destdir, "WirelessAutoRun"); - ConfFile = fopen(filename, "w"); - if (!ConfFile) return FALSE; - fprintf(ConfFile, "%s", (GetWirelessAutostart()) ? "True" : "False"); - fclose(ConfFile); - CombinePath2P(filename, filenamelen, destdir, "MobileAutorun"); ConfFile = fopen(filename, "w"); if (!ConfFile) return FALSE; @@ -305,6 +299,12 @@ BOOL WriteNetworkPrefs(CONST_STRPTR destdir) GetMask(iface), (GetUp(iface) ? (CONST_STRPTR)"UP" : (CONST_STRPTR)"") ); + if (strstr(GetDevice(iface), "atheros5000.device") != NULL + || strstr(GetDevice(iface), "realtek8180.device") != NULL) + { + SetWirelessDevice(GetDevice(iface)); + SetWirelessUnit(GetUnit(iface)); + } } fclose(ConfFile); @@ -343,6 +343,22 @@ BOOL WriteNetworkPrefs(CONST_STRPTR destdir) } fclose(ConfFile); + CombinePath2P(filename, filenamelen, destdir, "WirelessAutoRun"); + ConfFile = fopen(filename, "w"); + if (!ConfFile) return FALSE; + fprintf(ConfFile, "%s", (GetWirelessDevice() != NULL) ? "True" : "False"); + fclose(ConfFile); + + if (GetWirelessDevice() != NULL) + { + CombinePath2P(filename, filenamelen, destdir, "WirelessDevice"); + ConfFile = fopen(filename, "w"); + if (!ConfFile) return FALSE; + fprintf(ConfFile, "%s UNIT %ld", GetWirelessDevice(), + (long int)GetWirelessUnit()); + fclose(ConfFile); + } + return TRUE; } @@ -567,6 +583,7 @@ BOOL StopWireless() BOOL StartWireless() { ULONG trycount = 0; + TEXT command[80]; /* Startup */ { @@ -579,7 +596,9 @@ BOOL StartWireless() { TAG_DONE, 0 } }; - SystemTagList("C:WirelessManager \"atheros5000.device\"", tags); + snprintf(command, 80, "C:WirelessManager \"%s\" UNIT %ld\n", + GetWirelessDevice(), (long int)GetWirelessUnit()); + SystemTagList(command, tags); } /* Check if startup successful */ @@ -713,7 +732,7 @@ enum ErrorCode UseNetworkPrefs() if (!WriteWirelessPrefs(WIRELESS_PATH_ENV)) return NOT_SAVED_PREFS_ENV; if (!WriteMobilePrefs(MOBILEBB_PATH_ENV)) return NOT_SAVED_PREFS_ENV; if(StopWireless()) - if (GetWirelessAutostart()) + if (GetWirelessDevice() != NULL) if (!StartWireless()) return NOT_RESTARTED_WIRELESS; if (!RestartStack()) return NOT_RESTARTED_STACK; if(StopMobile()) @@ -886,27 +905,6 @@ void ReadNetworkPrefs(CONST_STRPTR directory) } CloseTokenFile(&tok); - CombinePath2P(filename, filenamelen, directory, "WirelessAutorun"); - OpenTokenFile(&tok, filename); - while (!tok.fend) - { - GetNextToken(&tok, " \n"); - if (tok.token) - { - if (strncmp(tok.token, "True", 4) == 0) - { - SetWirelessAutostart(TRUE); - break; - } - else - { - SetWirelessAutostart(FALSE); - break; - } - } - } - CloseTokenFile(&tok); - CombinePath2P(filename, filenamelen, directory, "MobileAutorun"); OpenTokenFile(&tok, filename); while (!tok.fend) @@ -1357,9 +1355,14 @@ LONG GetNetworkCount(void) return prefs.networkCount; } -BOOL GetWirelessAutostart(void) +STRPTR GetWirelessDevice(void) +{ + return prefs.wirelessDevice; +} + +LONG GetWirelessUnit(void) { - return prefs.wirelessAutostart; + return prefs.wirelessUnit; } BOOL GetMobile_Autostart(void) @@ -1456,9 +1459,14 @@ void SetNetworkCount(LONG w) prefs.networkCount = w; } -void SetWirelessAutostart(BOOL w) +void SetWirelessDevice(STRPTR w) +{ + prefs.wirelessDevice = w; +} + +void SetWirelessUnit(LONG w) { - prefs.wirelessAutostart = w; + prefs.wirelessUnit = w; } void SetMobile_Autostart(BOOL w) diff --git a/workbench/prefs/network/prefsdata.h b/workbench/prefs/network/prefsdata.h index 72abfa006b..3d27a44b33 100644 --- a/workbench/prefs/network/prefsdata.h +++ b/workbench/prefs/network/prefsdata.h @@ -48,7 +48,8 @@ enum ErrorCode NOT_COPIED_FILES_ENVARC, NOT_RESTARTED_STACK, NOT_RESTARTED_WIRELESS, - NOT_RESTARTED_MOBILE + NOT_RESTARTED_MOBILE, + MULTIPLE_IFACES }; struct Interface @@ -96,7 +97,8 @@ struct TCPPrefs struct Network networks[MAXNETWORKS]; LONG networkCount; struct MobileBroadBand mobile; - BOOL wirelessAutostart; + STRPTR wirelessDevice; + LONG wirelessUnit; }; void InitNetworkPrefs(CONST_STRPTR directory, BOOL use, BOOL save); @@ -152,7 +154,8 @@ BOOL GetHidden(struct Network *net); BOOL GetAdHoc(struct Network *net); LONG GetNetworkCount(void); -BOOL GetWirelessAutostart(void); +STRPTR GetWirelessDevice(void); +LONG GetWirelessUnit(void); BOOL GetMobile_Autostart(void); STRPTR GetMobile_atcommand(ULONG i); @@ -175,7 +178,8 @@ void SetHidden(struct Network *net, BOOL w); void SetAdHoc(struct Network *net, BOOL w); void SetNetworkCount(LONG w); -void SetWirelessAutostart(BOOL w); +void SetWirelessDevice(STRPTR w); +void SetWirelessUnit(LONG w); void SetMobile_Autostart(BOOL w); void SetMobile_atcommand(ULONG i,STRPTR w); -- 2.11.4.GIT