From 15b8cfcd83ab502c99bb5c02d2198c46a22f165e Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 10 Nov 2011 15:19:33 +1100 Subject: param: Move enum values into a common (included) .c file This #include hack is required as it is not possible to declare a compile-time sized array in a header file. Andrew Bartlett Pair-Programmed-With: Amitay Isaacs --- lib/param/loadparm.c | 82 +---------------------------------- lib/param/param_enums.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 81 deletions(-) create mode 100644 lib/param/param_enums.c (limited to 'lib') diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 9de009f092..5f2feca51f 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -104,87 +104,7 @@ static bool handle_debuglevel(struct loadparm_context *lp_ctx, int unused, static bool handle_logfile(struct loadparm_context *lp_ctx, int unused, const char *pszParmValue, char **ptr); -static const struct enum_list enum_protocol[] = { - {PROTOCOL_SMB2_02, "SMB2"}, - {PROTOCOL_SMB2_02, "SMB2_02"}, - {PROTOCOL_NT1, "NT1"}, - {PROTOCOL_LANMAN2, "LANMAN2"}, - {PROTOCOL_LANMAN1, "LANMAN1"}, - {PROTOCOL_CORE, "CORE"}, - {PROTOCOL_COREPLUS, "COREPLUS"}, - {PROTOCOL_COREPLUS, "CORE+"}, - {-1, NULL} -}; - -static const struct enum_list enum_security[] = { - {SEC_AUTO, "AUTO"}, - {SEC_SHARE, "SHARE"}, - {SEC_USER, "USER"}, - {SEC_DOMAIN, "DOMAIN"}, - {SEC_ADS, "ADS"}, - {-1, NULL} -}; - -static const struct enum_list enum_bool_auto[] = { - {false, "No"}, - {false, "False"}, - {false, "0"}, - {true, "Yes"}, - {true, "True"}, - {true, "1"}, - {Auto, "Auto"}, - {-1, NULL} -}; - -/* Client-side offline caching policy types */ - -static const struct enum_list enum_csc_policy[] = { - {CSC_POLICY_MANUAL, "manual"}, - {CSC_POLICY_DOCUMENTS, "documents"}, - {CSC_POLICY_PROGRAMS, "programs"}, - {CSC_POLICY_DISABLE, "disable"}, - {-1, NULL} -}; - -/* SMB signing types. */ -static const struct enum_list enum_smb_signing_vals[] = { - {SMB_SIGNING_DEFAULT, "default"}, - {SMB_SIGNING_OFF, "No"}, - {SMB_SIGNING_OFF, "False"}, - {SMB_SIGNING_OFF, "0"}, - {SMB_SIGNING_OFF, "Off"}, - {SMB_SIGNING_OFF, "disabled"}, - {SMB_SIGNING_IF_REQUIRED, "if_required"}, - {SMB_SIGNING_IF_REQUIRED, "Yes"}, - {SMB_SIGNING_IF_REQUIRED, "True"}, - {SMB_SIGNING_IF_REQUIRED, "1"}, - {SMB_SIGNING_IF_REQUIRED, "On"}, - {SMB_SIGNING_IF_REQUIRED, "enabled"}, - {SMB_SIGNING_IF_REQUIRED, "auto"}, - {SMB_SIGNING_REQUIRED, "required"}, - {SMB_SIGNING_REQUIRED, "mandatory"}, - {SMB_SIGNING_REQUIRED, "force"}, - {SMB_SIGNING_REQUIRED, "forced"}, - {SMB_SIGNING_REQUIRED, "enforced"}, - {-1, NULL} -}; - -/* Server role options */ -static const struct enum_list enum_server_role[] = { - {ROLE_AUTO, "auto"}, - {ROLE_STANDALONE, "standalone"}, - {ROLE_DOMAIN_MEMBER, "member server"}, - {ROLE_DOMAIN_MEMBER, "member"}, - /* note that currently - ROLE_DOMAIN_CONTROLLER == ROLE_DOMAIN_BDC */ - {ROLE_DOMAIN_CONTROLLER, "domain controller"}, - {ROLE_DOMAIN_BDC, "backup domain controller"}, - {ROLE_DOMAIN_BDC, "bdc"}, - {ROLE_DOMAIN_BDC, "dc"}, - {ROLE_DOMAIN_PDC, "primary domain controller"}, - {ROLE_DOMAIN_PDC, "pdc"}, - {-1, NULL} -}; +#include "param_enums.c" #define GLOBAL_VAR(name) offsetof(struct loadparm_global, name) #define LOCAL_VAR(name) offsetof(struct loadparm_service, name) diff --git a/lib/param/param_enums.c b/lib/param/param_enums.c new file mode 100644 index 0000000000..185f6dd44d --- /dev/null +++ b/lib/param/param_enums.c @@ -0,0 +1,112 @@ +/* + Unix SMB/CIFS implementation. + Parameter loading functions + Copyright (C) Karl Auer 1993-1998 + + Largely re-written by Andrew Tridgell, September 1994 + + Copyright (C) Simo Sorce 2001 + Copyright (C) Alexander Bokovoy 2002 + Copyright (C) Stefan (metze) Metzmacher 2002 + Copyright (C) Jim McDonough 2003 + Copyright (C) Michael Adam 2008 + Copyright (C) Jelmer Vernooij 2007 + Copyright (C) Andrew Bartlett 2011 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +static const struct enum_list enum_protocol[] = { + {PROTOCOL_SMB2_02, "SMB2"}, /* for now keep PROTOCOL_SMB2_02 */ + {PROTOCOL_SMB2_10, "SMB2_10"}, + {PROTOCOL_SMB2_02, "SMB2_02"}, + {PROTOCOL_NT1, "NT1"}, + {PROTOCOL_LANMAN2, "LANMAN2"}, + {PROTOCOL_LANMAN1, "LANMAN1"}, + {PROTOCOL_CORE, "CORE"}, + {PROTOCOL_COREPLUS, "COREPLUS"}, + {PROTOCOL_COREPLUS, "CORE+"}, + {-1, NULL} +}; + +static const struct enum_list enum_security[] = { + {SEC_AUTO, "AUTO"}, + {SEC_SHARE, "SHARE"}, + {SEC_USER, "USER"}, + {SEC_SERVER, "SERVER"}, + {SEC_DOMAIN, "DOMAIN"}, +#if (defined(HAVE_ADS) || _SAMBA_BUILD_ >= 4) + {SEC_ADS, "ADS"}, +#endif + {-1, NULL} +}; + +static const struct enum_list enum_bool_auto[] = { + {false, "No"}, + {false, "False"}, + {false, "0"}, + {true, "Yes"}, + {true, "True"}, + {true, "1"}, + {Auto, "Auto"}, + {-1, NULL} +}; + +static const struct enum_list enum_csc_policy[] = { + {CSC_POLICY_MANUAL, "manual"}, + {CSC_POLICY_DOCUMENTS, "documents"}, + {CSC_POLICY_PROGRAMS, "programs"}, + {CSC_POLICY_DISABLE, "disable"}, + {-1, NULL} +}; + +/* Server role options */ +static const struct enum_list enum_server_role[] = { + {ROLE_AUTO, "auto"}, + {ROLE_STANDALONE, "standalone"}, + {ROLE_DOMAIN_MEMBER, "member server"}, + {ROLE_DOMAIN_MEMBER, "member"}, + /* note that currently + ROLE_DOMAIN_CONTROLLER == ROLE_DOMAIN_BDC */ + {ROLE_DOMAIN_CONTROLLER, "domain controller"}, + {ROLE_DOMAIN_BDC, "backup domain controller"}, + {ROLE_DOMAIN_BDC, "bdc"}, + {ROLE_DOMAIN_BDC, "dc"}, + {ROLE_DOMAIN_PDC, "primary domain controller"}, + {ROLE_DOMAIN_PDC, "pdc"}, + {-1, NULL} +}; + +/* SMB signing types. */ +static const struct enum_list enum_smb_signing_vals[] = { + {SMB_SIGNING_DEFAULT, "default"}, + {SMB_SIGNING_OFF, "No"}, + {SMB_SIGNING_OFF, "False"}, + {SMB_SIGNING_OFF, "0"}, + {SMB_SIGNING_OFF, "Off"}, + {SMB_SIGNING_OFF, "disabled"}, + {SMB_SIGNING_IF_REQUIRED, "if_required"}, + {SMB_SIGNING_IF_REQUIRED, "Yes"}, + {SMB_SIGNING_IF_REQUIRED, "True"}, + {SMB_SIGNING_IF_REQUIRED, "1"}, + {SMB_SIGNING_IF_REQUIRED, "On"}, + {SMB_SIGNING_IF_REQUIRED, "enabled"}, + {SMB_SIGNING_IF_REQUIRED, "auto"}, + {SMB_SIGNING_REQUIRED, "required"}, + {SMB_SIGNING_REQUIRED, "mandatory"}, + {SMB_SIGNING_REQUIRED, "force"}, + {SMB_SIGNING_REQUIRED, "forced"}, + {SMB_SIGNING_REQUIRED, "enforced"}, + {-1, NULL} +}; -- cgit