summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/settings.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/settings.c b/src/core/settings.c
index 87d84a08..fe67d6b7 100644
--- a/src/core/settings.c
+++ b/src/core/settings.c
@@ -328,11 +328,20 @@ parse_settings_name ( const char *name,
/* Parse each name component in turn */
while ( remainder ) {
+ struct net_device *netdev;
+
subname = remainder;
remainder = strchr ( subname, '.' );
if ( remainder )
*(remainder++) = '\0';
- settings = get_child ( settings, subname );
+
+ /* Special case "netX" root settings block */
+ if ( ( subname == name_copy ) && ! strcmp ( subname, "netX" ) &&
+ ( ( netdev = last_opened_netdev() ) != NULL ) )
+ settings = get_child ( settings, netdev->name );
+ else
+ settings = get_child ( settings, subname );
+
if ( ! settings )
break;
}