s3-param use .offset rather than .ptr (renames)
authorAndrew Bartlett <abartlet@samba.org>
Wed, 29 Jun 2011 00:48:35 +0000 (10:48 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 29 Jun 2011 02:42:03 +0000 (04:42 +0200)
This commit uses GLOBAL_VAR and LOCAL_VAR macros to hide the use of .ptr
in the source3 loadparm code.

This will then be changed to use offsetof() in a future commit, removing
the #define offset ptr hack.

Andrew Bartlett

source3/param/loadparm.c

index a0a5e7474437743cad2f5766eda6b0b2c0e6a181..2bbffefb1579a59decf4dec76a7d024c0be5a978 100644 (file)
@@ -930,6 +930,10 @@ static const struct enum_list enum_kerberos_method[] = {
  *     name first, and all synonyms must follow it with the FLAG_HIDE attribute.
  */
 
+#define GLOBAL_VAR(name) &Globals.name
+#define LOCAL_VAR(name) &sDefault.name
+#define offset ptr
+
 static struct parm_struct parm_table[] = {
        {N_("Base Options"), P_SEP, P_SEPARATOR},
 
@@ -937,7 +941,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dos charset",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.dos_charset,
+               .offset         = GLOBAL_VAR(dos_charset),
                .special        = handle_dos_charset,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED
@@ -946,7 +950,7 @@ static struct parm_struct parm_table[] = {
                .label          = "unix charset",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.unix_charset,
+               .offset         = GLOBAL_VAR(unix_charset),
                .special        = handle_charset,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED
@@ -955,7 +959,7 @@ static struct parm_struct parm_table[] = {
                .label          = "comment",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.comment,
+               .offset         = LOCAL_VAR(comment),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT
@@ -964,7 +968,7 @@ static struct parm_struct parm_table[] = {
                .label          = "path",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPath,
+               .offset         = LOCAL_VAR(szPath),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -973,7 +977,7 @@ static struct parm_struct parm_table[] = {
                .label          = "directory",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPath,
+               .offset         = LOCAL_VAR(szPath),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -982,7 +986,7 @@ static struct parm_struct parm_table[] = {
                .label          = "workgroup",
                .type           = P_USTRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWorkgroup,
+               .offset         = GLOBAL_VAR(szWorkgroup),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -991,7 +995,7 @@ static struct parm_struct parm_table[] = {
                .label          = "realm",
                .type           = P_USTRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRealm,
+               .offset         = GLOBAL_VAR(szRealm),
                .special        = handle_realm,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -1000,7 +1004,7 @@ static struct parm_struct parm_table[] = {
                .label          = "netbios name",
                .type           = P_USTRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szNetbiosName,
+               .offset         = GLOBAL_VAR(szNetbiosName),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -1009,7 +1013,7 @@ static struct parm_struct parm_table[] = {
                .label          = "netbios aliases",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szNetbiosAliases,
+               .offset         = GLOBAL_VAR(szNetbiosAliases),
                .special        = handle_netbios_aliases,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1018,7 +1022,7 @@ static struct parm_struct parm_table[] = {
                .label          = "netbios scope",
                .type           = P_USTRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szNetbiosScope,
+               .offset         = GLOBAL_VAR(szNetbiosScope),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1027,7 +1031,7 @@ static struct parm_struct parm_table[] = {
                .label          = "server string",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szServerString,
+               .offset         = GLOBAL_VAR(szServerString),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -1036,7 +1040,7 @@ static struct parm_struct parm_table[] = {
                .label          = "interfaces",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szInterfaces,
+               .offset         = GLOBAL_VAR(szInterfaces),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -1045,7 +1049,7 @@ static struct parm_struct parm_table[] = {
                .label          = "bind interfaces only",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bBindInterfacesOnly,
+               .offset         = GLOBAL_VAR(bBindInterfacesOnly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_WIZARD,
@@ -1054,7 +1058,7 @@ static struct parm_struct parm_table[] = {
                .label          = "config backend",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ConfigBackend,
+               .offset         = GLOBAL_VAR(ConfigBackend),
                .special        = NULL,
                .enum_list      = enum_config_backend,
                .flags          = FLAG_HIDE|FLAG_ADVANCED|FLAG_META,
@@ -1066,7 +1070,7 @@ static struct parm_struct parm_table[] = {
                .label          = "security",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.security,
+               .offset         = GLOBAL_VAR(security),
                .special        = NULL,
                .enum_list      = enum_security,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -1075,7 +1079,7 @@ static struct parm_struct parm_table[] = {
                .label          = "auth methods",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.AuthMethods,
+               .offset         = GLOBAL_VAR(AuthMethods),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1084,7 +1088,7 @@ static struct parm_struct parm_table[] = {
                .label          = "encrypt passwords",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bEncryptPasswords,
+               .offset         = GLOBAL_VAR(bEncryptPasswords),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -1093,7 +1097,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client schannel",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.clientSchannel,
+               .offset         = GLOBAL_VAR(clientSchannel),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -1102,7 +1106,7 @@ static struct parm_struct parm_table[] = {
                .label          = "server schannel",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.serverSchannel,
+               .offset         = GLOBAL_VAR(serverSchannel),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -1111,7 +1115,7 @@ static struct parm_struct parm_table[] = {
                .label          = "allow trusted domains",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bAllowTrustedDomains,
+               .offset         = GLOBAL_VAR(bAllowTrustedDomains),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1120,7 +1124,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map to guest",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.map_to_guest,
+               .offset         = GLOBAL_VAR(map_to_guest),
                .special        = NULL,
                .enum_list      = enum_map_to_guest,
                .flags          = FLAG_ADVANCED,
@@ -1129,7 +1133,7 @@ static struct parm_struct parm_table[] = {
                .label          = "null passwords",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNullPasswords,
+               .offset         = GLOBAL_VAR(bNullPasswords),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -1138,7 +1142,7 @@ static struct parm_struct parm_table[] = {
                .label          = "obey pam restrictions",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bObeyPamRestrictions,
+               .offset         = GLOBAL_VAR(bObeyPamRestrictions),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1147,7 +1151,7 @@ static struct parm_struct parm_table[] = {
                .label          = "password server",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPasswordServer,
+               .offset         = GLOBAL_VAR(szPasswordServer),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_WIZARD,
@@ -1156,7 +1160,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb passwd file",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSMBPasswdFile,
+               .offset         = GLOBAL_VAR(szSMBPasswdFile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1165,7 +1169,7 @@ static struct parm_struct parm_table[] = {
                .label          = "private dir",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPrivateDir,
+               .offset         = GLOBAL_VAR(szPrivateDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1174,7 +1178,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passdb backend",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPassdbBackend,
+               .offset         = GLOBAL_VAR(szPassdbBackend),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_WIZARD,
@@ -1183,7 +1187,7 @@ static struct parm_struct parm_table[] = {
                .label          = "algorithmic rid base",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.AlgorithmicRidBase,
+               .offset         = GLOBAL_VAR(AlgorithmicRidBase),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1192,7 +1196,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRootdir,
+               .offset         = GLOBAL_VAR(szRootdir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1201,7 +1205,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root dir",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRootdir,
+               .offset         = GLOBAL_VAR(szRootdir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1210,7 +1214,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRootdir,
+               .offset         = GLOBAL_VAR(szRootdir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1219,7 +1223,7 @@ static struct parm_struct parm_table[] = {
                .label          = "guest account",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szGuestaccount,
+               .offset         = GLOBAL_VAR(szGuestaccount),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -1228,7 +1232,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enable privileges",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bEnablePrivileges,
+               .offset         = GLOBAL_VAR(bEnablePrivileges),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -1238,7 +1242,7 @@ static struct parm_struct parm_table[] = {
                .label          = "pam password change",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bPamPasswordChange,
+               .offset         = GLOBAL_VAR(bPamPasswordChange),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1247,7 +1251,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passwd program",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPasswdProgram,
+               .offset         = GLOBAL_VAR(szPasswdProgram),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1256,7 +1260,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passwd chat",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPasswdChat,
+               .offset         = GLOBAL_VAR(szPasswdChat),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1265,7 +1269,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passwd chat debug",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bPasswdChatDebug,
+               .offset         = GLOBAL_VAR(bPasswdChatDebug),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1274,7 +1278,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passwd chat timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iPasswdChatTimeout,
+               .offset         = GLOBAL_VAR(iPasswdChatTimeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1283,7 +1287,7 @@ static struct parm_struct parm_table[] = {
                .label          = "check password script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szCheckPasswordScript,
+               .offset         = GLOBAL_VAR(szCheckPasswordScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1292,7 +1296,7 @@ static struct parm_struct parm_table[] = {
                .label          = "username map",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsernameMap,
+               .offset         = GLOBAL_VAR(szUsernameMap),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1301,7 +1305,7 @@ static struct parm_struct parm_table[] = {
                .label          = "password level",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.pwordlevel,
+               .offset         = GLOBAL_VAR(pwordlevel),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -1310,7 +1314,7 @@ static struct parm_struct parm_table[] = {
                .label          = "username level",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.unamelevel,
+               .offset         = GLOBAL_VAR(unamelevel),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1319,7 +1323,7 @@ static struct parm_struct parm_table[] = {
                .label          = "unix password sync",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUnixPasswdSync,
+               .offset         = GLOBAL_VAR(bUnixPasswdSync),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1328,7 +1332,7 @@ static struct parm_struct parm_table[] = {
                .label          = "restrict anonymous",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.restrict_anonymous,
+               .offset         = GLOBAL_VAR(restrict_anonymous),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1337,7 +1341,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lanman auth",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bLanmanAuth,
+               .offset         = GLOBAL_VAR(bLanmanAuth),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1346,7 +1350,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ntlm auth",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNTLMAuth,
+               .offset         = GLOBAL_VAR(bNTLMAuth),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1355,7 +1359,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client NTLMv2 auth",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bClientNTLMv2Auth,
+               .offset         = GLOBAL_VAR(bClientNTLMv2Auth),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1364,7 +1368,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client lanman auth",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bClientLanManAuth,
+               .offset         = GLOBAL_VAR(bClientLanManAuth),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1373,7 +1377,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client plaintext auth",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bClientPlaintextAuth,
+               .offset         = GLOBAL_VAR(bClientPlaintextAuth),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1382,7 +1386,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client use spnego principal",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.client_use_spnego_principal,
+               .offset         = GLOBAL_VAR(client_use_spnego_principal),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1391,7 +1395,7 @@ static struct parm_struct parm_table[] = {
                .label          = "send spnego principal",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.send_spnego_principal,
+               .offset         = GLOBAL_VAR(send_spnego_principal),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1400,7 +1404,7 @@ static struct parm_struct parm_table[] = {
                .label          = "username",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szUsername,
+               .offset         = LOCAL_VAR(szUsername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE | FLAG_DEPRECATED,
@@ -1409,7 +1413,7 @@ static struct parm_struct parm_table[] = {
                .label          = "user",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szUsername,
+               .offset         = LOCAL_VAR(szUsername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1418,7 +1422,7 @@ static struct parm_struct parm_table[] = {
                .label          = "users",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szUsername,
+               .offset         = LOCAL_VAR(szUsername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1427,7 +1431,7 @@ static struct parm_struct parm_table[] = {
                .label          = "invalid users",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szInvalidUsers,
+               .offset         = LOCAL_VAR(szInvalidUsers),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1436,7 +1440,7 @@ static struct parm_struct parm_table[] = {
                .label          = "valid users",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szValidUsers,
+               .offset         = LOCAL_VAR(szValidUsers),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1445,7 +1449,7 @@ static struct parm_struct parm_table[] = {
                .label          = "admin users",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szAdminUsers,
+               .offset         = LOCAL_VAR(szAdminUsers),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1454,7 +1458,7 @@ static struct parm_struct parm_table[] = {
                .label          = "read list",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.readlist,
+               .offset         = LOCAL_VAR(readlist),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1463,7 +1467,7 @@ static struct parm_struct parm_table[] = {
                .label          = "write list",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.writelist,
+               .offset         = LOCAL_VAR(writelist),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1472,7 +1476,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printer admin",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.printer_admin,
+               .offset         = LOCAL_VAR(printer_admin),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_PRINT | FLAG_DEPRECATED,
@@ -1481,7 +1485,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force user",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.force_user,
+               .offset         = LOCAL_VAR(force_user),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1490,7 +1494,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force group",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.force_group,
+               .offset         = LOCAL_VAR(force_group),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1499,7 +1503,7 @@ static struct parm_struct parm_table[] = {
                .label          = "group",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.force_group,
+               .offset         = LOCAL_VAR(force_group),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1508,7 +1512,7 @@ static struct parm_struct parm_table[] = {
                .label          = "read only",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bRead_only,
+               .offset         = LOCAL_VAR(bRead_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE,
@@ -1517,7 +1521,7 @@ static struct parm_struct parm_table[] = {
                .label          = "write ok",
                .type           = P_BOOLREV,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bRead_only,
+               .offset         = LOCAL_VAR(bRead_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1526,7 +1530,7 @@ static struct parm_struct parm_table[] = {
                .label          = "writeable",
                .type           = P_BOOLREV,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bRead_only,
+               .offset         = LOCAL_VAR(bRead_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1535,7 +1539,7 @@ static struct parm_struct parm_table[] = {
                .label          = "writable",
                .type           = P_BOOLREV,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bRead_only,
+               .offset         = LOCAL_VAR(bRead_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1544,7 +1548,7 @@ static struct parm_struct parm_table[] = {
                .label          = "acl check permissions",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAclCheckPermissions,
+               .offset         = LOCAL_VAR(bAclCheckPermissions),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1553,7 +1557,7 @@ static struct parm_struct parm_table[] = {
                .label          = "acl group control",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAclGroupControl,
+               .offset         = LOCAL_VAR(bAclGroupControl),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1562,7 +1566,7 @@ static struct parm_struct parm_table[] = {
                .label          = "acl map full control",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAclMapFullControl,
+               .offset         = LOCAL_VAR(bAclMapFullControl),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1571,7 +1575,7 @@ static struct parm_struct parm_table[] = {
                .label          = "create mask",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCreate_mask,
+               .offset         = LOCAL_VAR(iCreate_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1580,7 +1584,7 @@ static struct parm_struct parm_table[] = {
                .label          = "create mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCreate_mask,
+               .offset         = LOCAL_VAR(iCreate_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1589,7 +1593,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force create mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCreate_force_mode,
+               .offset         = LOCAL_VAR(iCreate_force_mode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1598,7 +1602,7 @@ static struct parm_struct parm_table[] = {
                .label          = "security mask",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iSecurity_mask,
+               .offset         = LOCAL_VAR(iSecurity_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1607,7 +1611,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force security mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iSecurity_force_mode,
+               .offset         = LOCAL_VAR(iSecurity_force_mode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1616,7 +1620,7 @@ static struct parm_struct parm_table[] = {
                .label          = "directory mask",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDir_mask,
+               .offset         = LOCAL_VAR(iDir_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1625,7 +1629,7 @@ static struct parm_struct parm_table[] = {
                .label          = "directory mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDir_mask,
+               .offset         = LOCAL_VAR(iDir_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -1634,7 +1638,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force directory mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDir_force_mode,
+               .offset         = LOCAL_VAR(iDir_force_mode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1643,7 +1647,7 @@ static struct parm_struct parm_table[] = {
                .label          = "directory security mask",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDir_Security_mask,
+               .offset         = LOCAL_VAR(iDir_Security_mask),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1652,7 +1656,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force directory security mode",
                .type           = P_OCTAL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDir_Security_force_mode,
+               .offset         = LOCAL_VAR(iDir_Security_force_mode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1661,7 +1665,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force unknown acl user",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bForceUnknownAclUser,
+               .offset         = LOCAL_VAR(bForceUnknownAclUser),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -1670,7 +1674,7 @@ static struct parm_struct parm_table[] = {
                .label          = "inherit permissions",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bInheritPerms,
+               .offset         = LOCAL_VAR(bInheritPerms),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1679,7 +1683,7 @@ static struct parm_struct parm_table[] = {
                .label          = "inherit acls",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bInheritACLS,
+               .offset         = LOCAL_VAR(bInheritACLS),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1688,7 +1692,7 @@ static struct parm_struct parm_table[] = {
                .label          = "inherit owner",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bInheritOwner,
+               .offset         = LOCAL_VAR(bInheritOwner),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1697,7 +1701,7 @@ static struct parm_struct parm_table[] = {
                .label          = "guest only",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bGuest_only,
+               .offset         = LOCAL_VAR(bGuest_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -1706,7 +1710,7 @@ static struct parm_struct parm_table[] = {
                .label          = "only guest",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bGuest_only,
+               .offset         = LOCAL_VAR(bGuest_only),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1715,7 +1719,7 @@ static struct parm_struct parm_table[] = {
                .label          = "administrative share",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAdministrative_share,
+               .offset         = LOCAL_VAR(bAdministrative_share),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -1725,7 +1729,7 @@ static struct parm_struct parm_table[] = {
                .label          = "guest ok",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bGuest_ok,
+               .offset         = LOCAL_VAR(bGuest_ok),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -1734,7 +1738,7 @@ static struct parm_struct parm_table[] = {
                .label          = "public",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bGuest_ok,
+               .offset         = LOCAL_VAR(bGuest_ok),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1743,7 +1747,7 @@ static struct parm_struct parm_table[] = {
                .label          = "only user",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bOnlyUser,
+               .offset         = LOCAL_VAR(bOnlyUser),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_DEPRECATED,
@@ -1752,7 +1756,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hosts allow",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szHostsallow,
+               .offset         = LOCAL_VAR(szHostsallow),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -1761,7 +1765,7 @@ static struct parm_struct parm_table[] = {
                .label          = "allow hosts",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szHostsallow,
+               .offset         = LOCAL_VAR(szHostsallow),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1770,7 +1774,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hosts deny",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szHostsdeny,
+               .offset         = LOCAL_VAR(szHostsdeny),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -1779,7 +1783,7 @@ static struct parm_struct parm_table[] = {
                .label          = "deny hosts",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szHostsdeny,
+               .offset         = LOCAL_VAR(szHostsdeny),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1788,7 +1792,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preload modules",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPreloadModules,
+               .offset         = GLOBAL_VAR(szPreloadModules),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -1797,7 +1801,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dedicated keytab file",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDedicatedKeytabFile,
+               .offset         = GLOBAL_VAR(szDedicatedKeytabFile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1806,7 +1810,7 @@ static struct parm_struct parm_table[] = {
                .label          = "kerberos method",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iKerberosMethod,
+               .offset         = GLOBAL_VAR(iKerberosMethod),
                .special        = NULL,
                .enum_list      = enum_kerberos_method,
                .flags          = FLAG_ADVANCED,
@@ -1815,7 +1819,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map untrusted to domain",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bMapUntrustedToDomain,
+               .offset         = GLOBAL_VAR(bMapUntrustedToDomain),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -1828,7 +1832,7 @@ static struct parm_struct parm_table[] = {
                .label          = "log level",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogLevel,
+               .offset         = GLOBAL_VAR(szLogLevel),
                .special        = handle_debug_list,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1837,7 +1841,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debuglevel",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogLevel,
+               .offset         = GLOBAL_VAR(szLogLevel),
                .special        = handle_debug_list,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -1846,7 +1850,7 @@ static struct parm_struct parm_table[] = {
                .label          = "syslog",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.syslog,
+               .offset         = GLOBAL_VAR(syslog),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1855,7 +1859,7 @@ static struct parm_struct parm_table[] = {
                .label          = "syslog only",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bSyslogOnly,
+               .offset         = GLOBAL_VAR(bSyslogOnly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1864,7 +1868,7 @@ static struct parm_struct parm_table[] = {
                .label          = "log file",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogFile,
+               .offset         = GLOBAL_VAR(szLogFile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1873,7 +1877,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max log size",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_log_size,
+               .offset         = GLOBAL_VAR(max_log_size),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1882,7 +1886,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug timestamp",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bTimestampLogs,
+               .offset         = GLOBAL_VAR(bTimestampLogs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1891,7 +1895,7 @@ static struct parm_struct parm_table[] = {
                .label          = "timestamp logs",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bTimestampLogs,
+               .offset         = GLOBAL_VAR(bTimestampLogs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1900,7 +1904,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug prefix timestamp",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDebugPrefixTimestamp,
+               .offset         = GLOBAL_VAR(bDebugPrefixTimestamp),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1909,7 +1913,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug hires timestamp",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDebugHiresTimestamp,
+               .offset         = GLOBAL_VAR(bDebugHiresTimestamp),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1918,7 +1922,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug pid",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDebugPid,
+               .offset         = GLOBAL_VAR(bDebugPid),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1927,7 +1931,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug uid",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDebugUid,
+               .offset         = GLOBAL_VAR(bDebugUid),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1936,7 +1940,7 @@ static struct parm_struct parm_table[] = {
                .label          = "debug class",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDebugClass,
+               .offset         = GLOBAL_VAR(bDebugClass),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1945,7 +1949,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enable core files",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bEnableCoreFiles,
+               .offset         = GLOBAL_VAR(bEnableCoreFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1957,7 +1961,7 @@ static struct parm_struct parm_table[] = {
                .label          = "allocation roundup size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iallocation_roundup_size,
+               .offset         = LOCAL_VAR(iallocation_roundup_size),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1966,7 +1970,7 @@ static struct parm_struct parm_table[] = {
                .label          = "aio read size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iAioReadSize,
+               .offset         = LOCAL_VAR(iAioReadSize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1975,7 +1979,7 @@ static struct parm_struct parm_table[] = {
                .label          = "aio write size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iAioWriteSize,
+               .offset         = LOCAL_VAR(iAioWriteSize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -1984,7 +1988,7 @@ static struct parm_struct parm_table[] = {
                .label          = "aio write behind",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szAioWriteBehind,
+               .offset         = LOCAL_VAR(szAioWriteBehind),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -1993,7 +1997,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb ports",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.smb_ports,
+               .offset         = GLOBAL_VAR(smb_ports),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2002,7 +2006,7 @@ static struct parm_struct parm_table[] = {
                .label          = "large readwrite",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bLargeReadwrite,
+               .offset         = GLOBAL_VAR(bLargeReadwrite),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2011,7 +2015,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max protocol",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.maxprotocol,
+               .offset         = GLOBAL_VAR(maxprotocol),
                .special        = NULL,
                .enum_list      = enum_protocol,
                .flags          = FLAG_ADVANCED,
@@ -2020,7 +2024,7 @@ static struct parm_struct parm_table[] = {
                .label          = "protocol",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.maxprotocol,
+               .offset         = GLOBAL_VAR(maxprotocol),
                .special        = NULL,
                .enum_list      = enum_protocol,
                .flags          = FLAG_ADVANCED,
@@ -2029,7 +2033,7 @@ static struct parm_struct parm_table[] = {
                .label          = "min protocol",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.minprotocol,
+               .offset         = GLOBAL_VAR(minprotocol),
                .special        = NULL,
                .enum_list      = enum_protocol,
                .flags          = FLAG_ADVANCED,
@@ -2038,7 +2042,7 @@ static struct parm_struct parm_table[] = {
                .label          = "min receivefile size",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iminreceivefile,
+               .offset         = GLOBAL_VAR(iminreceivefile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2047,7 +2051,7 @@ static struct parm_struct parm_table[] = {
                .label          = "read raw",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bReadRaw,
+               .offset         = GLOBAL_VAR(bReadRaw),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2056,7 +2060,7 @@ static struct parm_struct parm_table[] = {
                .label          = "write raw",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWriteRaw,
+               .offset         = GLOBAL_VAR(bWriteRaw),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2065,7 +2069,7 @@ static struct parm_struct parm_table[] = {
                .label          = "disable netbios",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDisableNetbios,
+               .offset         = GLOBAL_VAR(bDisableNetbios),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2074,7 +2078,7 @@ static struct parm_struct parm_table[] = {
                .label          = "reset on zero vc",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bResetOnZeroVC,
+               .offset         = GLOBAL_VAR(bResetOnZeroVC),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2083,7 +2087,7 @@ static struct parm_struct parm_table[] = {
                .label          = "log writeable files on exit",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bLogWriteableFilesOnExit,
+               .offset         = GLOBAL_VAR(bLogWriteableFilesOnExit),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2092,7 +2096,7 @@ static struct parm_struct parm_table[] = {
                .label          = "acl compatibility",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iAclCompat,
+               .offset         = GLOBAL_VAR(iAclCompat),
                .special        = NULL,
                .enum_list      = enum_acl_compat_vals,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2101,7 +2105,7 @@ static struct parm_struct parm_table[] = {
                .label          = "defer sharing violations",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDeferSharingViolations,
+               .offset         = GLOBAL_VAR(bDeferSharingViolations),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2110,7 +2114,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ea support",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bEASupport,
+               .offset         = LOCAL_VAR(bEASupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2119,7 +2123,7 @@ static struct parm_struct parm_table[] = {
                .label          = "nt acl support",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bNTAclSupport,
+               .offset         = LOCAL_VAR(bNTAclSupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2128,7 +2132,7 @@ static struct parm_struct parm_table[] = {
                .label          = "nt pipe support",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNTPipeSupport,
+               .offset         = GLOBAL_VAR(bNTPipeSupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2137,7 +2141,7 @@ static struct parm_struct parm_table[] = {
                .label          = "nt status support",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNTStatusSupport,
+               .offset         = GLOBAL_VAR(bNTStatusSupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2146,7 +2150,7 @@ static struct parm_struct parm_table[] = {
                .label          = "profile acls",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bProfileAcls,
+               .offset         = LOCAL_VAR(bProfileAcls),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -2155,7 +2159,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map acl inherit",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMap_acl_inherit,
+               .offset         = LOCAL_VAR(bMap_acl_inherit),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2164,7 +2168,7 @@ static struct parm_struct parm_table[] = {
                .label          = "afs share",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAfs_Share,
+               .offset         = LOCAL_VAR(bAfs_Share),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2173,7 +2177,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max mux",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_mux,
+               .offset         = GLOBAL_VAR(max_mux),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2182,7 +2186,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max xmit",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_xmit,
+               .offset         = GLOBAL_VAR(max_xmit),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2191,7 +2195,7 @@ static struct parm_struct parm_table[] = {
                .label          = "name resolve order",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szNameResolveOrder,
+               .offset         = GLOBAL_VAR(szNameResolveOrder),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_WIZARD,
@@ -2200,7 +2204,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max ttl",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_ttl,
+               .offset         = GLOBAL_VAR(max_ttl),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2209,7 +2213,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max wins ttl",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_wins_ttl,
+               .offset         = GLOBAL_VAR(max_wins_ttl),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2218,7 +2222,7 @@ static struct parm_struct parm_table[] = {
                .label          = "min wins ttl",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.min_wins_ttl,
+               .offset         = GLOBAL_VAR(min_wins_ttl),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2227,7 +2231,7 @@ static struct parm_struct parm_table[] = {
                .label          = "time server",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bTimeServer,
+               .offset         = GLOBAL_VAR(bTimeServer),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2236,7 +2240,7 @@ static struct parm_struct parm_table[] = {
                .label          = "unix extensions",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUnixExtensions,
+               .offset         = GLOBAL_VAR(bUnixExtensions),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2245,7 +2249,7 @@ static struct parm_struct parm_table[] = {
                .label          = "use spnego",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUseSpnego,
+               .offset         = GLOBAL_VAR(bUseSpnego),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -2254,7 +2258,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client signing",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.client_signing,
+               .offset         = GLOBAL_VAR(client_signing),
                .special        = NULL,
                .enum_list      = enum_smb_signing_vals,
                .flags          = FLAG_ADVANCED,
@@ -2263,7 +2267,7 @@ static struct parm_struct parm_table[] = {
                .label          = "server signing",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.server_signing,
+               .offset         = GLOBAL_VAR(server_signing),
                .special        = NULL,
                .enum_list      = enum_smb_signing_vals,
                .flags          = FLAG_ADVANCED,
@@ -2272,7 +2276,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb encrypt",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.ismb_encrypt,
+               .offset         = LOCAL_VAR(ismb_encrypt),
                .special        = NULL,
                .enum_list      = enum_smb_signing_vals,
                .flags          = FLAG_ADVANCED,
@@ -2281,7 +2285,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client use spnego",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bClientUseSpnego,
+               .offset         = GLOBAL_VAR(bClientUseSpnego),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2290,7 +2294,7 @@ static struct parm_struct parm_table[] = {
                .label          = "client ldap sasl wrapping",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.client_ldap_sasl_wrapping,
+               .offset         = GLOBAL_VAR(client_ldap_sasl_wrapping),
                .special        = NULL,
                .enum_list      = enum_ldap_sasl_wrapping,
                .flags          = FLAG_ADVANCED,
@@ -2299,7 +2303,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enable asu support",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bASUSupport,
+               .offset         = GLOBAL_VAR(bASUSupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2308,7 +2312,7 @@ static struct parm_struct parm_table[] = {
                .label          = "svcctl list",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szServicesList,
+               .offset         = GLOBAL_VAR(szServicesList),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2320,7 +2324,7 @@ static struct parm_struct parm_table[] = {
                .label          = "block size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iBlock_size,
+               .offset         = LOCAL_VAR(iBlock_size),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2329,7 +2333,7 @@ static struct parm_struct parm_table[] = {
                .label          = "deadtime",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.deadtime,
+               .offset         = GLOBAL_VAR(deadtime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2338,7 +2342,7 @@ static struct parm_struct parm_table[] = {
                .label          = "getwd cache",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.getwd_cache,
+               .offset         = GLOBAL_VAR(getwd_cache),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2347,7 +2351,7 @@ static struct parm_struct parm_table[] = {
                .label          = "keepalive",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iKeepalive,
+               .offset         = GLOBAL_VAR(iKeepalive),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2356,7 +2360,7 @@ static struct parm_struct parm_table[] = {
                .label          = "change notify",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bChangeNotify,
+               .offset         = LOCAL_VAR(bChangeNotify),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2365,7 +2369,7 @@ static struct parm_struct parm_table[] = {
                .label          = "directory name cache size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDirectoryNameCacheSize,
+               .offset         = LOCAL_VAR(iDirectoryNameCacheSize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2374,7 +2378,7 @@ static struct parm_struct parm_table[] = {
                .label          = "kernel change notify",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bKernelChangeNotify,
+               .offset         = LOCAL_VAR(bKernelChangeNotify),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2383,7 +2387,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lpq cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.lpqcachetime,
+               .offset         = GLOBAL_VAR(lpqcachetime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2392,7 +2396,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max smbd processes",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iMaxSmbdProcesses,
+               .offset         = GLOBAL_VAR(iMaxSmbdProcesses),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2401,7 +2405,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max connections",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iMaxConnections,
+               .offset         = LOCAL_VAR(iMaxConnections),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2410,7 +2414,7 @@ static struct parm_struct parm_table[] = {
                .label          = "paranoid server security",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.paranoid_server_security,
+               .offset         = GLOBAL_VAR(paranoid_server_security),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2419,7 +2423,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max disk size",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.maxdisksize,
+               .offset         = GLOBAL_VAR(maxdisksize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2428,7 +2432,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max open files",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.max_open_files,
+               .offset         = GLOBAL_VAR(max_open_files),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2437,7 +2441,7 @@ static struct parm_struct parm_table[] = {
                .label          = "min print space",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iMinPrintSpace,
+               .offset         = LOCAL_VAR(iMinPrintSpace),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2446,7 +2450,7 @@ static struct parm_struct parm_table[] = {
                .label          = "socket options",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSocketOptions,
+               .offset         = GLOBAL_VAR(szSocketOptions),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2455,7 +2459,7 @@ static struct parm_struct parm_table[] = {
                .label          = "strict allocate",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bStrictAllocate,
+               .offset         = LOCAL_VAR(bStrictAllocate),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2464,7 +2468,7 @@ static struct parm_struct parm_table[] = {
                .label          = "strict sync",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bStrictSync,
+               .offset         = LOCAL_VAR(bStrictSync),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2473,7 +2477,7 @@ static struct parm_struct parm_table[] = {
                .label          = "sync always",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bSyncAlways,
+               .offset         = LOCAL_VAR(bSyncAlways),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2482,7 +2486,7 @@ static struct parm_struct parm_table[] = {
                .label          = "use mmap",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUseMmap,
+               .offset         = GLOBAL_VAR(bUseMmap),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2491,7 +2495,7 @@ static struct parm_struct parm_table[] = {
                .label          = "use sendfile",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bUseSendfile,
+               .offset         = LOCAL_VAR(bUseSendfile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2500,7 +2504,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hostname lookups",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bHostnameLookups,
+               .offset         = GLOBAL_VAR(bHostnameLookups),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2509,7 +2513,7 @@ static struct parm_struct parm_table[] = {
                .label          = "write cache size",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iWriteCacheSize,
+               .offset         = LOCAL_VAR(iWriteCacheSize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2518,7 +2522,7 @@ static struct parm_struct parm_table[] = {
                .label          = "name cache timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.name_cache_timeout,
+               .offset         = GLOBAL_VAR(name_cache_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2527,7 +2531,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ctdbd socket",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ctdbdSocket,
+               .offset         = GLOBAL_VAR(ctdbdSocket),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2536,7 +2540,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cluster addresses",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szClusterAddresses,
+               .offset         = GLOBAL_VAR(szClusterAddresses),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2545,7 +2549,7 @@ static struct parm_struct parm_table[] = {
                .label          = "clustering",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.clustering,
+               .offset         = GLOBAL_VAR(clustering),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2554,7 +2558,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ctdb timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ctdb_timeout,
+               .offset         = GLOBAL_VAR(ctdb_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2563,7 +2567,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ctdb locktime warn threshold",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ctdb_locktime_warn_threshold,
+               .offset         = GLOBAL_VAR(ctdb_locktime_warn_threshold),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -2572,7 +2576,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb2 max read",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ismb2_max_read,
+               .offset         = GLOBAL_VAR(ismb2_max_read),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2581,7 +2585,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb2 max write",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ismb2_max_write,
+               .offset         = GLOBAL_VAR(ismb2_max_write),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2590,7 +2594,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb2 max trans",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ismb2_max_trans,
+               .offset         = GLOBAL_VAR(ismb2_max_trans),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2599,7 +2603,7 @@ static struct parm_struct parm_table[] = {
                .label          = "smb2 max credits",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ismb2_max_credits,
+               .offset         = GLOBAL_VAR(ismb2_max_credits),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2611,7 +2615,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max reported print jobs",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iMaxReportedPrintJobs,
+               .offset         = LOCAL_VAR(iMaxReportedPrintJobs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2620,7 +2624,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max print jobs",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iMaxPrintJobs,
+               .offset         = LOCAL_VAR(iMaxPrintJobs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2629,7 +2633,7 @@ static struct parm_struct parm_table[] = {
                .label          = "load printers",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bLoadPrinters,
+               .offset         = GLOBAL_VAR(bLoadPrinters),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2638,7 +2642,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printcap cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.PrintcapCacheTime,
+               .offset         = GLOBAL_VAR(PrintcapCacheTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2647,7 +2651,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printcap name",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPrintcapname,
+               .offset         = GLOBAL_VAR(szPrintcapname),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2656,7 +2660,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printcap",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPrintcapname,
+               .offset         = GLOBAL_VAR(szPrintcapname),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -2665,7 +2669,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printable",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bPrint_ok,
+               .offset         = LOCAL_VAR(bPrint_ok),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2674,7 +2678,7 @@ static struct parm_struct parm_table[] = {
                .label          = "print notify backchannel",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bPrintNotifyBackchannel,
+               .offset         = LOCAL_VAR(bPrintNotifyBackchannel),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2683,7 +2687,7 @@ static struct parm_struct parm_table[] = {
                .label          = "print ok",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bPrint_ok,
+               .offset         = LOCAL_VAR(bPrint_ok),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -2692,7 +2696,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printing",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iPrinting,
+               .offset         = LOCAL_VAR(iPrinting),
                .special        = handle_printing,
                .enum_list      = enum_printing,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2701,7 +2705,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cups options",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szCupsOptions,
+               .offset         = LOCAL_VAR(szCupsOptions),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2710,7 +2714,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cups server",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szCupsServer,
+               .offset         = GLOBAL_VAR(szCupsServer),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2719,7 +2723,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cups encrypt",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.CupsEncrypt,
+               .offset            = GLOBAL_VAR(CupsEncrypt),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2729,7 +2733,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cups connection timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.cups_connection_timeout,
+               .offset         = GLOBAL_VAR(cups_connection_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2738,7 +2742,7 @@ static struct parm_struct parm_table[] = {
                .label          = "iprint server",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIPrintServer,
+               .offset         = GLOBAL_VAR(szIPrintServer),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2747,7 +2751,7 @@ static struct parm_struct parm_table[] = {
                .label          = "print command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPrintcommand,
+               .offset         = LOCAL_VAR(szPrintcommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2756,7 +2760,7 @@ static struct parm_struct parm_table[] = {
                .label          = "disable spoolss",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDisableSpoolss,
+               .offset         = GLOBAL_VAR(bDisableSpoolss),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2765,7 +2769,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enable spoolss",
                .type           = P_BOOLREV,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDisableSpoolss,
+               .offset         = GLOBAL_VAR(bDisableSpoolss),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -2774,7 +2778,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lpq command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szLpqcommand,
+               .offset         = LOCAL_VAR(szLpqcommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2783,7 +2787,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lprm command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szLprmcommand,
+               .offset         = LOCAL_VAR(szLprmcommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2792,7 +2796,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lppause command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szLppausecommand,
+               .offset         = LOCAL_VAR(szLppausecommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2801,7 +2805,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lpresume command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szLpresumecommand,
+               .offset         = LOCAL_VAR(szLpresumecommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2810,7 +2814,7 @@ static struct parm_struct parm_table[] = {
                .label          = "queuepause command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szQueuepausecommand,
+               .offset         = LOCAL_VAR(szQueuepausecommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2819,7 +2823,7 @@ static struct parm_struct parm_table[] = {
                .label          = "queueresume command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szQueueresumecommand,
+               .offset         = LOCAL_VAR(szQueueresumecommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT | FLAG_GLOBAL,
@@ -2828,7 +2832,7 @@ static struct parm_struct parm_table[] = {
                .label          = "addport command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddPortCommand,
+               .offset         = GLOBAL_VAR(szAddPortCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2837,7 +2841,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enumports command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szEnumPortsCommand,
+               .offset         = GLOBAL_VAR(szEnumPortsCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2846,7 +2850,7 @@ static struct parm_struct parm_table[] = {
                .label          = "addprinter command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddPrinterCommand,
+               .offset         = GLOBAL_VAR(szAddPrinterCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2855,7 +2859,7 @@ static struct parm_struct parm_table[] = {
                .label          = "deleteprinter command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDeletePrinterCommand,
+               .offset         = GLOBAL_VAR(szDeletePrinterCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2864,7 +2868,7 @@ static struct parm_struct parm_table[] = {
                .label          = "show add printer wizard",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bMsAddPrinterWizard,
+               .offset         = GLOBAL_VAR(bMsAddPrinterWizard),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2873,7 +2877,7 @@ static struct parm_struct parm_table[] = {
                .label          = "os2 driver map",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szOs2DriverMap,
+               .offset         = GLOBAL_VAR(szOs2DriverMap),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2883,7 +2887,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printer name",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPrintername,
+               .offset         = LOCAL_VAR(szPrintername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2892,7 +2896,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printer",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPrintername,
+               .offset         = LOCAL_VAR(szPrintername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -2901,7 +2905,7 @@ static struct parm_struct parm_table[] = {
                .label          = "use client driver",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bUseClientDriver,
+               .offset         = LOCAL_VAR(bUseClientDriver),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2910,7 +2914,7 @@ static struct parm_struct parm_table[] = {
                .label          = "default devmode",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDefaultDevmode,
+               .offset         = LOCAL_VAR(bDefaultDevmode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2919,7 +2923,7 @@ static struct parm_struct parm_table[] = {
                .label          = "force printername",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bForcePrintername,
+               .offset         = LOCAL_VAR(bForcePrintername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2928,7 +2932,7 @@ static struct parm_struct parm_table[] = {
                .label          = "printjob username",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPrintjobUsername,
+               .offset         = LOCAL_VAR(szPrintjobUsername),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_PRINT,
@@ -2940,7 +2944,7 @@ static struct parm_struct parm_table[] = {
                .label          = "mangling method",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szManglingMethod,
+               .offset         = GLOBAL_VAR(szManglingMethod),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2949,7 +2953,7 @@ static struct parm_struct parm_table[] = {
                .label          = "mangle prefix",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.mangle_prefix,
+               .offset         = GLOBAL_VAR(mangle_prefix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -2959,7 +2963,7 @@ static struct parm_struct parm_table[] = {
                .label          = "default case",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDefaultCase,
+               .offset         = LOCAL_VAR(iDefaultCase),
                .special        = NULL,
                .enum_list      = enum_case,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -2968,7 +2972,7 @@ static struct parm_struct parm_table[] = {
                .label          = "case sensitive",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCaseSensitive,
+               .offset         = LOCAL_VAR(iCaseSensitive),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2977,7 +2981,7 @@ static struct parm_struct parm_table[] = {
                .label          = "casesignames",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCaseSensitive,
+               .offset         = LOCAL_VAR(iCaseSensitive),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_HIDE,
@@ -2986,7 +2990,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preserve case",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bCasePreserve,
+               .offset         = LOCAL_VAR(bCasePreserve),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -2995,7 +2999,7 @@ static struct parm_struct parm_table[] = {
                .label          = "short preserve case",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bShortCasePreserve,
+               .offset         = LOCAL_VAR(bShortCasePreserve),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3004,7 +3008,7 @@ static struct parm_struct parm_table[] = {
                .label          = "mangling char",
                .type           = P_CHAR,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.magic_char,
+               .offset         = LOCAL_VAR(magic_char),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3013,7 +3017,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hide dot files",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bHideDotFiles,
+               .offset         = LOCAL_VAR(bHideDotFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3022,7 +3026,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hide special files",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bHideSpecialFiles,
+               .offset         = LOCAL_VAR(bHideSpecialFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3031,7 +3035,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hide unreadable",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bHideUnReadable,
+               .offset         = LOCAL_VAR(bHideUnReadable),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3040,7 +3044,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hide unwriteable files",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bHideUnWriteableFiles,
+               .offset         = LOCAL_VAR(bHideUnWriteableFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3049,7 +3053,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete veto files",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDeleteVetoFiles,
+               .offset         = LOCAL_VAR(bDeleteVetoFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3058,7 +3062,7 @@ static struct parm_struct parm_table[] = {
                .label          = "veto files",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szVetoFiles,
+               .offset         = LOCAL_VAR(szVetoFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3067,7 +3071,7 @@ static struct parm_struct parm_table[] = {
                .label          = "hide files",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szHideFiles,
+               .offset         = LOCAL_VAR(szHideFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3076,7 +3080,7 @@ static struct parm_struct parm_table[] = {
                .label          = "veto oplock files",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szVetoOplockFiles,
+               .offset         = LOCAL_VAR(szVetoOplockFiles),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3085,7 +3089,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map archive",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMap_archive,
+               .offset         = LOCAL_VAR(bMap_archive),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3094,7 +3098,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map hidden",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMap_hidden,
+               .offset         = LOCAL_VAR(bMap_hidden),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3103,7 +3107,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map system",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMap_system,
+               .offset         = LOCAL_VAR(bMap_system),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3112,7 +3116,7 @@ static struct parm_struct parm_table[] = {
                .label          = "map readonly",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iMap_readonly,
+               .offset         = LOCAL_VAR(iMap_readonly),
                .special        = NULL,
                .enum_list      = enum_map_readonly,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3121,7 +3125,7 @@ static struct parm_struct parm_table[] = {
                .label          = "mangled names",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMangledNames,
+               .offset         = LOCAL_VAR(bMangledNames),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3130,7 +3134,7 @@ static struct parm_struct parm_table[] = {
                .label          = "max stat cache size",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iMaxStatCacheSize,
+               .offset         = GLOBAL_VAR(iMaxStatCacheSize),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3139,7 +3143,7 @@ static struct parm_struct parm_table[] = {
                .label          = "stat cache",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bStatCache,
+               .offset         = GLOBAL_VAR(bStatCache),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3148,7 +3152,7 @@ static struct parm_struct parm_table[] = {
                .label          = "store dos attributes",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bStoreDosAttributes,
+               .offset         = LOCAL_VAR(bStoreDosAttributes),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3157,7 +3161,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dmapi support",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDmapiSupport,
+               .offset         = LOCAL_VAR(bDmapiSupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3170,7 +3174,7 @@ static struct parm_struct parm_table[] = {
                .label          = "machine password timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.machine_password_timeout,
+               .offset         = GLOBAL_VAR(machine_password_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_WIZARD,
@@ -3182,7 +3186,7 @@ static struct parm_struct parm_table[] = {
                .label          = "add user script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddUserScript,
+               .offset         = GLOBAL_VAR(szAddUserScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3191,7 +3195,7 @@ static struct parm_struct parm_table[] = {
                .label          = "rename user script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRenameUserScript,
+               .offset         = GLOBAL_VAR(szRenameUserScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3200,7 +3204,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete user script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDelUserScript,
+               .offset         = GLOBAL_VAR(szDelUserScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3209,7 +3213,7 @@ static struct parm_struct parm_table[] = {
                .label          = "add group script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddGroupScript,
+               .offset         = GLOBAL_VAR(szAddGroupScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3218,7 +3222,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete group script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDelGroupScript,
+               .offset         = GLOBAL_VAR(szDelGroupScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3227,7 +3231,7 @@ static struct parm_struct parm_table[] = {
                .label          = "add user to group script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddUserToGroupScript,
+               .offset         = GLOBAL_VAR(szAddUserToGroupScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3236,7 +3240,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete user from group script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDelUserFromGroupScript,
+               .offset         = GLOBAL_VAR(szDelUserFromGroupScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3245,7 +3249,7 @@ static struct parm_struct parm_table[] = {
                .label          = "set primary group script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSetPrimaryGroupScript,
+               .offset         = GLOBAL_VAR(szSetPrimaryGroupScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3254,7 +3258,7 @@ static struct parm_struct parm_table[] = {
                .label          = "add machine script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddMachineScript,
+               .offset         = GLOBAL_VAR(szAddMachineScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3263,7 +3267,7 @@ static struct parm_struct parm_table[] = {
                .label          = "shutdown script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szShutdownScript,
+               .offset         = GLOBAL_VAR(szShutdownScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3272,7 +3276,7 @@ static struct parm_struct parm_table[] = {
                .label          = "abort shutdown script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAbortShutdownScript,
+               .offset         = GLOBAL_VAR(szAbortShutdownScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3281,7 +3285,7 @@ static struct parm_struct parm_table[] = {
                .label          = "username map script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsernameMapScript,
+               .offset         = GLOBAL_VAR(szUsernameMapScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3290,7 +3294,7 @@ static struct parm_struct parm_table[] = {
                .label          = "username map cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iUsernameMapCacheTime,
+               .offset         = GLOBAL_VAR(iUsernameMapCacheTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3299,7 +3303,7 @@ static struct parm_struct parm_table[] = {
                .label          = "logon script",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogonScript,
+               .offset         = GLOBAL_VAR(szLogonScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3308,7 +3312,7 @@ static struct parm_struct parm_table[] = {
                .label          = "logon path",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogonPath,
+               .offset         = GLOBAL_VAR(szLogonPath),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3317,7 +3321,7 @@ static struct parm_struct parm_table[] = {
                .label          = "logon drive",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogonDrive,
+               .offset         = GLOBAL_VAR(szLogonDrive),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3326,7 +3330,7 @@ static struct parm_struct parm_table[] = {
                .label          = "logon home",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogonHome,
+               .offset         = GLOBAL_VAR(szLogonHome),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3335,7 +3339,7 @@ static struct parm_struct parm_table[] = {
                .label          = "domain logons",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDomainLogons,
+               .offset         = GLOBAL_VAR(bDomainLogons),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3345,7 +3349,7 @@ static struct parm_struct parm_table[] = {
                .label          = "init logon delayed hosts",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szInitLogonDelayedHosts,
+               .offset         = GLOBAL_VAR(szInitLogonDelayedHosts),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3355,7 +3359,7 @@ static struct parm_struct parm_table[] = {
                .label          = "init logon delay",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.InitLogonDelay,
+               .offset         = GLOBAL_VAR(InitLogonDelay),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3368,7 +3372,7 @@ static struct parm_struct parm_table[] = {
                .label          = "os level",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.os_level,
+               .offset         = GLOBAL_VAR(os_level),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -3377,7 +3381,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lm announce",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.lm_announce,
+               .offset         = GLOBAL_VAR(lm_announce),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED,
@@ -3386,7 +3390,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lm interval",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.lm_interval,
+               .offset         = GLOBAL_VAR(lm_interval),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3395,7 +3399,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preferred master",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iPreferredMaster,
+               .offset         = GLOBAL_VAR(iPreferredMaster),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -3404,7 +3408,7 @@ static struct parm_struct parm_table[] = {
                .label          = "prefered master",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iPreferredMaster,
+               .offset         = GLOBAL_VAR(iPreferredMaster),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_HIDE,
@@ -3413,7 +3417,7 @@ static struct parm_struct parm_table[] = {
                .label          = "local master",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bLocalMaster,
+               .offset         = GLOBAL_VAR(bLocalMaster),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -3422,7 +3426,7 @@ static struct parm_struct parm_table[] = {
                .label          = "domain master",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iDomainMaster,
+               .offset         = GLOBAL_VAR(iDomainMaster),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_BASIC | FLAG_ADVANCED,
@@ -3431,7 +3435,7 @@ static struct parm_struct parm_table[] = {
                .label          = "browse list",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bBrowseList,
+               .offset         = GLOBAL_VAR(bBrowseList),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3440,7 +3444,7 @@ static struct parm_struct parm_table[] = {
                .label          = "browseable",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bBrowseable,
+               .offset         = LOCAL_VAR(bBrowseable),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -3449,7 +3453,7 @@ static struct parm_struct parm_table[] = {
                .label          = "browsable",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bBrowseable,
+               .offset         = LOCAL_VAR(bBrowseable),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -3458,7 +3462,7 @@ static struct parm_struct parm_table[] = {
                .label          = "access based share enum",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAccessBasedShareEnum,
+               .offset         = LOCAL_VAR(bAccessBasedShareEnum),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE
@@ -3467,7 +3471,7 @@ static struct parm_struct parm_table[] = {
                .label          = "enhanced browsing",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.enhanced_browsing,
+               .offset         = GLOBAL_VAR(enhanced_browsing),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3479,7 +3483,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dns proxy",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bDNSproxy,
+               .offset         = GLOBAL_VAR(bDNSproxy),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3488,7 +3492,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wins proxy",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWINSproxy,
+               .offset         = GLOBAL_VAR(bWINSproxy),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3497,7 +3501,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wins server",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWINSservers,
+               .offset         = GLOBAL_VAR(szWINSservers),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -3506,7 +3510,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wins support",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWINSsupport,
+               .offset         = GLOBAL_VAR(bWINSsupport),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
@@ -3515,7 +3519,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wins hook",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWINSHook,
+               .offset         = GLOBAL_VAR(szWINSHook),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3527,7 +3531,7 @@ static struct parm_struct parm_table[] = {
                .label          = "blocking locks",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bBlockingLocks,
+               .offset         = LOCAL_VAR(bBlockingLocks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3536,7 +3540,7 @@ static struct parm_struct parm_table[] = {
                .label          = "csc policy",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iCSCPolicy,
+               .offset         = LOCAL_VAR(iCSCPolicy),
                .special        = NULL,
                .enum_list      = enum_csc_policy,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3545,7 +3549,7 @@ static struct parm_struct parm_table[] = {
                .label          = "fake oplocks",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bFakeOplocks,
+               .offset         = LOCAL_VAR(bFakeOplocks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -3554,7 +3558,7 @@ static struct parm_struct parm_table[] = {
                .label          = "kernel oplocks",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bKernelOplocks,
+               .offset         = GLOBAL_VAR(bKernelOplocks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -3563,7 +3567,7 @@ static struct parm_struct parm_table[] = {
                .label          = "locking",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bLocking,
+               .offset         = LOCAL_VAR(bLocking),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3572,7 +3576,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lock spin time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iLockSpinTime,
+               .offset         = GLOBAL_VAR(iLockSpinTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -3581,7 +3585,7 @@ static struct parm_struct parm_table[] = {
                .label          = "oplocks",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bOpLocks,
+               .offset         = LOCAL_VAR(bOpLocks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3590,7 +3594,7 @@ static struct parm_struct parm_table[] = {
                .label          = "level2 oplocks",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bLevel2OpLocks,
+               .offset         = LOCAL_VAR(bLevel2OpLocks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3599,7 +3603,7 @@ static struct parm_struct parm_table[] = {
                .label          = "oplock break wait time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.oplock_break_wait_time,
+               .offset         = GLOBAL_VAR(oplock_break_wait_time),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -3608,7 +3612,7 @@ static struct parm_struct parm_table[] = {
                .label          = "oplock contention limit",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iOplockContentionLimit,
+               .offset         = LOCAL_VAR(iOplockContentionLimit),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3617,7 +3621,7 @@ static struct parm_struct parm_table[] = {
                .label          = "posix locking",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bPosixLocking,
+               .offset         = LOCAL_VAR(bPosixLocking),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3626,7 +3630,7 @@ static struct parm_struct parm_table[] = {
                .label          = "strict locking",
                .type           = P_ENUM,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iStrictLocking,
+               .offset         = LOCAL_VAR(iStrictLocking),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -3635,7 +3639,7 @@ static struct parm_struct parm_table[] = {
                .label          = "share modes",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bShareModes,
+               .offset         = LOCAL_VAR(bShareModes),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL | FLAG_DEPRECATED,
@@ -3647,7 +3651,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap admin dn",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapAdminDn,
+               .offset         = GLOBAL_VAR(szLdapAdminDn),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3656,7 +3660,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap delete dn",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_delete_dn,
+               .offset         = GLOBAL_VAR(ldap_delete_dn),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3665,7 +3669,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap group suffix",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapGroupSuffix,
+               .offset         = GLOBAL_VAR(szLdapGroupSuffix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3674,7 +3678,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap idmap suffix",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapIdmapSuffix,
+               .offset         = GLOBAL_VAR(szLdapIdmapSuffix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3683,7 +3687,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap machine suffix",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapMachineSuffix,
+               .offset         = GLOBAL_VAR(szLdapMachineSuffix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3692,7 +3696,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap passwd sync",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_passwd_sync,
+               .offset         = GLOBAL_VAR(ldap_passwd_sync),
                .special        = NULL,
                .enum_list      = enum_ldap_passwd_sync,
                .flags          = FLAG_ADVANCED,
@@ -3701,7 +3705,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap password sync",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_passwd_sync,
+               .offset         = GLOBAL_VAR(ldap_passwd_sync),
                .special        = NULL,
                .enum_list      = enum_ldap_passwd_sync,
                .flags          = FLAG_HIDE,
@@ -3710,7 +3714,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap replication sleep",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_replication_sleep,
+               .offset         = GLOBAL_VAR(ldap_replication_sleep),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3719,7 +3723,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap suffix",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapSuffix,
+               .offset         = GLOBAL_VAR(szLdapSuffix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3728,7 +3732,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap ssl",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_ssl,
+               .offset         = GLOBAL_VAR(ldap_ssl),
                .special        = NULL,
                .enum_list      = enum_ldap_ssl,
                .flags          = FLAG_ADVANCED,
@@ -3737,7 +3741,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap ssl ads",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_ssl_ads,
+               .offset         = GLOBAL_VAR(ldap_ssl_ads),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3746,7 +3750,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap deref",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_deref,
+               .offset         = GLOBAL_VAR(ldap_deref),
                .special        = NULL,
                .enum_list      = enum_ldap_deref,
                .flags          = FLAG_ADVANCED,
@@ -3755,7 +3759,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap follow referral",
                .type           = P_ENUM,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_follow_referral,
+               .offset         = GLOBAL_VAR(ldap_follow_referral),
                .special        = NULL,
                .enum_list      = enum_bool_auto,
                .flags          = FLAG_ADVANCED,
@@ -3764,7 +3768,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_timeout,
+               .offset         = GLOBAL_VAR(ldap_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3773,7 +3777,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap connection timeout",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_connection_timeout,
+               .offset         = GLOBAL_VAR(ldap_connection_timeout),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3782,7 +3786,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap page size",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_page_size,
+               .offset         = GLOBAL_VAR(ldap_page_size),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3791,7 +3795,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap user suffix",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLdapUserSuffix,
+               .offset         = GLOBAL_VAR(szLdapUserSuffix),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3800,7 +3804,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap debug level",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_debug_level,
+               .offset         = GLOBAL_VAR(ldap_debug_level),
                .special        = handle_ldap_debug_level,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3809,7 +3813,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ldap debug threshold",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ldap_debug_threshold,
+               .offset         = GLOBAL_VAR(ldap_debug_threshold),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3821,7 +3825,7 @@ static struct parm_struct parm_table[] = {
                .label          = "eventlog list",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szEventLogs,
+               .offset         = GLOBAL_VAR(szEventLogs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL | FLAG_SHARE,
@@ -3833,7 +3837,7 @@ static struct parm_struct parm_table[] = {
                .label          = "add share command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAddShareCommand,
+               .offset         = GLOBAL_VAR(szAddShareCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3842,7 +3846,7 @@ static struct parm_struct parm_table[] = {
                .label          = "change share command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szChangeShareCommand,
+               .offset         = GLOBAL_VAR(szChangeShareCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3851,7 +3855,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete share command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDeleteShareCommand,
+               .offset         = GLOBAL_VAR(szDeleteShareCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3860,7 +3864,7 @@ static struct parm_struct parm_table[] = {
                .label          = "config file",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szConfigFile,
+               .offset         = GLOBAL_VAR(szConfigFile),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE|FLAG_META,
@@ -3869,7 +3873,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preload",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAutoServices,
+               .offset         = GLOBAL_VAR(szAutoServices),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3878,7 +3882,7 @@ static struct parm_struct parm_table[] = {
                .label          = "auto services",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAutoServices,
+               .offset         = GLOBAL_VAR(szAutoServices),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3887,7 +3891,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lock directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLockDir,
+               .offset         = GLOBAL_VAR(szLockDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3896,7 +3900,7 @@ static struct parm_struct parm_table[] = {
                .label          = "lock dir",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLockDir,
+               .offset         = GLOBAL_VAR(szLockDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -3905,7 +3909,7 @@ static struct parm_struct parm_table[] = {
                .label          = "state directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szStateDir,
+               .offset         = GLOBAL_VAR(szStateDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3914,7 +3918,7 @@ static struct parm_struct parm_table[] = {
                .label          = "cache directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szCacheDir,
+               .offset         = GLOBAL_VAR(szCacheDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3923,7 +3927,7 @@ static struct parm_struct parm_table[] = {
                .label          = "pid directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPidDir,
+               .offset         = GLOBAL_VAR(szPidDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3933,7 +3937,7 @@ static struct parm_struct parm_table[] = {
                .label          = "utmp directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUtmpDir,
+               .offset         = GLOBAL_VAR(szUtmpDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3942,7 +3946,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wtmp directory",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWtmpDir,
+               .offset         = GLOBAL_VAR(szWtmpDir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3951,7 +3955,7 @@ static struct parm_struct parm_table[] = {
                .label          = "utmp",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUtmp,
+               .offset         = GLOBAL_VAR(bUtmp),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3961,7 +3965,7 @@ static struct parm_struct parm_table[] = {
                .label          = "default service",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDefaultService,
+               .offset         = GLOBAL_VAR(szDefaultService),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3970,7 +3974,7 @@ static struct parm_struct parm_table[] = {
                .label          = "default",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szDefaultService,
+               .offset         = GLOBAL_VAR(szDefaultService),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3979,7 +3983,7 @@ static struct parm_struct parm_table[] = {
                .label          = "message command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szMsgCommand,
+               .offset         = GLOBAL_VAR(szMsgCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3988,7 +3992,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dfree cache time",
                .type           = P_INTEGER,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.iDfreeCacheTime,
+               .offset         = LOCAL_VAR(iDfreeCacheTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -3997,7 +4001,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dfree command",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szDfree,
+               .offset         = LOCAL_VAR(szDfree),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4006,7 +4010,7 @@ static struct parm_struct parm_table[] = {
                .label          = "get quota command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szGetQuota,
+               .offset         = GLOBAL_VAR(szGetQuota),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4015,7 +4019,7 @@ static struct parm_struct parm_table[] = {
                .label          = "set quota command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSetQuota,
+               .offset         = GLOBAL_VAR(szSetQuota),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4024,7 +4028,7 @@ static struct parm_struct parm_table[] = {
                .label          = "remote announce",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRemoteAnnounce,
+               .offset         = GLOBAL_VAR(szRemoteAnnounce),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4033,7 +4037,7 @@ static struct parm_struct parm_table[] = {
                .label          = "remote browse sync",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szRemoteBrowseSync,
+               .offset         = GLOBAL_VAR(szRemoteBrowseSync),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4042,7 +4046,7 @@ static struct parm_struct parm_table[] = {
                .label          = "socket address",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSocketAddress,
+               .offset         = GLOBAL_VAR(szSocketAddress),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4051,7 +4055,7 @@ static struct parm_struct parm_table[] = {
                .label          = "nmbd bind explicit broadcast",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNmbdBindExplicitBroadcast,
+               .offset         = GLOBAL_VAR(bNmbdBindExplicitBroadcast),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4060,7 +4064,7 @@ static struct parm_struct parm_table[] = {
                .label          = "homedir map",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szNISHomeMapName,
+               .offset         = GLOBAL_VAR(szNISHomeMapName),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4069,7 +4073,7 @@ static struct parm_struct parm_table[] = {
                .label          = "afs username map",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szAfsUsernameMap,
+               .offset         = GLOBAL_VAR(szAfsUsernameMap),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4078,7 +4082,7 @@ static struct parm_struct parm_table[] = {
                .label          = "afs token lifetime",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iAfsTokenLifetime,
+               .offset         = GLOBAL_VAR(iAfsTokenLifetime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4087,7 +4091,7 @@ static struct parm_struct parm_table[] = {
                .label          = "log nt token command",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szLogNtTokenCommand,
+               .offset         = GLOBAL_VAR(szLogNtTokenCommand),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4096,7 +4100,7 @@ static struct parm_struct parm_table[] = {
                .label          = "NIS homedir",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bNISHomeMap,
+               .offset         = GLOBAL_VAR(bNISHomeMap),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4105,7 +4109,7 @@ static struct parm_struct parm_table[] = {
                .label          = "-valid",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.valid,
+               .offset         = LOCAL_VAR(valid),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -4114,7 +4118,7 @@ static struct parm_struct parm_table[] = {
                .label          = "copy",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szCopy,
+               .offset         = LOCAL_VAR(szCopy),
                .special        = handle_copy,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -4123,7 +4127,7 @@ static struct parm_struct parm_table[] = {
                .label          = "include",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szInclude,
+               .offset         = LOCAL_VAR(szInclude),
                .special        = handle_include,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE|FLAG_META,
@@ -4132,7 +4136,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preexec",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPreExec,
+               .offset         = LOCAL_VAR(szPreExec),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -4141,7 +4145,7 @@ static struct parm_struct parm_table[] = {
                .label          = "exec",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPreExec,
+               .offset         = LOCAL_VAR(szPreExec),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4150,7 +4154,7 @@ static struct parm_struct parm_table[] = {
                .label          = "preexec close",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bPreexecClose,
+               .offset         = LOCAL_VAR(bPreexecClose),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4159,7 +4163,7 @@ static struct parm_struct parm_table[] = {
                .label          = "postexec",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szPostExec,
+               .offset         = LOCAL_VAR(szPostExec),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -4168,7 +4172,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root preexec",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szRootPreExec,
+               .offset         = LOCAL_VAR(szRootPreExec),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -4177,7 +4181,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root preexec close",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bRootpreexecClose,
+               .offset         = LOCAL_VAR(bRootpreexecClose),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4186,7 +4190,7 @@ static struct parm_struct parm_table[] = {
                .label          = "root postexec",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szRootPostExec,
+               .offset         = LOCAL_VAR(szRootPostExec),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -4195,7 +4199,7 @@ static struct parm_struct parm_table[] = {
                .label          = "available",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bAvailable,
+               .offset         = LOCAL_VAR(bAvailable),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT,
@@ -4204,7 +4208,7 @@ static struct parm_struct parm_table[] = {
                .label          = "registry shares",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bRegistryShares,
+               .offset         = GLOBAL_VAR(bRegistryShares),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4213,7 +4217,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare allow guests",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUsershareAllowGuests,
+               .offset         = GLOBAL_VAR(bUsershareAllowGuests),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4222,7 +4226,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare max shares",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iUsershareMaxShares,
+               .offset         = GLOBAL_VAR(iUsershareMaxShares),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4231,7 +4235,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare owner only",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bUsershareOwnerOnly,
+               .offset         = GLOBAL_VAR(bUsershareOwnerOnly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4240,7 +4244,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare path",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsersharePath,
+               .offset         = GLOBAL_VAR(szUsersharePath),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4249,7 +4253,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare prefix allow list",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsersharePrefixAllowList,
+               .offset         = GLOBAL_VAR(szUsersharePrefixAllowList),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4258,7 +4262,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare prefix deny list",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsersharePrefixDenyList,
+               .offset         = GLOBAL_VAR(szUsersharePrefixDenyList),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4267,7 +4271,7 @@ static struct parm_struct parm_table[] = {
                .label          = "usershare template share",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szUsershareTemplateShare,
+               .offset         = GLOBAL_VAR(szUsershareTemplateShare),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4276,7 +4280,7 @@ static struct parm_struct parm_table[] = {
                .label          = "volume",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.volume,
+               .offset         = LOCAL_VAR(volume),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4285,7 +4289,7 @@ static struct parm_struct parm_table[] = {
                .label          = "fstype",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.fstype,
+               .offset         = LOCAL_VAR(fstype),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4294,7 +4298,7 @@ static struct parm_struct parm_table[] = {
                .label          = "set directory",
                .type           = P_BOOLREV,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bNo_set_dir,
+               .offset         = LOCAL_VAR(bNo_set_dir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4303,7 +4307,7 @@ static struct parm_struct parm_table[] = {
                .label          = "wide links",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bWidelinks,
+               .offset         = LOCAL_VAR(bWidelinks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4312,7 +4316,7 @@ static struct parm_struct parm_table[] = {
                .label          = "follow symlinks",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bSymlinks,
+               .offset         = LOCAL_VAR(bSymlinks),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4321,7 +4325,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dont descend",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szDontdescend,
+               .offset         = LOCAL_VAR(szDontdescend),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4330,7 +4334,7 @@ static struct parm_struct parm_table[] = {
                .label          = "magic script",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szMagicScript,
+               .offset         = LOCAL_VAR(szMagicScript),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4339,7 +4343,7 @@ static struct parm_struct parm_table[] = {
                .label          = "magic output",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szMagicOutput,
+               .offset         = LOCAL_VAR(szMagicOutput),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4348,7 +4352,7 @@ static struct parm_struct parm_table[] = {
                .label          = "delete readonly",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDeleteReadonly,
+               .offset         = LOCAL_VAR(bDeleteReadonly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4357,7 +4361,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dos filemode",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDosFilemode,
+               .offset         = LOCAL_VAR(bDosFilemode),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4366,7 +4370,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dos filetimes",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDosFiletimes,
+               .offset         = LOCAL_VAR(bDosFiletimes),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4375,7 +4379,7 @@ static struct parm_struct parm_table[] = {
                .label          = "dos filetime resolution",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bDosFiletimeResolution,
+               .offset         = LOCAL_VAR(bDosFiletimeResolution),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL,
@@ -4384,7 +4388,7 @@ static struct parm_struct parm_table[] = {
                .label          = "fake directory create times",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bFakeDirCreateTimes,
+               .offset         = LOCAL_VAR(bFakeDirCreateTimes),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -4393,7 +4397,7 @@ static struct parm_struct parm_table[] = {
                .label          = "async smb echo handler",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bAsyncSMBEchoHandler,
+               .offset         = GLOBAL_VAR(bAsyncSMBEchoHandler),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -4402,7 +4406,7 @@ static struct parm_struct parm_table[] = {
                .label          = "multicast dns register",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bMulticastDnsRegister,
+               .offset         = GLOBAL_VAR(bMulticastDnsRegister),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_GLOBAL,
@@ -4411,7 +4415,7 @@ static struct parm_struct parm_table[] = {
                .label          = "panic action",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szPanicAction,
+               .offset         = GLOBAL_VAR(szPanicAction),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4420,7 +4424,7 @@ static struct parm_struct parm_table[] = {
                .label          = "perfcount module",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szSMBPerfcountModule,
+               .offset         = GLOBAL_VAR(szSMBPerfcountModule),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4432,7 +4436,7 @@ static struct parm_struct parm_table[] = {
                .label          = "vfs objects",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szVfsObjects,
+               .offset         = LOCAL_VAR(szVfsObjects),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4441,7 +4445,7 @@ static struct parm_struct parm_table[] = {
                .label          = "vfs object",
                .type           = P_LIST,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szVfsObjects,
+               .offset         = LOCAL_VAR(szVfsObjects),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -4454,7 +4458,7 @@ static struct parm_struct parm_table[] = {
                .label          = "msdfs root",
                .type           = P_BOOL,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.bMSDfsRoot,
+               .offset         = LOCAL_VAR(bMSDfsRoot),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4463,7 +4467,7 @@ static struct parm_struct parm_table[] = {
                .label          = "msdfs proxy",
                .type           = P_STRING,
                .p_class        = P_LOCAL,
-               .ptr            = &sDefault.szMSDfsProxy,
+               .offset         = LOCAL_VAR(szMSDfsProxy),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_SHARE,
@@ -4472,7 +4476,7 @@ static struct parm_struct parm_table[] = {
                .label          = "host msdfs",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bHostMSDfs,
+               .offset         = GLOBAL_VAR(bHostMSDfs),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4484,7 +4488,7 @@ static struct parm_struct parm_table[] = {
                .label          = "passdb expand explicit",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bPassdbExpandExplicit,
+               .offset         = GLOBAL_VAR(bPassdbExpandExplicit),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4493,7 +4497,7 @@ static struct parm_struct parm_table[] = {
                .label          = "idmap backend",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIdmapBackend,
+               .offset         = GLOBAL_VAR(szIdmapBackend),
                .special        = handle_idmap_backend,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -4502,7 +4506,7 @@ static struct parm_struct parm_table[] = {
                .label          = "idmap cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iIdmapCacheTime,
+               .offset         = GLOBAL_VAR(iIdmapCacheTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4511,7 +4515,7 @@ static struct parm_struct parm_table[] = {
                .label          = "idmap negative cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.iIdmapNegativeCacheTime,
+               .offset         = GLOBAL_VAR(iIdmapNegativeCacheTime),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4520,7 +4524,7 @@ static struct parm_struct parm_table[] = {
                .label          = "idmap uid",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIdmapUID,
+               .offset         = GLOBAL_VAR(szIdmapUID),
                .special        = handle_idmap_uid,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -4529,7 +4533,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind uid",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIdmapUID,
+               .offset         = GLOBAL_VAR(szIdmapUID),
                .special        = handle_idmap_uid,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -4538,7 +4542,7 @@ static struct parm_struct parm_table[] = {
                .label          = "idmap gid",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIdmapGID,
+               .offset         = GLOBAL_VAR(szIdmapGID),
                .special        = handle_idmap_gid,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED | FLAG_DEPRECATED,
@@ -4547,7 +4551,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind gid",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szIdmapGID,
+               .offset         = GLOBAL_VAR(szIdmapGID),
                .special        = handle_idmap_gid,
                .enum_list      = NULL,
                .flags          = FLAG_HIDE,
@@ -4556,7 +4560,7 @@ static struct parm_struct parm_table[] = {
                .label          = "template homedir",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szTemplateHomedir,
+               .offset         = GLOBAL_VAR(szTemplateHomedir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4565,7 +4569,7 @@ static struct parm_struct parm_table[] = {
                .label          = "template shell",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szTemplateShell,
+               .offset         = GLOBAL_VAR(szTemplateShell),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4574,7 +4578,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind separator",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWinbindSeparator,
+               .offset         = GLOBAL_VAR(szWinbindSeparator),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4583,7 +4587,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind cache time",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.winbind_cache_time,
+               .offset         = GLOBAL_VAR(winbind_cache_time),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4592,7 +4596,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind reconnect delay",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.winbind_reconnect_delay,
+               .offset         = GLOBAL_VAR(winbind_reconnect_delay),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4601,7 +4605,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind max clients",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.winbind_max_clients,
+               .offset         = GLOBAL_VAR(winbind_max_clients),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4610,7 +4614,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind enum users",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindEnumUsers,
+               .offset         = GLOBAL_VAR(bWinbindEnumUsers),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4619,7 +4623,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind enum groups",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindEnumGroups,
+               .offset         = GLOBAL_VAR(bWinbindEnumGroups),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4628,7 +4632,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind use default domain",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindUseDefaultDomain,
+               .offset         = GLOBAL_VAR(bWinbindUseDefaultDomain),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4637,7 +4641,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind trusted domains only",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindTrustedDomainsOnly,
+               .offset         = GLOBAL_VAR(bWinbindTrustedDomainsOnly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4646,7 +4650,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind nested groups",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindNestedGroups,
+               .offset         = GLOBAL_VAR(bWinbindNestedGroups),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4655,7 +4659,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind expand groups",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.winbind_expand_groups,
+               .offset         = GLOBAL_VAR(winbind_expand_groups),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4664,7 +4668,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind nss info",
                .type           = P_LIST,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.szWinbindNssInfo,
+               .offset         = GLOBAL_VAR(szWinbindNssInfo),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4673,7 +4677,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind refresh tickets",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindRefreshTickets,
+               .offset         = GLOBAL_VAR(bWinbindRefreshTickets),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4682,7 +4686,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind offline logon",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindOfflineLogon,
+               .offset         = GLOBAL_VAR(bWinbindOfflineLogon),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4691,7 +4695,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind normalize names",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindNormalizeNames,
+               .offset         = GLOBAL_VAR(bWinbindNormalizeNames),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4700,7 +4704,7 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind rpc only",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bWinbindRpcOnly,
+               .offset         = GLOBAL_VAR(bWinbindRpcOnly),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4709,7 +4713,7 @@ static struct parm_struct parm_table[] = {
                .label          = "create krb5 conf",
                .type           = P_BOOL,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.bCreateKrb5Conf,
+               .offset         = GLOBAL_VAR(bCreateKrb5Conf),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4718,7 +4722,7 @@ static struct parm_struct parm_table[] = {
                .label          = "ncalrpc dir",
                .type           = P_STRING,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.ncalrpc_dir,
+               .offset         = GLOBAL_VAR(ncalrpc_dir),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
@@ -4727,13 +4731,13 @@ static struct parm_struct parm_table[] = {
                .label          = "winbind max domain connections",
                .type           = P_INTEGER,
                .p_class        = P_GLOBAL,
-               .ptr            = &Globals.winbindMaxDomainConnections,
+               .offset         = GLOBAL_VAR(winbindMaxDomainConnections),
                .special        = NULL,
                .enum_list      = NULL,
                .flags          = FLAG_ADVANCED,
        },
 
-       {NULL,  P_BOOL,  P_NONE,  NULL,  NULL,  NULL,  0}
+       {NULL,  P_BOOL,  P_NONE,  0,  NULL,  NULL,  0}
 };
 
 /***************************************************************************
@@ -4977,7 +4981,7 @@ static void free_one_parameter_by_snum(int snum, struct parm_struct parm)
 {
        void *parm_ptr;
 
-       if (parm.ptr == NULL) {
+       if (parm.offset == 0) {
                return;
        }
 
@@ -5111,7 +5115,7 @@ static void init_globals(bool reinit_globals)
        for (i = 0; parm_table[i].label; i++) {
                if ((parm_table[i].type == P_STRING ||
                     parm_table[i].type == P_USTRING) &&
-                   parm_table[i].ptr)
+                   parm_table[i].offset)
                {
                        string_set(lp_parm_ptr(NULL, &parm_table[i]), "");
                }
@@ -6721,7 +6725,7 @@ done:
 
 static bool is_synonym_of(int parm1, int parm2, bool *inverse)
 {
-       if ((parm_table[parm1].ptr == parm_table[parm2].ptr) &&
+       if ((parm_table[parm1].offset == parm_table[parm2].offset) &&
            (parm_table[parm1].flags & FLAG_HIDE) &&
            !(parm_table[parm2].flags & FLAG_HIDE))
        {
@@ -6978,7 +6982,7 @@ static void copy_service(struct loadparm_service *pserviceDest, struct loadparm_
        struct param_opt_struct *data;
 
        for (i = 0; parm_table[i].label; i++)
-               if (parm_table[i].ptr && parm_table[i].p_class == P_LOCAL &&
+               if (parm_table[i].offset && parm_table[i].p_class == P_LOCAL &&
                    (bcopyall || bitmap_query(pcopymapDest,i))) {
                        void *src_ptr = lp_parm_ptr(pserviceSource, &parm_table[i]);
                        void *dest_ptr = lp_parm_ptr(pserviceDest, &parm_table[i]);
@@ -7836,7 +7840,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                /* this handles the aliases - set the copymap for other entries with
                   the same data pointer */
                for (i = 0; parm_table[i].label; i++)
-                       if (parm_table[i].ptr == parm_table[parmnum].ptr)
+                       if (parm_table[i].offset == parm_table[parmnum].offset)
                                bitmap_clear(ServicePtrs[snum]->copymap, i);
        }
 
@@ -7919,10 +7923,10 @@ static bool lp_set_cmdline_helper(const char *pszParmName, const char *pszParmVa
                /* we have to also set FLAG_CMDLINE on aliases.  Aliases must
                 * be grouped in the table, so we don't have to search the
                 * whole table */
-               for (i=parmnum-1;i>=0 && parm_table[i].ptr == parm_table[parmnum].ptr;i--) {
+               for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) {
                        parm_table[i].flags |= FLAG_CMDLINE;
                }
-               for (i=parmnum+1;i<NUMPARAMETERS && parm_table[i].ptr == parm_table[parmnum].ptr;i++) {
+               for (i=parmnum+1;i<NUMPARAMETERS && parm_table[i].offset == parm_table[parmnum].offset;i++) {
                        parm_table[i].flags |= FLAG_CMDLINE;
                }
 
@@ -8218,8 +8222,8 @@ static void dump_globals(FILE *f)
        for (i = 0; parm_table[i].label; i++)
                if (parm_table[i].p_class == P_GLOBAL &&
                    !(parm_table[i].flags & FLAG_META) &&
-                   parm_table[i].ptr &&
-                   (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) {
+                   parm_table[i].offset &&
+                   (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) {
                        if (defaults_saved && is_default(i))
                                continue;
                        fprintf(f, "\t%s = ", parm_table[i].label);
@@ -8265,9 +8269,9 @@ static void dump_a_service(struct loadparm_service *pService, FILE * f)
 
                if (parm_table[i].p_class == P_LOCAL &&
                    !(parm_table[i].flags & FLAG_META) &&
-                   parm_table[i].ptr &&
+                   parm_table[i].offset &&
                    (*parm_table[i].label != '-') &&
-                   (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) 
+                   (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) 
                {
                        if (pService == &sDefault) {
                                if (defaults_saved && is_default(i))
@@ -8339,9 +8343,9 @@ bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal)
                if (strwicmp(parm_table[i].label, parm_name) == 0 &&
                    !(parm_table[i].flags & FLAG_META) &&
                    (parm_table[i].p_class == p_class || parm_table[i].flags & flag) &&
-                   parm_table[i].ptr &&
+                   parm_table[i].offset &&
                    (*parm_table[i].label != '-') &&
-                   (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr))) 
+                   (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) 
                {
                        void *ptr;
 
@@ -8394,13 +8398,13 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters)
                        if (parm_table[*i].p_class == P_SEPARATOR)
                                return &parm_table[(*i)++];
 
-                       if (!parm_table[*i].ptr
+                       if (!parm_table[*i].offset
                            || (*parm_table[*i].label == '-'))
                                continue;
 
                        if ((*i) > 0
-                           && (parm_table[*i].ptr ==
-                               parm_table[(*i) - 1].ptr))
+                           && (parm_table[*i].offset ==
+                               parm_table[(*i) - 1].offset))
                                continue;
 
                        if (is_default(*i) && !allparameters)
@@ -8416,11 +8420,11 @@ struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters)
                                return &parm_table[(*i)++];
 
                        if (parm_table[*i].p_class == P_LOCAL &&
-                           parm_table[*i].ptr &&
+                           parm_table[*i].offset &&
                            (*parm_table[*i].label != '-') &&
                            ((*i) == 0 ||
-                            (parm_table[*i].ptr !=
-                             parm_table[(*i) - 1].ptr)))
+                            (parm_table[*i].offset !=
+                             parm_table[(*i) - 1].offset)))
                        {
                                if (allparameters ||
                                    !equal_parameter(parm_table[*i].type,
@@ -8588,7 +8592,7 @@ static void lp_save_defaults(void)
 {
        int i;
        for (i = 0; parm_table[i].label; i++) {
-               if (i > 0 && parm_table[i].ptr == parm_table[i - 1].ptr)
+               if (i > 0 && parm_table[i].offset == parm_table[i - 1].offset)
                        continue;
                switch (parm_table[i].type) {
                        case P_LIST:
@@ -8597,7 +8601,7 @@ static void lp_save_defaults(void)
                                break;
                        case P_STRING:
                        case P_USTRING:
-                               if (parm_table[i].ptr) {
+                               if (parm_table[i].offset) {
                                        parm_table[i].def.svalue = SMB_STRDUP(*(char **)lp_parm_ptr(NULL, &parm_table[i]));
                                } else {
                                        parm_table[i].def.svalue = NULL;