Changeset 740 for vendor/current/source4/param/loadparm.c
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source4/param/loadparm.c
r414 r740 62 62 #include "libcli/raw/signing.h" 63 63 #include "../lib/util/dlinklist.h" 64 #include "../lib/util/parmlist.h" 64 65 #include "param/param.h" 65 66 #include "param/loadparm.h" … … 80 81 { 81 82 enum server_role server_role; 83 enum sid_generator sid_generator; 82 84 83 85 const char **smb_ports; … … 89 91 char *szModulesDir; 90 92 char *szPidDir; 91 char *szSetupDir;92 93 char *szServerString; 93 94 char *szAutoServices; … … 104 105 char *szSocketOptions; 105 106 char *szRealm; 107 char *szRealm_upper; 108 char *szRealm_lower; 106 109 const char **szWINSservers; 107 110 const char **szInterfaces; … … 124 127 int bWinbindSealedPipes; 125 128 int bIdmapTrustedOnly; 126 char *swat_directory;127 129 int tls_enabled; 128 130 char *tls_keyfile; … … 132 134 char *tls_dhpfile; 133 135 char *logfile; 136 char *loglevel; 134 137 char *panic_action; 135 138 int max_mux; … … 183 186 int bRpcBigEndian; 184 187 char *szNTPSignDSocketDirectory; 188 const char **szRNDCCommand; 189 const char **szDNSUpdateCommand; 190 const char **szSPNUpdateCommand; 191 const char **szNSUpdateCommand; 185 192 struct parmlist_entry *param_opt; 186 193 }; … … 235 242 static bool handle_include(struct loadparm_context *lp_ctx, 236 243 const char *pszParmValue, char **ptr); 244 static bool handle_realm(struct loadparm_context *lp_ctx, 245 const char *pszParmValue, char **ptr); 237 246 static bool handle_copy(struct loadparm_context *lp_ctx, 238 247 const char *pszParmValue, char **ptr); … … 325 334 }; 326 335 336 static const struct enum_list enum_sid_generator[] = { 337 {SID_GENERATOR_INTERNAL, "internal"}, 338 {SID_GENERATOR_BACKEND, "backend"}, 339 {-1, NULL} 340 }; 327 341 328 342 #define GLOBAL_VAR(name) offsetof(struct loadparm_global, name) … … 331 345 static struct parm_struct parm_table[] = { 332 346 {"server role", P_ENUM, P_GLOBAL, GLOBAL_VAR(server_role), NULL, enum_server_role}, 347 {"sid generator", P_ENUM, P_GLOBAL, GLOBAL_VAR(sid_generator), NULL, enum_sid_generator}, 333 348 334 349 {"dos charset", P_STRING, P_GLOBAL, GLOBAL_VAR(dos_charset), NULL, NULL}, … … 340 355 {"directory", P_STRING, P_LOCAL, LOCAL_VAR(szPath), NULL, NULL}, 341 356 {"workgroup", P_USTRING, P_GLOBAL, GLOBAL_VAR(szWorkgroup), NULL, NULL}, 342 {"realm", P_STRING, P_GLOBAL, GLOBAL_VAR(szRealm), NULL, NULL},357 {"realm", P_STRING, P_GLOBAL, GLOBAL_VAR(szRealm), handle_realm, NULL}, 343 358 {"netbios name", P_USTRING, P_GLOBAL, GLOBAL_VAR(szNetbiosName), NULL, NULL}, 344 359 {"netbios aliases", P_LIST, P_GLOBAL, GLOBAL_VAR(szNetbiosAliases), NULL, NULL}, … … 383 398 {"hosts deny", P_LIST, P_LOCAL, LOCAL_VAR(szHostsdeny), NULL, NULL}, 384 399 385 {"log level", P_ INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL},386 {"debuglevel", P_ INTEGER, P_GLOBAL, GLOBAL_VAR(debuglevel), handle_debuglevel, NULL},400 {"log level", P_STRING, P_GLOBAL, GLOBAL_VAR(loglevel), handle_debuglevel, NULL}, 401 {"debuglevel", P_STRING, P_GLOBAL, GLOBAL_VAR(loglevel), handle_debuglevel, NULL}, 387 402 {"log file", P_STRING, P_GLOBAL, GLOBAL_VAR(logfile), handle_logfile, NULL}, 388 403 … … 400 415 {"tls crlfile", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_crlfile), NULL, NULL}, 401 416 {"tls dh params file", P_STRING, P_GLOBAL, GLOBAL_VAR(tls_dhpfile), NULL, NULL}, 402 {"swat directory", P_STRING, P_GLOBAL, GLOBAL_VAR(swat_directory), NULL, NULL},403 417 {"large readwrite", P_BOOL, P_GLOBAL, GLOBAL_VAR(bLargeReadwrite), NULL, NULL}, 404 418 {"server max protocol", P_ENUM, P_GLOBAL, GLOBAL_VAR(srv_maxprotocol), NULL, enum_protocol}, … … 469 483 {"modules dir", P_STRING, P_GLOBAL, GLOBAL_VAR(szModulesDir), NULL, NULL}, 470 484 {"pid directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szPidDir), NULL, NULL}, 471 {"setup directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szSetupDir), NULL, NULL},472 485 473 486 {"socket address", P_STRING, P_GLOBAL, GLOBAL_VAR(szSocketAddress), NULL, NULL}, … … 492 505 493 506 {"ntp signd socket directory", P_STRING, P_GLOBAL, GLOBAL_VAR(szNTPSignDSocketDirectory), NULL, NULL }, 507 {"rndc command", P_CMDLIST, P_GLOBAL, GLOBAL_VAR(szRNDCCommand), NULL, NULL }, 508 {"dns update command", P_CMDLIST, P_GLOBAL, GLOBAL_VAR(szDNSUpdateCommand), NULL, NULL }, 509 {"spn update command", P_CMDLIST, P_GLOBAL, GLOBAL_VAR(szSPNUpdateCommand), NULL, NULL }, 510 {"nsupdate command", P_CMDLIST, P_GLOBAL, GLOBAL_VAR(szNSUpdateCommand), NULL, NULL }, 494 511 495 512 {NULL, P_BOOL, P_NONE, 0, NULL, NULL} … … 503 520 struct loadparm_service **services; 504 521 struct loadparm_service *sDefault; 522 struct smb_iconv_convenience *iconv_convenience; 505 523 int iNumServices; 506 524 struct loadparm_service *currentService; … … 513 531 } *file_lists; 514 532 unsigned int flags[NUMPARAMETERS]; 515 struct smb_iconv_convenience *iconv_convenience; 533 bool loaded; 534 bool refuse_free; 516 535 }; 517 536 518 537 519 struct loadparm_service *lp _default_service(struct loadparm_context *lp_ctx)538 struct loadparm_service *lpcfg_default_service(struct loadparm_context *lp_ctx) 520 539 { 521 540 return lp_ctx->sDefault; … … 525 544 return the parameter table 526 545 */ 527 struct parm_struct *lp _parm_table(void)546 struct parm_struct *lpcfg_parm_table(void) 528 547 { 529 548 return parm_table; … … 584 603 */ 585 604 605 /* 606 * the creation of separate lpcfg_*() and lp_*() functions is to allow 607 * for code compatibility between existing Samba4 and Samba3 code. 608 */ 609 610 /* this global context supports the lp_*() function varients */ 611 static struct loadparm_context *global_loadparm_context; 612 613 #define lpcfg_default_service global_loadparm_context->sDefault 614 #define lpcfg_global_service(i) global_loadparm_context->services[i] 615 586 616 #define FN_GLOBAL_STRING(fn_name,var_name) \ 587 const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : "";} 617 _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : "";} 618 588 619 #define FN_GLOBAL_CONST_STRING(fn_name,var_name) \ 589 const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_ctx->globals->var_name : "";} 620 _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_ctx->globals->var_name : "";} 621 590 622 #define FN_GLOBAL_LIST(fn_name,var_name) \ 591 const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name;} 623 _PUBLIC_ const char **lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name;} 624 592 625 #define FN_GLOBAL_BOOL(fn_name,var_name) \ 593 bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->globals->var_name;} 594 #if 0 /* unused */ 595 #define FN_GLOBAL_CHAR(fn_name,ptr) \ 596 char fn_name(void) {return(*(char *)(ptr));} 597 #endif 626 _PUBLIC_ bool lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->globals->var_name;} 627 598 628 #define FN_GLOBAL_INTEGER(fn_name,var_name) \ 599 intfn_name(struct loadparm_context *lp_ctx) {return lp_ctx->globals->var_name;}629 _PUBLIC_ int lpcfg_ ## fn_name(struct loadparm_context *lp_ctx) {return lp_ctx->globals->var_name;} 600 630 601 631 #define FN_LOCAL_STRING(fn_name,val) \ 602 const char *fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val)));} 632 _PUBLIC_ const char *lpcfg_ ## fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault->val)));} 633 603 634 #define FN_LOCAL_LIST(fn_name,val) \ 604 const char **fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault->val);} 635 _PUBLIC_ const char **lpcfg_ ## fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return(const char **)(service != NULL && service->val != NULL? service->val : sDefault->val);} 636 605 637 #define FN_LOCAL_BOOL(fn_name,val) \ 606 bool fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} 638 _PUBLIC_ bool lpcfg_ ## fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} 639 607 640 #define FN_LOCAL_INTEGER(fn_name,val) \ 608 int fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} 609 610 _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_role, server_role) 611 _PUBLIC_ FN_GLOBAL_LIST(lp_smb_ports, smb_ports) 612 _PUBLIC_ FN_GLOBAL_INTEGER(lp_nbt_port, nbt_port) 613 _PUBLIC_ FN_GLOBAL_INTEGER(lp_dgram_port, dgram_port) 614 _PUBLIC_ FN_GLOBAL_INTEGER(lp_cldap_port, cldap_port) 615 _PUBLIC_ FN_GLOBAL_INTEGER(lp_krb5_port, krb5_port) 616 _PUBLIC_ FN_GLOBAL_INTEGER(lp_kpasswd_port, kpasswd_port) 617 _PUBLIC_ FN_GLOBAL_INTEGER(lp_web_port, web_port) 618 _PUBLIC_ FN_GLOBAL_STRING(lp_swat_directory, swat_directory) 619 _PUBLIC_ FN_GLOBAL_BOOL(lp_tls_enabled, tls_enabled) 620 _PUBLIC_ FN_GLOBAL_STRING(lp_share_backend, szShareBackend) 621 _PUBLIC_ FN_GLOBAL_STRING(lp_sam_url, szSAM_URL) 622 _PUBLIC_ FN_GLOBAL_STRING(lp_idmap_url, szIDMAP_URL) 623 _PUBLIC_ FN_GLOBAL_STRING(lp_secrets_url, szSECRETS_URL) 624 _PUBLIC_ FN_GLOBAL_STRING(lp_spoolss_url, szSPOOLSS_URL) 625 _PUBLIC_ FN_GLOBAL_STRING(lp_wins_config_url, szWINS_CONFIG_URL) 626 _PUBLIC_ FN_GLOBAL_STRING(lp_wins_url, szWINS_URL) 627 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbind_separator, szWinbindSeparator) 628 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_socket_directory, szWinbinddSocketDirectory) 629 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_winbindd_privileged_socket_directory, szWinbinddPrivilegedSocketDirectory) 630 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_shell, szTemplateShell) 631 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_template_homedir, szTemplateHomedir) 632 _PUBLIC_ FN_GLOBAL_BOOL(lp_winbind_sealed_pipes, bWinbindSealedPipes) 633 _PUBLIC_ FN_GLOBAL_BOOL(lp_idmap_trusted_only, bIdmapTrustedOnly) 634 _PUBLIC_ FN_GLOBAL_STRING(lp_private_dir, szPrivateDir) 635 _PUBLIC_ FN_GLOBAL_STRING(lp_serverstring, szServerString) 636 _PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, szLockDir) 637 _PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, szModulesDir) 638 _PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, szSetupDir) 639 _PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, ncalrpc_dir) 640 _PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, dos_charset) 641 _PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, unix_charset) 642 _PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, display_charset) 643 _PUBLIC_ FN_GLOBAL_STRING(lp_piddir, szPidDir) 644 _PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, dcerpc_ep_servers) 645 _PUBLIC_ FN_GLOBAL_LIST(lp_server_services, server_services) 646 _PUBLIC_ FN_GLOBAL_STRING(lp_ntptr_providor, ntptr_providor) 647 _PUBLIC_ FN_GLOBAL_STRING(lp_auto_services, szAutoServices) 648 _PUBLIC_ FN_GLOBAL_STRING(lp_passwd_chat, szPasswdChat) 649 _PUBLIC_ FN_GLOBAL_LIST(lp_passwordserver, szPasswordServers) 650 _PUBLIC_ FN_GLOBAL_LIST(lp_name_resolve_order, szNameResolveOrder) 651 _PUBLIC_ FN_GLOBAL_STRING(lp_realm, szRealm) 652 _PUBLIC_ FN_GLOBAL_STRING(lp_socket_options, socket_options) 653 _PUBLIC_ FN_GLOBAL_STRING(lp_workgroup, szWorkgroup) 654 _PUBLIC_ FN_GLOBAL_STRING(lp_netbios_name, szNetbiosName) 655 _PUBLIC_ FN_GLOBAL_STRING(lp_netbios_scope, szNetbiosScope) 656 _PUBLIC_ FN_GLOBAL_LIST(lp_wins_server_list, szWINSservers) 657 _PUBLIC_ FN_GLOBAL_LIST(lp_interfaces, szInterfaces) 658 _PUBLIC_ FN_GLOBAL_STRING(lp_socket_address, szSocketAddress) 659 _PUBLIC_ FN_GLOBAL_LIST(lp_netbios_aliases, szNetbiosAliases) 660 661 _PUBLIC_ FN_GLOBAL_BOOL(lp_disable_netbios, bDisableNetbios) 662 _PUBLIC_ FN_GLOBAL_BOOL(lp_wins_support, bWINSsupport) 663 _PUBLIC_ FN_GLOBAL_BOOL(lp_wins_dns_proxy, bWINSdnsProxy) 664 _PUBLIC_ FN_GLOBAL_STRING(lp_wins_hook, szWINSHook) 665 _PUBLIC_ FN_GLOBAL_BOOL(lp_local_master, bLocalMaster) 666 _PUBLIC_ FN_GLOBAL_BOOL(lp_readraw, bReadRaw) 667 _PUBLIC_ FN_GLOBAL_BOOL(lp_large_readwrite, bLargeReadwrite) 668 _PUBLIC_ FN_GLOBAL_BOOL(lp_writeraw, bWriteRaw) 669 _PUBLIC_ FN_GLOBAL_BOOL(lp_null_passwords, bNullPasswords) 670 _PUBLIC_ FN_GLOBAL_BOOL(lp_obey_pam_restrictions, bObeyPamRestrictions) 671 _PUBLIC_ FN_GLOBAL_BOOL(lp_encrypted_passwords, bEncryptPasswords) 672 _PUBLIC_ FN_GLOBAL_BOOL(lp_time_server, bTimeServer) 673 _PUBLIC_ FN_GLOBAL_BOOL(lp_bind_interfaces_only, bBindInterfacesOnly) 674 _PUBLIC_ FN_GLOBAL_BOOL(lp_unicode, bUnicode) 675 _PUBLIC_ FN_GLOBAL_BOOL(lp_nt_status_support, bNTStatusSupport) 676 _PUBLIC_ FN_GLOBAL_BOOL(lp_lanman_auth, bLanmanAuth) 677 _PUBLIC_ FN_GLOBAL_BOOL(lp_ntlm_auth, bNTLMAuth) 678 _PUBLIC_ FN_GLOBAL_BOOL(lp_client_plaintext_auth, bClientPlaintextAuth) 679 _PUBLIC_ FN_GLOBAL_BOOL(lp_client_lanman_auth, bClientLanManAuth) 680 _PUBLIC_ FN_GLOBAL_BOOL(lp_client_ntlmv2_auth, bClientNTLMv2Auth) 681 _PUBLIC_ FN_GLOBAL_BOOL(lp_client_use_spnego_principal, client_use_spnego_principal) 682 _PUBLIC_ FN_GLOBAL_BOOL(lp_host_msdfs, bHostMSDfs) 683 _PUBLIC_ FN_GLOBAL_BOOL(lp_unix_extensions, bUnixExtensions) 684 _PUBLIC_ FN_GLOBAL_BOOL(lp_use_spnego, bUseSpnego) 685 _PUBLIC_ FN_GLOBAL_BOOL(lp_rpc_big_endian, bRpcBigEndian) 686 _PUBLIC_ FN_GLOBAL_INTEGER(lp_max_wins_ttl, max_wins_ttl) 687 _PUBLIC_ FN_GLOBAL_INTEGER(lp_min_wins_ttl, min_wins_ttl) 688 _PUBLIC_ FN_GLOBAL_INTEGER(lp_maxmux, max_mux) 689 _PUBLIC_ FN_GLOBAL_INTEGER(lp_max_xmit, max_xmit) 690 _PUBLIC_ FN_GLOBAL_INTEGER(lp_passwordlevel, pwordlevel) 691 _PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_maxprotocol, srv_maxprotocol) 692 _PUBLIC_ FN_GLOBAL_INTEGER(lp_srv_minprotocol, srv_minprotocol) 693 _PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_maxprotocol, cli_maxprotocol) 694 _PUBLIC_ FN_GLOBAL_INTEGER(lp_cli_minprotocol, cli_minprotocol) 695 _PUBLIC_ FN_GLOBAL_INTEGER(lp_security, security) 696 _PUBLIC_ FN_GLOBAL_BOOL(lp_paranoid_server_security, paranoid_server_security) 697 _PUBLIC_ FN_GLOBAL_INTEGER(lp_announce_as, announce_as) 698 const char *lp_servicename(const struct loadparm_service *service) 699 { 700 return lp_string((const char *)service->szService); 701 } 702 703 _PUBLIC_ FN_LOCAL_STRING(lp_pathname, szPath) 704 static FN_LOCAL_STRING(_lp_printername, szPrintername) 705 _PUBLIC_ FN_LOCAL_LIST(lp_hostsallow, szHostsallow) 706 _PUBLIC_ FN_LOCAL_LIST(lp_hostsdeny, szHostsdeny) 707 _PUBLIC_ FN_LOCAL_STRING(lp_comment, comment) 708 _PUBLIC_ FN_LOCAL_STRING(lp_fstype, fstype) 709 static FN_LOCAL_STRING(lp_volume, volume) 710 _PUBLIC_ FN_LOCAL_LIST(lp_ntvfs_handler, ntvfs_handler) 711 _PUBLIC_ FN_LOCAL_BOOL(lp_msdfs_root, bMSDfsRoot) 712 _PUBLIC_ FN_LOCAL_BOOL(lp_browseable, bBrowseable) 713 _PUBLIC_ FN_LOCAL_BOOL(lp_readonly, bRead_only) 714 _PUBLIC_ FN_LOCAL_BOOL(lp_print_ok, bPrint_ok) 715 _PUBLIC_ FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden) 716 _PUBLIC_ FN_LOCAL_BOOL(lp_map_archive, bMap_archive) 717 _PUBLIC_ FN_LOCAL_BOOL(lp_strict_locking, bStrictLocking) 718 _PUBLIC_ FN_LOCAL_BOOL(lp_oplocks, bOplocks) 719 _PUBLIC_ FN_LOCAL_BOOL(lp_strict_sync, bStrictSync) 720 _PUBLIC_ FN_LOCAL_BOOL(lp_ci_filesystem, bCIFileSystem) 721 _PUBLIC_ FN_LOCAL_BOOL(lp_map_system, bMap_system) 722 _PUBLIC_ FN_LOCAL_INTEGER(lp_max_connections, iMaxConnections) 723 _PUBLIC_ FN_LOCAL_INTEGER(lp_csc_policy, iCSCPolicy) 724 _PUBLIC_ FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) 725 _PUBLIC_ FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) 726 _PUBLIC_ FN_LOCAL_INTEGER(lp_dir_mask, iDir_mask) 727 _PUBLIC_ FN_LOCAL_INTEGER(lp_force_dir_mode, iDir_force_mode) 728 _PUBLIC_ FN_GLOBAL_INTEGER(lp_server_signing, server_signing) 729 _PUBLIC_ FN_GLOBAL_INTEGER(lp_client_signing, client_signing) 730 731 _PUBLIC_ FN_GLOBAL_CONST_STRING(lp_ntp_signd_socket_directory, szNTPSignDSocketDirectory) 641 _PUBLIC_ int lpcfg_ ## fn_name(struct loadparm_service *service, struct loadparm_service *sDefault) {return((service != NULL)? service->val : sDefault->val);} 642 643 FN_GLOBAL_INTEGER(server_role, server_role) 644 FN_GLOBAL_INTEGER(sid_generator, sid_generator) 645 FN_GLOBAL_LIST(smb_ports, smb_ports) 646 FN_GLOBAL_INTEGER(nbt_port, nbt_port) 647 FN_GLOBAL_INTEGER(dgram_port, dgram_port) 648 FN_GLOBAL_INTEGER(cldap_port, cldap_port) 649 FN_GLOBAL_INTEGER(krb5_port, krb5_port) 650 FN_GLOBAL_INTEGER(kpasswd_port, kpasswd_port) 651 FN_GLOBAL_INTEGER(web_port, web_port) 652 FN_GLOBAL_BOOL(tls_enabled, tls_enabled) 653 FN_GLOBAL_STRING(share_backend, szShareBackend) 654 FN_GLOBAL_STRING(sam_url, szSAM_URL) 655 FN_GLOBAL_STRING(idmap_url, szIDMAP_URL) 656 FN_GLOBAL_STRING(secrets_url, szSECRETS_URL) 657 FN_GLOBAL_STRING(spoolss_url, szSPOOLSS_URL) 658 FN_GLOBAL_STRING(wins_config_url, szWINS_CONFIG_URL) 659 FN_GLOBAL_STRING(wins_url, szWINS_URL) 660 FN_GLOBAL_CONST_STRING(winbind_separator, szWinbindSeparator) 661 FN_GLOBAL_CONST_STRING(winbindd_socket_directory, szWinbinddSocketDirectory) 662 FN_GLOBAL_CONST_STRING(winbindd_privileged_socket_directory, szWinbinddPrivilegedSocketDirectory) 663 FN_GLOBAL_CONST_STRING(template_shell, szTemplateShell) 664 FN_GLOBAL_CONST_STRING(template_homedir, szTemplateHomedir) 665 FN_GLOBAL_BOOL(winbind_sealed_pipes, bWinbindSealedPipes) 666 FN_GLOBAL_BOOL(idmap_trusted_only, bIdmapTrustedOnly) 667 FN_GLOBAL_STRING(private_dir, szPrivateDir) 668 FN_GLOBAL_STRING(serverstring, szServerString) 669 FN_GLOBAL_STRING(lockdir, szLockDir) 670 FN_GLOBAL_STRING(modulesdir, szModulesDir) 671 FN_GLOBAL_STRING(ncalrpc_dir, ncalrpc_dir) 672 FN_GLOBAL_STRING(dos_charset, dos_charset) 673 FN_GLOBAL_STRING(unix_charset, unix_charset) 674 FN_GLOBAL_STRING(display_charset, display_charset) 675 FN_GLOBAL_STRING(piddir, szPidDir) 676 FN_GLOBAL_LIST(rndc_command, szRNDCCommand) 677 FN_GLOBAL_LIST(dns_update_command, szDNSUpdateCommand) 678 FN_GLOBAL_LIST(spn_update_command, szSPNUpdateCommand) 679 FN_GLOBAL_LIST(nsupdate_command, szNSUpdateCommand) 680 FN_GLOBAL_LIST(dcerpc_endpoint_servers, dcerpc_ep_servers) 681 FN_GLOBAL_LIST(server_services, server_services) 682 FN_GLOBAL_STRING(ntptr_providor, ntptr_providor) 683 FN_GLOBAL_STRING(auto_services, szAutoServices) 684 FN_GLOBAL_STRING(passwd_chat, szPasswdChat) 685 FN_GLOBAL_LIST(passwordserver, szPasswordServers) 686 FN_GLOBAL_LIST(name_resolve_order, szNameResolveOrder) 687 FN_GLOBAL_STRING(realm, szRealm_upper) 688 FN_GLOBAL_STRING(dnsdomain, szRealm_lower) 689 FN_GLOBAL_STRING(socket_options, socket_options) 690 FN_GLOBAL_STRING(workgroup, szWorkgroup) 691 FN_GLOBAL_STRING(netbios_name, szNetbiosName) 692 FN_GLOBAL_STRING(netbios_scope, szNetbiosScope) 693 FN_GLOBAL_LIST(wins_server_list, szWINSservers) 694 FN_GLOBAL_LIST(interfaces, szInterfaces) 695 FN_GLOBAL_STRING(socket_address, szSocketAddress) 696 FN_GLOBAL_LIST(netbios_aliases, szNetbiosAliases) 697 FN_GLOBAL_BOOL(disable_netbios, bDisableNetbios) 698 FN_GLOBAL_BOOL(wins_support, bWINSsupport) 699 FN_GLOBAL_BOOL(wins_dns_proxy, bWINSdnsProxy) 700 FN_GLOBAL_STRING(wins_hook, szWINSHook) 701 FN_GLOBAL_BOOL(local_master, bLocalMaster) 702 FN_GLOBAL_BOOL(readraw, bReadRaw) 703 FN_GLOBAL_BOOL(large_readwrite, bLargeReadwrite) 704 FN_GLOBAL_BOOL(writeraw, bWriteRaw) 705 FN_GLOBAL_BOOL(null_passwords, bNullPasswords) 706 FN_GLOBAL_BOOL(obey_pam_restrictions, bObeyPamRestrictions) 707 FN_GLOBAL_BOOL(encrypted_passwords, bEncryptPasswords) 708 FN_GLOBAL_BOOL(time_server, bTimeServer) 709 FN_GLOBAL_BOOL(bind_interfaces_only, bBindInterfacesOnly) 710 FN_GLOBAL_BOOL(unicode, bUnicode) 711 FN_GLOBAL_BOOL(nt_status_support, bNTStatusSupport) 712 FN_GLOBAL_BOOL(lanman_auth, bLanmanAuth) 713 FN_GLOBAL_BOOL(ntlm_auth, bNTLMAuth) 714 FN_GLOBAL_BOOL(client_plaintext_auth, bClientPlaintextAuth) 715 FN_GLOBAL_BOOL(client_lanman_auth, bClientLanManAuth) 716 FN_GLOBAL_BOOL(client_ntlmv2_auth, bClientNTLMv2Auth) 717 FN_GLOBAL_BOOL(client_use_spnego_principal, client_use_spnego_principal) 718 FN_GLOBAL_BOOL(host_msdfs, bHostMSDfs) 719 FN_GLOBAL_BOOL(unix_extensions, bUnixExtensions) 720 FN_GLOBAL_BOOL(use_spnego, bUseSpnego) 721 FN_GLOBAL_BOOL(rpc_big_endian, bRpcBigEndian) 722 FN_GLOBAL_INTEGER(max_wins_ttl, max_wins_ttl) 723 FN_GLOBAL_INTEGER(min_wins_ttl, min_wins_ttl) 724 FN_GLOBAL_INTEGER(maxmux, max_mux) 725 FN_GLOBAL_INTEGER(max_xmit, max_xmit) 726 FN_GLOBAL_INTEGER(passwordlevel, pwordlevel) 727 FN_GLOBAL_INTEGER(srv_maxprotocol, srv_maxprotocol) 728 FN_GLOBAL_INTEGER(srv_minprotocol, srv_minprotocol) 729 FN_GLOBAL_INTEGER(cli_maxprotocol, cli_maxprotocol) 730 FN_GLOBAL_INTEGER(cli_minprotocol, cli_minprotocol) 731 FN_GLOBAL_INTEGER(security, security) 732 FN_GLOBAL_BOOL(paranoid_server_security, paranoid_server_security) 733 FN_GLOBAL_INTEGER(announce_as, announce_as) 734 735 FN_LOCAL_STRING(pathname, szPath) 736 FN_LOCAL_LIST(hostsallow, szHostsallow) 737 FN_LOCAL_LIST(hostsdeny, szHostsdeny) 738 FN_LOCAL_STRING(comment, comment) 739 FN_LOCAL_STRING(fstype, fstype) 740 FN_LOCAL_LIST(ntvfs_handler, ntvfs_handler) 741 FN_LOCAL_BOOL(msdfs_root, bMSDfsRoot) 742 FN_LOCAL_BOOL(browseable, bBrowseable) 743 FN_LOCAL_BOOL(readonly, bRead_only) 744 FN_LOCAL_BOOL(print_ok, bPrint_ok) 745 FN_LOCAL_BOOL(map_hidden, bMap_hidden) 746 FN_LOCAL_BOOL(map_archive, bMap_archive) 747 FN_LOCAL_BOOL(strict_locking, bStrictLocking) 748 FN_LOCAL_BOOL(oplocks, bOplocks) 749 FN_LOCAL_BOOL(strict_sync, bStrictSync) 750 FN_LOCAL_BOOL(ci_filesystem, bCIFileSystem) 751 FN_LOCAL_BOOL(map_system, bMap_system) 752 FN_LOCAL_INTEGER(max_connections, iMaxConnections) 753 FN_LOCAL_INTEGER(csc_policy, iCSCPolicy) 754 FN_LOCAL_INTEGER(create_mask, iCreate_mask) 755 FN_LOCAL_INTEGER(force_create_mode, iCreate_force_mode) 756 FN_LOCAL_INTEGER(dir_mask, iDir_mask) 757 FN_LOCAL_INTEGER(force_dir_mode, iDir_force_mode) 758 FN_GLOBAL_INTEGER(server_signing, server_signing) 759 FN_GLOBAL_INTEGER(client_signing, client_signing) 760 761 FN_GLOBAL_CONST_STRING(ntp_signd_socket_directory, szNTPSignDSocketDirectory) 732 762 733 763 /* local prototypes */ 734 764 static int map_parameter(const char *pszParmName); 735 static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, 765 static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, 736 766 const char *pszServiceName); 737 767 static void copy_service(struct loadparm_service *pserviceDest, … … 745 775 /* It returns a pointer to parametrical option value if it exists or NULL otherwise */ 746 776 /* Actual parametrical functions are quite simple */ 747 const char *lp _get_parametric(struct loadparm_context *lp_ctx,777 const char *lpcfg_get_parametric(struct loadparm_context *lp_ctx, 748 778 struct loadparm_service *service, 749 779 const char *type, const char *option) 750 780 { 751 char *vfskey ;752 781 char *vfskey = NULL; 782 struct parmlist_entry *data; 753 783 754 784 if (lp_ctx == NULL) … … 758 788 759 789 asprintf(&vfskey, "%s:%s", type, option); 790 if (vfskey == NULL) return NULL; 760 791 strlower(vfskey); 761 792 … … 855 886 */ 856 887 857 const char *lp _parm_string(struct loadparm_context *lp_ctx,858 struct loadparm_service *service, const char *type,859 const char *option)860 { 861 const char *value = lp _get_parametric(lp_ctx, service, type, option);888 const char *lpcfg_parm_string(struct loadparm_context *lp_ctx, 889 struct loadparm_service *service, const char *type, 890 const char *option) 891 { 892 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 862 893 863 894 if (value) … … 873 904 */ 874 905 875 const char **lp _parm_string_list(TALLOC_CTX *mem_ctx,876 struct loadparm_context *lp_ctx,877 struct loadparm_service *service,878 const char *type,879 const char *option, const char *separator)880 { 881 const char *value = lp _get_parametric(lp_ctx, service, type, option);906 const char **lpcfg_parm_string_list(TALLOC_CTX *mem_ctx, 907 struct loadparm_context *lp_ctx, 908 struct loadparm_service *service, 909 const char *type, 910 const char *option, const char *separator) 911 { 912 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 882 913 883 914 if (value != NULL) … … 892 923 */ 893 924 894 int lp _parm_int(struct loadparm_context *lp_ctx,895 struct loadparm_service *service, const char *type,896 const char *option, int default_v)897 { 898 const char *value = lp _get_parametric(lp_ctx, service, type, option);925 int lpcfg_parm_int(struct loadparm_context *lp_ctx, 926 struct loadparm_service *service, const char *type, 927 const char *option, int default_v) 928 { 929 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 899 930 900 931 if (value) … … 910 941 */ 911 942 912 int lp _parm_bytes(struct loadparm_context *lp_ctx,943 int lpcfg_parm_bytes(struct loadparm_context *lp_ctx, 913 944 struct loadparm_service *service, const char *type, 914 945 const char *option, int default_v) … … 916 947 uint64_t bval; 917 948 918 const char *value = lp _get_parametric(lp_ctx, service, type, option);949 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 919 950 920 951 if (value && conv_str_size(value, &bval)) { … … 932 963 * Parametric option has following syntax: 'Type: option = value' 933 964 */ 934 unsigned long lp _parm_ulong(struct loadparm_context *lp_ctx,965 unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx, 935 966 struct loadparm_service *service, const char *type, 936 967 const char *option, unsigned long default_v) 937 968 { 938 const char *value = lp _get_parametric(lp_ctx, service, type, option);969 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 939 970 940 971 if (value) … … 945 976 946 977 947 double lp _parm_double(struct loadparm_context *lp_ctx,978 double lpcfg_parm_double(struct loadparm_context *lp_ctx, 948 979 struct loadparm_service *service, const char *type, 949 980 const char *option, double default_v) 950 981 { 951 const char *value = lp _get_parametric(lp_ctx, service, type, option);982 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 952 983 953 984 if (value != NULL) … … 962 993 */ 963 994 964 bool lp _parm_bool(struct loadparm_context *lp_ctx,965 struct loadparm_service *service, const char *type,966 const char *option, bool default_v)967 { 968 const char *value = lp _get_parametric(lp_ctx, service, type, option);995 bool lpcfg_parm_bool(struct loadparm_context *lp_ctx, 996 struct loadparm_service *service, const char *type, 997 const char *option, bool default_v) 998 { 999 const char *value = lpcfg_get_parametric(lp_ctx, service, type, option); 969 1000 970 1001 if (value != NULL) … … 1014 1045 */ 1015 1046 1016 struct loadparm_service *lp _add_service(struct loadparm_context *lp_ctx,1017 1018 1047 struct loadparm_service *lpcfg_add_service(struct loadparm_context *lp_ctx, 1048 const struct loadparm_service *pservice, 1049 const char *name) 1019 1050 { 1020 1051 int i; … … 1022 1053 int num_to_alloc = lp_ctx->iNumServices + 1; 1023 1054 struct parmlist_entry *data, *pdata; 1055 1056 if (pservice == NULL) { 1057 pservice = lp_ctx->sDefault; 1058 } 1024 1059 1025 1060 tservice = *pservice; … … 1055 1090 1056 1091 if (!tsp) { 1057 DEBUG(0,("lp _add_service: failed to enlarge services!\n"));1092 DEBUG(0,("lpcfg_add_service: failed to enlarge services!\n")); 1058 1093 return NULL; 1059 1094 } else { … … 1067 1102 lp_ctx->services[i] = init_service(lp_ctx->services, lp_ctx->sDefault); 1068 1103 if (lp_ctx->services[i] == NULL) { 1069 DEBUG(0,("lp _add_service: out of memory!\n"));1104 DEBUG(0,("lpcfg_add_service: out of memory!\n")); 1070 1105 return NULL; 1071 1106 } … … 1081 1116 */ 1082 1117 1083 bool lp _add_home(struct loadparm_context *lp_ctx,1118 bool lpcfg_add_home(struct loadparm_context *lp_ctx, 1084 1119 const char *pszHomename, 1085 1120 struct loadparm_service *default_service, … … 1088 1123 struct loadparm_service *service; 1089 1124 1090 service = lp _add_service(lp_ctx, default_service, pszHomename);1125 service = lpcfg_add_service(lp_ctx, default_service, pszHomename); 1091 1126 1092 1127 if (service == NULL) … … 1097 1132 service->szPath = talloc_strdup(service, pszHomedir); 1098 1133 } else { 1099 service->szPath = string_sub_talloc(service, lp _pathname(default_service, lp_ctx->sDefault), "%H", pszHomedir);1134 service->szPath = string_sub_talloc(service, lpcfg_pathname(default_service, lp_ctx->sDefault), "%H", pszHomedir); 1100 1135 } 1101 1136 … … 1108 1143 DEBUG(3, ("adding home's share [%s] for user '%s' at '%s'\n", 1109 1144 pszHomename, user, service->szPath)); 1110 1111 return true;1112 }1113 1114 /**1115 * Add the IPC service.1116 */1117 1118 static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name,1119 const char *fstype)1120 {1121 struct loadparm_service *service = lp_add_service(lp_ctx, lp_ctx->sDefault, name);1122 1123 if (service == NULL)1124 return false;1125 1126 string_set(service, &service->szPath, tmpdir());1127 1128 service->comment = talloc_asprintf(service, "%s Service (%s)",1129 fstype, lp_ctx->globals->szServerString);1130 string_set(service, &service->fstype, fstype);1131 service->iMaxConnections = -1;1132 service->bAvailable = true;1133 service->bRead_only = true;1134 service->bPrint_ok = false;1135 service->bBrowseable = false;1136 1137 if (strcasecmp(fstype, "IPC") == 0) {1138 lp_do_service_parameter(lp_ctx, service, "ntvfs handler",1139 "default");1140 }1141 1142 DEBUG(3, ("adding hidden service %s\n", name));1143 1145 1144 1146 return true; … … 1155 1157 const char *comment = "From Printcap"; 1156 1158 struct loadparm_service *service; 1157 service = lp _add_service(lp_ctx, default_service, pszPrintername);1159 service = lpcfg_add_service(lp_ctx, default_service, pszPrintername); 1158 1160 1159 1161 if (service == NULL) … … 1208 1210 return the parameter structure for a parameter 1209 1211 */ 1210 struct parm_struct *lp _parm_struct(const char *name)1212 struct parm_struct *lpcfg_parm_struct(const char *name) 1211 1213 { 1212 1214 int parmnum = map_parameter(name); … … 1218 1220 return the parameter pointer for a parameter 1219 1221 */ 1220 void *lp _parm_ptr(struct loadparm_context *lp_ctx,1222 void *lpcfg_parm_ptr(struct loadparm_context *lp_ctx, 1221 1223 struct loadparm_service *service, struct parm_struct *parm) 1222 1224 { … … 1236 1238 */ 1237 1239 1238 static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, 1240 static struct loadparm_service *getservicebyname(struct loadparm_context *lp_ctx, 1239 1241 const char *pszServiceName) 1240 1242 { … … 1329 1331 } 1330 1332 if (not_added) { 1331 paramo = talloc (pserviceDest, struct parmlist_entry);1333 paramo = talloc_zero(pserviceDest, struct parmlist_entry); 1332 1334 if (paramo == NULL) 1333 1335 smb_panic("OOM"); … … 1449 1451 1450 1452 /*************************************************************************** 1453 Handle the "realm" parameter 1454 ***************************************************************************/ 1455 1456 static bool handle_realm(struct loadparm_context *lp_ctx, 1457 const char *pszParmValue, char **ptr) 1458 { 1459 string_set(lp_ctx, ptr, pszParmValue); 1460 1461 talloc_free(lp_ctx->globals->szRealm_upper); 1462 talloc_free(lp_ctx->globals->szRealm_lower); 1463 1464 lp_ctx->globals->szRealm_upper = strupper_talloc(lp_ctx, pszParmValue); 1465 lp_ctx->globals->szRealm_lower = strlower_talloc(lp_ctx, pszParmValue); 1466 1467 return true; 1468 } 1469 1470 /*************************************************************************** 1451 1471 Handle the include operation. 1452 1472 ***************************************************************************/ … … 1506 1526 const char *pszParmValue, char **ptr) 1507 1527 { 1508 DEBUGLEVEL = atoi(pszParmValue); 1509 1510 return true;1528 1529 string_set(lp_ctx, ptr, pszParmValue); 1530 return debug_parse_levels(pszParmValue); 1511 1531 } 1512 1532 … … 1514 1534 const char *pszParmValue, char **ptr) 1515 1535 { 1516 logfile = pszParmValue; 1536 debug_set_logfile(pszParmValue); 1537 string_set(lp_ctx, ptr, pszParmValue); 1517 1538 return true; 1518 1539 } … … 1584 1605 } 1585 1606 1586 paramo = talloc (mem_ctx, struct parmlist_entry);1607 paramo = talloc_zero(mem_ctx, struct parmlist_entry); 1587 1608 if (!paramo) 1588 1609 smb_panic("OOM"); … … 1603 1624 static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr, 1604 1625 const char *pszParmName, const char *pszParmValue, 1605 struct loadparm_context *lp_ctx )1626 struct loadparm_context *lp_ctx, bool on_globals) 1606 1627 { 1607 1628 int i; 1608 1629 /* if it is a special case then go ahead */ 1609 1630 if (parm_table[parmnum].special) { 1610 parm_table[parmnum].special(lp_ctx, pszParmValue, 1611 (char **)parm_ptr); 1612 return true; 1631 bool ret; 1632 ret = parm_table[parmnum].special(lp_ctx, pszParmValue, 1633 (char **)parm_ptr); 1634 if (!ret) { 1635 return false; 1636 } 1637 goto mark_non_default; 1613 1638 } 1614 1639 … … 1649 1674 } 1650 1675 1651 case P_ LIST:1676 case P_CMDLIST: 1652 1677 *(const char ***)parm_ptr = (const char **)str_list_make(mem_ctx, 1653 1678 pszParmValue, NULL); 1654 1679 break; 1655 1680 case P_LIST: 1681 { 1682 char **new_list = str_list_make(mem_ctx, 1683 pszParmValue, NULL); 1684 for (i=0; new_list[i]; i++) { 1685 if (new_list[i][0] == '+' && new_list[i][1]) { 1686 *(const char ***)parm_ptr = str_list_add(*(const char ***)parm_ptr, 1687 &new_list[i][1]); 1688 } else if (new_list[i][0] == '-' && new_list[i][1]) { 1689 if (!str_list_check(*(const char ***)parm_ptr, 1690 &new_list[i][1])) { 1691 DEBUG(0, ("Unsupported value for: %s = %s, %s is not in the original list\n", 1692 pszParmName, pszParmValue, new_list[i])); 1693 return false; 1694 1695 } 1696 str_list_remove(*(const char ***)parm_ptr, 1697 &new_list[i][1]); 1698 } else { 1699 if (i != 0) { 1700 DEBUG(0, ("Unsupported list syntax for: %s = %s\n", 1701 pszParmName, pszParmValue)); 1702 return false; 1703 } 1704 *(const char ***)parm_ptr = (const char **) new_list; 1705 break; 1706 } 1707 } 1708 break; 1709 } 1656 1710 case P_STRING: 1657 1711 string_set(mem_ctx, (char **)parm_ptr, pszParmValue); … … 1682 1736 } 1683 1737 1684 if (lp_ctx->flags[parmnum] & FLAG_DEFAULT) { 1738 mark_non_default: 1739 if (on_globals && (lp_ctx->flags[parmnum] & FLAG_DEFAULT)) { 1685 1740 lp_ctx->flags[parmnum] &= ~FLAG_DEFAULT; 1686 1741 /* we have to also unset FLAG_DEFAULT on aliases */ … … 1696 1751 1697 1752 1698 bool lp _do_global_parameter(struct loadparm_context *lp_ctx,1699 const char *pszParmName, const char *pszParmValue)1753 bool lpcfg_do_global_parameter(struct loadparm_context *lp_ctx, 1754 const char *pszParmName, const char *pszParmValue) 1700 1755 { 1701 1756 int parmnum = map_parameter(pszParmName); … … 1716 1771 } 1717 1772 1718 parm_ptr = lp _parm_ptr(lp_ctx, NULL, &parm_table[parmnum]);1719 1720 return set_variable(lp_ctx , parmnum, parm_ptr,1721 pszParmName, pszParmValue, lp_ctx );1722 } 1723 1724 bool lp _do_service_parameter(struct loadparm_context *lp_ctx,1725 1726 1773 parm_ptr = lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[parmnum]); 1774 1775 return set_variable(lp_ctx->globals, parmnum, parm_ptr, 1776 pszParmName, pszParmValue, lp_ctx, true); 1777 } 1778 1779 bool lpcfg_do_service_parameter(struct loadparm_context *lp_ctx, 1780 struct loadparm_service *service, 1781 const char *pszParmName, const char *pszParmValue) 1727 1782 { 1728 1783 void *parm_ptr; … … 1763 1818 1764 1819 return set_variable(service, parmnum, parm_ptr, pszParmName, 1765 pszParmValue, lp_ctx );1820 pszParmValue, lp_ctx, false); 1766 1821 } 1767 1822 … … 1776 1831 1777 1832 if (lp_ctx->bInGlobalSection) 1778 return lp _do_global_parameter(lp_ctx, pszParmName,1833 return lpcfg_do_global_parameter(lp_ctx, pszParmName, 1779 1834 pszParmValue); 1780 1835 else 1781 return lp _do_service_parameter(lp_ctx, lp_ctx->currentService,1782 1836 return lpcfg_do_service_parameter(lp_ctx, lp_ctx->currentService, 1837 pszParmName, pszParmValue); 1783 1838 } 1784 1839 … … 1786 1841 variable argument do parameter 1787 1842 */ 1788 bool lp _do_global_parameter_var(struct loadparm_context *lp_ctx, const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4);1789 bool lp _do_global_parameter_var(struct loadparm_context *lp_ctx,1843 bool lpcfg_do_global_parameter_var(struct loadparm_context *lp_ctx, const char *pszParmName, const char *fmt, ...) PRINTF_ATTRIBUTE(3, 4); 1844 bool lpcfg_do_global_parameter_var(struct loadparm_context *lp_ctx, 1790 1845 const char *pszParmName, const char *fmt, ...) 1791 1846 { … … 1797 1852 s = talloc_vasprintf(NULL, fmt, ap); 1798 1853 va_end(ap); 1799 ret = lp _do_global_parameter(lp_ctx, pszParmName, s);1854 ret = lpcfg_do_global_parameter(lp_ctx, pszParmName, s); 1800 1855 talloc_free(s); 1801 1856 return ret; … … 1808 1863 by smb.conf processing 1809 1864 */ 1810 bool lp _set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,1811 const char *pszParmValue)1865 bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, 1866 const char *pszParmValue) 1812 1867 { 1813 1868 int parmnum = map_parameter(pszParmName); … … 1831 1886 lp_ctx->flags[parmnum] &= ~FLAG_CMDLINE; 1832 1887 1833 if (!lp _do_global_parameter(lp_ctx, pszParmName, pszParmValue)) {1888 if (!lpcfg_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) { 1834 1889 return false; 1835 1890 } … … 1851 1906 set a option from the commandline in 'a=b' format. Use to support --option 1852 1907 */ 1853 bool lp _set_option(struct loadparm_context *lp_ctx, const char *option)1908 bool lpcfg_set_option(struct loadparm_context *lp_ctx, const char *option) 1854 1909 { 1855 1910 char *p, *s; … … 1869 1924 *p = 0; 1870 1925 1871 ret = lp _set_cmdline(lp_ctx, s, p+1);1926 ret = lpcfg_set_cmdline(lp_ctx, s, p+1); 1872 1927 free(s); 1873 1928 return ret; … … 1884 1939 { 1885 1940 int i; 1941 const char *list_sep = ", "; /* For the seperation of lists values that we print below */ 1886 1942 switch (p->type) 1887 1943 { … … 1909 1965 break; 1910 1966 1967 case P_CMDLIST: 1968 list_sep = " "; 1969 /* fall through */ 1911 1970 case P_LIST: 1912 1971 if ((char ***)ptr && *(char ***)ptr) { 1913 1972 char **list = *(char ***)ptr; 1914 1973 1915 for (; *list; list++) 1916 fprintf(f, "%s%s", *list, 1917 ((*(list+1))?", ":"")); 1974 for (; *list; list++) { 1975 if (*(list+1) == NULL) { 1976 /* last item, print no extra seperator after */ 1977 list_sep = ""; 1978 } 1979 fprintf(f, "%s%s", *list, list_sep); 1980 } 1918 1981 } 1919 1982 break; … … 1944 2007 return (*((int *)ptr1) == *((int *)ptr2)); 1945 2008 2009 case P_CMDLIST: 1946 2010 case P_LIST: 1947 2011 return str_list_equal((const char **)(*(char ***)ptr1), … … 1999 2063 DEBUG(2, ("Processing section \"[%s]\"\n", pszSectionName)); 2000 2064 2001 if ((lp_ctx->currentService = lp _add_service(lp_ctx, lp_ctx->sDefault,2002 2065 if ((lp_ctx->currentService = lpcfg_add_service(lp_ctx, lp_ctx->sDefault, 2066 pszSectionName)) 2003 2067 == NULL) { 2004 2068 DEBUG(0, ("Failed to add a new service\n")); … … 2021 2085 return false; 2022 2086 switch (parm_table[i].type) { 2087 case P_CMDLIST: 2023 2088 case P_LIST: 2024 2089 return str_list_equal((const char **)parm_table[i].def.lvalue, … … 2057 2122 parm_table[i].offset != -1 && 2058 2123 (i == 0 || (parm_table[i].offset != parm_table[i - 1].offset))) { 2059 if (!show_defaults && (lp_ctx->flags[i] & FLAG_DEFAULT)) 2124 if (!show_defaults && (lp_ctx->flags[i] & FLAG_DEFAULT)) 2060 2125 continue; 2061 2126 fprintf(f, "\t%s = ", parm_table[i].label); 2062 print_parameter(&parm_table[i], lp _parm_ptr(lp_ctx, NULL, &parm_table[i]), f);2127 print_parameter(&parm_table[i], lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[i]), f); 2063 2128 fprintf(f, "\n"); 2064 2129 } … … 2066 2131 for (data = lp_ctx->globals->param_opt; data; 2067 2132 data = data->next) { 2133 if (!show_defaults && (data->priority & FLAG_DEFAULT)) { 2134 continue; 2135 } 2068 2136 fprintf(f, "\t%s = %s\n", data->key, data->value); 2069 2137 } … … 2076 2144 */ 2077 2145 2078 static void dump_a_service(struct loadparm_service * pService, struct loadparm_service *sDefault, FILE * f) 2146 static void dump_a_service(struct loadparm_service * pService, struct loadparm_service *sDefault, FILE * f, 2147 unsigned int *flags) 2079 2148 { 2080 2149 int i; … … 2091 2160 { 2092 2161 if (pService == sDefault) { 2093 if ( defaults_saved && is_default(sDefault, i))2162 if (flags && (flags[i] & FLAG_DEFAULT)) { 2094 2163 continue; 2164 } 2165 if (defaults_saved) { 2166 if (is_default(sDefault, i)) { 2167 continue; 2168 } 2169 } 2095 2170 } else { 2096 2171 if (equal_parameter(parm_table[i].type, … … 2115 2190 } 2116 2191 2117 bool lp _dump_a_parameter(struct loadparm_context *lp_ctx,2118 struct loadparm_service *service,2119 const char *parm_name, FILE * f)2192 bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx, 2193 struct loadparm_service *service, 2194 const char *parm_name, FILE * f) 2120 2195 { 2121 2196 struct parm_struct *parm; 2122 2197 void *ptr; 2123 2198 2124 parm = lp _parm_struct(parm_name);2199 parm = lpcfg_parm_struct(parm_name); 2125 2200 if (!parm) { 2126 2201 return false; 2127 2202 } 2128 2203 2129 ptr = lp _parm_ptr(lp_ctx, service,parm);2204 ptr = lpcfg_parm_ptr(lp_ctx, service,parm); 2130 2205 2131 2206 print_parameter(parm, ptr, f); … … 2140 2215 */ 2141 2216 2142 struct parm_struct *lp_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, 2143 int allparameters) 2217 2218 struct parm_struct *lpcfg_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, 2219 int allparameters) 2144 2220 { 2145 2221 if (snum == -1) { … … 2188 2264 * Auto-load some home services. 2189 2265 */ 2190 static void lp _add_auto_services(struct loadparm_context *lp_ctx,2191 const char *str)2266 static void lpcfg_add_auto_services(struct loadparm_context *lp_ctx, 2267 const char *str) 2192 2268 { 2193 2269 return; … … 2219 2295 { 2220 2296 struct parmlist_entry *data; 2297 2298 if (lp_ctx->refuse_free) { 2299 /* someone is trying to free the 2300 global_loadparm_context. 2301 We can't allow that. */ 2302 return -1; 2303 } 2221 2304 2222 2305 if (lp_ctx->globals->param_opt != NULL) { … … 2235 2318 /** 2236 2319 * Initialise the global parameter structure. 2320 * 2321 * Note that most callers should use loadparm_init_global() instead 2237 2322 */ 2238 2323 struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) … … 2241 2326 char *myname; 2242 2327 struct loadparm_context *lp_ctx; 2328 struct parmlist_entry *parm; 2243 2329 2244 2330 lp_ctx = talloc_zero(mem_ctx, struct loadparm_context); … … 2280 2366 } 2281 2367 2282 lp_do_global_parameter(lp_ctx, "share backend", "classic"); 2283 2284 lp_do_global_parameter(lp_ctx, "server role", "standalone"); 2368 2369 lpcfg_do_global_parameter(lp_ctx, "log level", "0"); 2370 2371 lpcfg_do_global_parameter(lp_ctx, "share backend", "classic"); 2372 2373 lpcfg_do_global_parameter(lp_ctx, "share backend", "classic"); 2374 2375 lpcfg_do_global_parameter(lp_ctx, "server role", "standalone"); 2285 2376 2286 2377 /* options that can be set on the command line must be initialised via 2287 the slower lp _do_global_parameter() to ensure that FLAG_CMDLINE is obeyed */2378 the slower lpcfg_do_global_parameter() to ensure that FLAG_CMDLINE is obeyed */ 2288 2379 #ifdef TCP_NODELAY 2289 lp _do_global_parameter(lp_ctx, "socket options", "TCP_NODELAY");2380 lpcfg_do_global_parameter(lp_ctx, "socket options", "TCP_NODELAY"); 2290 2381 #endif 2291 lp _do_global_parameter(lp_ctx, "workgroup", DEFAULT_WORKGROUP);2382 lpcfg_do_global_parameter(lp_ctx, "workgroup", DEFAULT_WORKGROUP); 2292 2383 myname = get_myname(lp_ctx); 2293 lp _do_global_parameter(lp_ctx, "netbios name", myname);2384 lpcfg_do_global_parameter(lp_ctx, "netbios name", myname); 2294 2385 talloc_free(myname); 2295 lp_do_global_parameter(lp_ctx, "name resolve order", "wins host bcast"); 2296 2297 lp_do_global_parameter(lp_ctx, "fstype", "NTFS"); 2298 2299 lp_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default"); 2300 lp_do_global_parameter(lp_ctx, "max connections", "-1"); 2301 2302 lp_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo browser"); 2303 lp_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap kdc drepl winbind ntp_signd kcc"); 2304 lp_do_global_parameter(lp_ctx, "ntptr providor", "simple_ldb"); 2305 lp_do_global_parameter(lp_ctx, "auth methods:domain controller", "anonymous sam_ignoredomain"); 2306 lp_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind"); 2307 lp_do_global_parameter(lp_ctx, "auth methods:standalone", "anonymous sam_ignoredomain"); 2308 lp_do_global_parameter(lp_ctx, "private dir", dyn_PRIVATE_DIR); 2309 lp_do_global_parameter(lp_ctx, "sam database", "sam.ldb"); 2310 lp_do_global_parameter(lp_ctx, "idmap database", "idmap.ldb"); 2311 lp_do_global_parameter(lp_ctx, "secrets database", "secrets.ldb"); 2312 lp_do_global_parameter(lp_ctx, "spoolss database", "spoolss.ldb"); 2313 lp_do_global_parameter(lp_ctx, "wins config database", "wins_config.ldb"); 2314 lp_do_global_parameter(lp_ctx, "wins database", "wins.ldb"); 2315 lp_do_global_parameter(lp_ctx, "registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); 2386 lpcfg_do_global_parameter(lp_ctx, "name resolve order", "wins host bcast"); 2387 2388 lpcfg_do_global_parameter(lp_ctx, "fstype", "NTFS"); 2389 2390 lpcfg_do_global_parameter(lp_ctx, "ntvfs handler", "unixuid default"); 2391 lpcfg_do_global_parameter(lp_ctx, "max connections", "-1"); 2392 2393 lpcfg_do_global_parameter(lp_ctx, "dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg dssetup unixinfo browser eventlog6 backupkey"); 2394 lpcfg_do_global_parameter(lp_ctx, "server services", "smb rpc nbt wrepl ldap cldap kdc drepl winbind ntp_signd kcc dnsupdate web"); 2395 lpcfg_do_global_parameter(lp_ctx, "ntptr providor", "simple_ldb"); 2396 /* the winbind method for domain controllers is for both RODC 2397 auth forwarding and for trusted domains */ 2398 lpcfg_do_global_parameter(lp_ctx, "auth methods:domain controller", "anonymous sam_ignoredomain winbind"); 2399 lpcfg_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind"); 2400 lpcfg_do_global_parameter(lp_ctx, "auth methods:standalone", "anonymous sam_ignoredomain"); 2401 lpcfg_do_global_parameter(lp_ctx, "private dir", dyn_PRIVATE_DIR); 2402 lpcfg_do_global_parameter(lp_ctx, "sam database", "sam.ldb"); 2403 lpcfg_do_global_parameter(lp_ctx, "idmap database", "idmap.ldb"); 2404 lpcfg_do_global_parameter(lp_ctx, "secrets database", "secrets.ldb"); 2405 lpcfg_do_global_parameter(lp_ctx, "spoolss database", "spoolss.ldb"); 2406 lpcfg_do_global_parameter(lp_ctx, "wins config database", "wins_config.ldb"); 2407 lpcfg_do_global_parameter(lp_ctx, "wins database", "wins.ldb"); 2408 lpcfg_do_global_parameter(lp_ctx, "registry:HKEY_LOCAL_MACHINE", "hklm.ldb"); 2316 2409 2317 2410 /* This hive should be dynamically generated by Samba using 2318 2411 data from the sam, but for the moment leave it in a tdb to 2319 2412 keep regedt32 from popping up an annoying dialog. */ 2320 lp _do_global_parameter(lp_ctx, "registry:HKEY_USERS", "hku.ldb");2413 lpcfg_do_global_parameter(lp_ctx, "registry:HKEY_USERS", "hku.ldb"); 2321 2414 2322 2415 /* using UTF8 by default allows us to support all chars */ 2323 lp _do_global_parameter(lp_ctx, "unix charset", "UTF8");2416 lpcfg_do_global_parameter(lp_ctx, "unix charset", "UTF8"); 2324 2417 2325 2418 /* Use codepage 850 as a default for the dos character set */ 2326 lp _do_global_parameter(lp_ctx, "dos charset", "CP850");2419 lpcfg_do_global_parameter(lp_ctx, "dos charset", "CP850"); 2327 2420 2328 2421 /* 2329 2422 * Allow the default PASSWD_CHAT to be overridden in local.h. 2330 2423 */ 2331 lp _do_global_parameter(lp_ctx, "passwd chat", DEFAULT_PASSWD_CHAT);2332 2333 lp _do_global_parameter(lp_ctx, "pid directory", dyn_PIDDIR);2334 lp _do_global_parameter(lp_ctx, "lock dir", dyn_LOCKDIR);2335 lp _do_global_parameter(lp_ctx, "modules dir", dyn_MODULESDIR);2336 lp _do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR);2337 2338 lp _do_global_parameter(lp_ctx, "socket address", "0.0.0.0");2339 lp _do_global_parameter_var(lp_ctx, "server string",2424 lpcfg_do_global_parameter(lp_ctx, "passwd chat", DEFAULT_PASSWD_CHAT); 2425 2426 lpcfg_do_global_parameter(lp_ctx, "pid directory", dyn_PIDDIR); 2427 lpcfg_do_global_parameter(lp_ctx, "lock dir", dyn_LOCKDIR); 2428 lpcfg_do_global_parameter(lp_ctx, "modules dir", dyn_MODULESDIR); 2429 lpcfg_do_global_parameter(lp_ctx, "ncalrpc dir", dyn_NCALRPCDIR); 2430 2431 lpcfg_do_global_parameter(lp_ctx, "socket address", "0.0.0.0"); 2432 lpcfg_do_global_parameter_var(lp_ctx, "server string", 2340 2433 "Samba %s", SAMBA_VERSION_STRING); 2341 2434 2342 lp _do_global_parameter_var(lp_ctx, "announce version", "%d.%d",2435 lpcfg_do_global_parameter_var(lp_ctx, "announce version", "%d.%d", 2343 2436 DEFAULT_MAJOR_VERSION, 2344 2437 DEFAULT_MINOR_VERSION); 2345 2438 2346 lp_do_global_parameter(lp_ctx, "password server", "*"); 2347 2348 lp_do_global_parameter(lp_ctx, "max mux", "50"); 2349 lp_do_global_parameter(lp_ctx, "max xmit", "12288"); 2350 lp_do_global_parameter(lp_ctx, "password level", "0"); 2351 lp_do_global_parameter(lp_ctx, "LargeReadwrite", "True"); 2352 lp_do_global_parameter(lp_ctx, "server min protocol", "CORE"); 2353 lp_do_global_parameter(lp_ctx, "server max protocol", "NT1"); 2354 lp_do_global_parameter(lp_ctx, "client min protocol", "CORE"); 2355 lp_do_global_parameter(lp_ctx, "client max protocol", "NT1"); 2356 lp_do_global_parameter(lp_ctx, "security", "USER"); 2357 lp_do_global_parameter(lp_ctx, "paranoid server security", "True"); 2358 lp_do_global_parameter(lp_ctx, "EncryptPasswords", "True"); 2359 lp_do_global_parameter(lp_ctx, "ReadRaw", "True"); 2360 lp_do_global_parameter(lp_ctx, "WriteRaw", "True"); 2361 lp_do_global_parameter(lp_ctx, "NullPasswords", "False"); 2362 lp_do_global_parameter(lp_ctx, "ObeyPamRestrictions", "False"); 2363 lp_do_global_parameter(lp_ctx, "announce as", "NT SERVER"); 2364 2365 lp_do_global_parameter(lp_ctx, "TimeServer", "False"); 2366 lp_do_global_parameter(lp_ctx, "BindInterfacesOnly", "False"); 2367 lp_do_global_parameter(lp_ctx, "Unicode", "True"); 2368 lp_do_global_parameter(lp_ctx, "ClientLanManAuth", "False"); 2369 lp_do_global_parameter(lp_ctx, "LanmanAuth", "False"); 2370 lp_do_global_parameter(lp_ctx, "NTLMAuth", "True"); 2371 lp_do_global_parameter(lp_ctx, "client use spnego principal", "False"); 2372 2373 lp_do_global_parameter(lp_ctx, "UnixExtensions", "False"); 2374 2375 lp_do_global_parameter(lp_ctx, "PreferredMaster", "Auto"); 2376 lp_do_global_parameter(lp_ctx, "LocalMaster", "True"); 2377 2378 lp_do_global_parameter(lp_ctx, "wins support", "False"); 2379 lp_do_global_parameter(lp_ctx, "dns proxy", "True"); 2380 2381 lp_do_global_parameter(lp_ctx, "winbind separator", "\\"); 2382 lp_do_global_parameter(lp_ctx, "winbind sealed pipes", "True"); 2383 lp_do_global_parameter(lp_ctx, "winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); 2384 lp_do_global_parameter(lp_ctx, "winbindd privileged socket directory", dyn_WINBINDD_PRIVILEGED_SOCKET_DIR); 2385 lp_do_global_parameter(lp_ctx, "template shell", "/bin/false"); 2386 lp_do_global_parameter(lp_ctx, "template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); 2387 lp_do_global_parameter(lp_ctx, "idmap trusted only", "False"); 2388 2389 lp_do_global_parameter(lp_ctx, "client signing", "Yes"); 2390 lp_do_global_parameter(lp_ctx, "server signing", "auto"); 2391 2392 lp_do_global_parameter(lp_ctx, "use spnego", "True"); 2393 2394 lp_do_global_parameter(lp_ctx, "smb ports", "445 139"); 2395 lp_do_global_parameter(lp_ctx, "nbt port", "137"); 2396 lp_do_global_parameter(lp_ctx, "dgram port", "138"); 2397 lp_do_global_parameter(lp_ctx, "cldap port", "389"); 2398 lp_do_global_parameter(lp_ctx, "krb5 port", "88"); 2399 lp_do_global_parameter(lp_ctx, "kpasswd port", "464"); 2400 lp_do_global_parameter(lp_ctx, "web port", "901"); 2401 lp_do_global_parameter(lp_ctx, "swat directory", dyn_SWATDIR); 2402 2403 lp_do_global_parameter(lp_ctx, "nt status support", "True"); 2404 2405 lp_do_global_parameter(lp_ctx, "max wins ttl", "518400"); /* 6 days */ 2406 lp_do_global_parameter(lp_ctx, "min wins ttl", "10"); 2407 2408 lp_do_global_parameter(lp_ctx, "tls enabled", "True"); 2409 lp_do_global_parameter(lp_ctx, "tls keyfile", "tls/key.pem"); 2410 lp_do_global_parameter(lp_ctx, "tls certfile", "tls/cert.pem"); 2411 lp_do_global_parameter(lp_ctx, "tls cafile", "tls/ca.pem"); 2412 lp_do_global_parameter_var(lp_ctx, "setup directory", "%s", 2413 dyn_SETUPDIR); 2414 2415 lp_do_global_parameter(lp_ctx, "prefork children:smb", "4"); 2416 2417 lp_do_global_parameter(lp_ctx, "ntp signd socket directory", dyn_NTP_SIGND_SOCKET_DIR); 2439 lpcfg_do_global_parameter(lp_ctx, "password server", "*"); 2440 2441 lpcfg_do_global_parameter(lp_ctx, "max mux", "50"); 2442 lpcfg_do_global_parameter(lp_ctx, "max xmit", "12288"); 2443 lpcfg_do_global_parameter(lp_ctx, "password level", "0"); 2444 lpcfg_do_global_parameter(lp_ctx, "LargeReadwrite", "True"); 2445 lpcfg_do_global_parameter(lp_ctx, "server min protocol", "CORE"); 2446 lpcfg_do_global_parameter(lp_ctx, "server max protocol", "NT1"); 2447 lpcfg_do_global_parameter(lp_ctx, "client min protocol", "CORE"); 2448 lpcfg_do_global_parameter(lp_ctx, "client max protocol", "NT1"); 2449 lpcfg_do_global_parameter(lp_ctx, "security", "USER"); 2450 lpcfg_do_global_parameter(lp_ctx, "paranoid server security", "True"); 2451 lpcfg_do_global_parameter(lp_ctx, "EncryptPasswords", "True"); 2452 lpcfg_do_global_parameter(lp_ctx, "ReadRaw", "True"); 2453 lpcfg_do_global_parameter(lp_ctx, "WriteRaw", "True"); 2454 lpcfg_do_global_parameter(lp_ctx, "NullPasswords", "False"); 2455 lpcfg_do_global_parameter(lp_ctx, "ObeyPamRestrictions", "False"); 2456 lpcfg_do_global_parameter(lp_ctx, "announce as", "NT SERVER"); 2457 2458 lpcfg_do_global_parameter(lp_ctx, "TimeServer", "False"); 2459 lpcfg_do_global_parameter(lp_ctx, "BindInterfacesOnly", "False"); 2460 lpcfg_do_global_parameter(lp_ctx, "Unicode", "True"); 2461 lpcfg_do_global_parameter(lp_ctx, "ClientLanManAuth", "False"); 2462 lpcfg_do_global_parameter(lp_ctx, "ClientNTLMv2Auth", "True"); 2463 lpcfg_do_global_parameter(lp_ctx, "LanmanAuth", "False"); 2464 lpcfg_do_global_parameter(lp_ctx, "NTLMAuth", "True"); 2465 lpcfg_do_global_parameter(lp_ctx, "client use spnego principal", "False"); 2466 2467 lpcfg_do_global_parameter(lp_ctx, "UnixExtensions", "False"); 2468 2469 lpcfg_do_global_parameter(lp_ctx, "PreferredMaster", "Auto"); 2470 lpcfg_do_global_parameter(lp_ctx, "LocalMaster", "True"); 2471 2472 lpcfg_do_global_parameter(lp_ctx, "wins support", "False"); 2473 lpcfg_do_global_parameter(lp_ctx, "dns proxy", "True"); 2474 2475 lpcfg_do_global_parameter(lp_ctx, "winbind separator", "\\"); 2476 lpcfg_do_global_parameter(lp_ctx, "winbind sealed pipes", "True"); 2477 lpcfg_do_global_parameter(lp_ctx, "winbindd socket directory", dyn_WINBINDD_SOCKET_DIR); 2478 lpcfg_do_global_parameter(lp_ctx, "winbindd privileged socket directory", dyn_WINBINDD_PRIVILEGED_SOCKET_DIR); 2479 lpcfg_do_global_parameter(lp_ctx, "template shell", "/bin/false"); 2480 lpcfg_do_global_parameter(lp_ctx, "template homedir", "/home/%WORKGROUP%/%ACCOUNTNAME%"); 2481 lpcfg_do_global_parameter(lp_ctx, "idmap trusted only", "False"); 2482 2483 lpcfg_do_global_parameter(lp_ctx, "client signing", "Yes"); 2484 lpcfg_do_global_parameter(lp_ctx, "server signing", "auto"); 2485 2486 lpcfg_do_global_parameter(lp_ctx, "use spnego", "True"); 2487 2488 lpcfg_do_global_parameter(lp_ctx, "smb ports", "445 139"); 2489 lpcfg_do_global_parameter(lp_ctx, "nbt port", "137"); 2490 lpcfg_do_global_parameter(lp_ctx, "dgram port", "138"); 2491 lpcfg_do_global_parameter(lp_ctx, "cldap port", "389"); 2492 lpcfg_do_global_parameter(lp_ctx, "krb5 port", "88"); 2493 lpcfg_do_global_parameter(lp_ctx, "kpasswd port", "464"); 2494 lpcfg_do_global_parameter(lp_ctx, "web port", "901"); 2495 2496 lpcfg_do_global_parameter(lp_ctx, "nt status support", "True"); 2497 2498 lpcfg_do_global_parameter(lp_ctx, "max wins ttl", "518400"); /* 6 days */ 2499 lpcfg_do_global_parameter(lp_ctx, "min wins ttl", "10"); 2500 2501 lpcfg_do_global_parameter(lp_ctx, "tls enabled", "True"); 2502 lpcfg_do_global_parameter(lp_ctx, "tls keyfile", "tls/key.pem"); 2503 lpcfg_do_global_parameter(lp_ctx, "tls certfile", "tls/cert.pem"); 2504 lpcfg_do_global_parameter(lp_ctx, "tls cafile", "tls/ca.pem"); 2505 lpcfg_do_global_parameter(lp_ctx, "prefork children:smb", "4"); 2506 2507 lpcfg_do_global_parameter(lp_ctx, "ntp signd socket directory", dyn_NTP_SIGND_SOCKET_DIR); 2508 lpcfg_do_global_parameter(lp_ctx, "rndc command", "/usr/sbin/rndc"); 2509 lpcfg_do_global_parameter_var(lp_ctx, "dns update command", "%s/samba_dnsupdate", dyn_SCRIPTSBINDIR); 2510 lpcfg_do_global_parameter_var(lp_ctx, "spn update command", "%s/samba_spnupdate", dyn_SCRIPTSBINDIR); 2511 lpcfg_do_global_parameter(lp_ctx, "nsupdate command", "/usr/bin/nsupdate -g"); 2418 2512 2419 2513 for (i = 0; parm_table[i].label; i++) { … … 2423 2517 } 2424 2518 2519 for (parm=lp_ctx->globals->param_opt; parm; parm=parm->next) { 2520 if (!(parm->priority & FLAG_CMDLINE)) { 2521 parm->priority |= FLAG_DEFAULT; 2522 } 2523 } 2524 2425 2525 return lp_ctx; 2426 2526 } 2427 2527 2428 const char *lp_configfile(struct loadparm_context *lp_ctx) 2528 /** 2529 * Initialise the global parameter structure. 2530 */ 2531 struct loadparm_context *loadparm_init_global(bool load_default) 2532 { 2533 if (global_loadparm_context == NULL) { 2534 global_loadparm_context = loadparm_init(NULL); 2535 } 2536 if (load_default && !global_loadparm_context->loaded) { 2537 lpcfg_load_default(global_loadparm_context); 2538 } 2539 global_loadparm_context->refuse_free = true; 2540 return global_loadparm_context; 2541 } 2542 2543 const char *lpcfg_configfile(struct loadparm_context *lp_ctx) 2429 2544 { 2430 2545 return lp_ctx->szConfigFile; … … 2443 2558 * have changed. 2444 2559 */ 2445 static bool lp_update(struct loadparm_context *lp_ctx) 2446 { 2447 lp_add_auto_services(lp_ctx, lp_auto_services(lp_ctx)); 2448 2449 lp_add_hidden(lp_ctx, "IPC$", "IPC"); 2450 lp_add_hidden(lp_ctx, "ADMIN$", "DISK"); 2560 static bool lpcfg_update(struct loadparm_context *lp_ctx) 2561 { 2562 struct debug_settings settings; 2563 lpcfg_add_auto_services(lp_ctx, lpcfg_auto_services(lp_ctx)); 2451 2564 2452 2565 if (!lp_ctx->globals->szWINSservers && lp_ctx->globals->bWINSsupport) { 2453 lp _do_global_parameter(lp_ctx, "wins server", "127.0.0.1");2566 lpcfg_do_global_parameter(lp_ctx, "wins server", "127.0.0.1"); 2454 2567 } 2455 2568 … … 2458 2571 reload_charcnv(lp_ctx); 2459 2572 2460 /* FIXME: ntstatus_check_dos_mapping = lp_nt_status_support(lp_ctx); */ 2573 ZERO_STRUCT(settings); 2574 /* Add any more debug-related smb.conf parameters created in 2575 * future here */ 2576 settings.timestamp_logs = true; 2577 debug_set_settings(&settings); 2578 2579 /* FIXME: ntstatus_check_dos_mapping = lpcfg_nt_status_support(lp_ctx); */ 2461 2580 2462 2581 /* FIXME: This is a bit of a hack, but we can't use a global, since 2463 2582 * not everything that uses lp also uses the socket library */ 2464 if (lp _parm_bool(lp_ctx, NULL, "socket", "testnonblock", false)) {2583 if (lpcfg_parm_bool(lp_ctx, NULL, "socket", "testnonblock", false)) { 2465 2584 setenv("SOCKET_TESTNONBLOCK", "1", 1); 2466 2585 } else { … … 2469 2588 2470 2589 /* FIXME: Check locale in environment for this: */ 2471 if (strcmp(lp _display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0)2472 d_set_iconv(smb_iconv_open(lp _display_charset(lp_ctx), lp_unix_charset(lp_ctx)));2590 if (strcmp(lpcfg_display_charset(lp_ctx), lpcfg_unix_charset(lp_ctx)) != 0) 2591 d_set_iconv(smb_iconv_open(lpcfg_display_charset(lp_ctx), lpcfg_unix_charset(lp_ctx))); 2473 2592 else 2474 2593 d_set_iconv((smb_iconv_t)-1); … … 2477 2596 } 2478 2597 2479 bool lp _load_default(struct loadparm_context *lp_ctx)2598 bool lpcfg_load_default(struct loadparm_context *lp_ctx) 2480 2599 { 2481 2600 const char *path; … … 2486 2605 /* We allow the default smb.conf file to not exist, 2487 2606 * basically the equivalent of an empty file. */ 2488 return lp _update(lp_ctx);2607 return lpcfg_update(lp_ctx); 2489 2608 } 2490 2609 2491 return lp _load(lp_ctx, path);2610 return lpcfg_load(lp_ctx, path); 2492 2611 } 2493 2612 … … 2497 2616 * Return True on success, False on failure. 2498 2617 */ 2499 bool lp _load(struct loadparm_context *lp_ctx, const char *filename)2618 bool lpcfg_load(struct loadparm_context *lp_ctx, const char *filename) 2500 2619 { 2501 2620 char *n2; … … 2508 2627 lp_ctx->bInGlobalSection = true; 2509 2628 n2 = standard_sub_basic(lp_ctx, lp_ctx->szConfigFile); 2510 DEBUG(2, ("lp _load: refreshing parameters from %s\n", n2));2629 DEBUG(2, ("lpcfg_load: refreshing parameters from %s\n", n2)); 2511 2630 2512 2631 add_to_file_list(lp_ctx, lp_ctx->szConfigFile, n2); … … 2522 2641 bRetval = service_ok(lp_ctx->currentService); 2523 2642 2524 bRetval = bRetval && lp_update(lp_ctx); 2643 bRetval = bRetval && lpcfg_update(lp_ctx); 2644 2645 /* we do this unconditionally, so that it happens even 2646 for a missing smb.conf */ 2647 reload_charcnv(lp_ctx); 2648 2649 if (bRetval == true) { 2650 /* set this up so that any child python tasks will 2651 find the right smb.conf */ 2652 setenv("SMB_CONF_PATH", filename, 1); 2653 2654 /* set the context used by the lp_*() function 2655 varients */ 2656 global_loadparm_context = lp_ctx; 2657 lp_ctx->loaded = true; 2658 } 2525 2659 2526 2660 return bRetval; … … 2531 2665 */ 2532 2666 2533 int lp _numservices(struct loadparm_context *lp_ctx)2667 int lpcfg_numservices(struct loadparm_context *lp_ctx) 2534 2668 { 2535 2669 return lp_ctx->iNumServices; … … 2540 2674 */ 2541 2675 2542 void lp _dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults,2676 void lpcfg_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, 2543 2677 int maxtoprint) 2544 2678 { 2545 2679 int iService; 2546 2680 2547 if (show_defaults) 2548 defaults_saved = false; 2681 defaults_saved = !show_defaults; 2549 2682 2550 2683 dump_globals(lp_ctx, f, show_defaults); 2551 2684 2552 dump_a_service(lp_ctx->sDefault, lp_ctx->sDefault, f );2685 dump_a_service(lp_ctx->sDefault, lp_ctx->sDefault, f, lp_ctx->flags); 2553 2686 2554 2687 for (iService = 0; iService < maxtoprint; iService++) 2555 lp _dump_one(f, show_defaults, lp_ctx->services[iService], lp_ctx->sDefault);2688 lpcfg_dump_one(f, show_defaults, lp_ctx->services[iService], lp_ctx->sDefault); 2556 2689 } 2557 2690 … … 2559 2692 * Display the contents of one service in human-readable form. 2560 2693 */ 2561 void lp _dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault)2694 void lpcfg_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault) 2562 2695 { 2563 2696 if (service != NULL) { 2564 2697 if (service->szService[0] == '\0') 2565 2698 return; 2566 dump_a_service(service, sDefault, f );2567 } 2568 } 2569 2570 struct loadparm_service *lp _servicebynum(struct loadparm_context *lp_ctx,2699 dump_a_service(service, sDefault, f, NULL); 2700 } 2701 } 2702 2703 struct loadparm_service *lpcfg_servicebynum(struct loadparm_context *lp_ctx, 2571 2704 int snum) 2572 2705 { … … 2574 2707 } 2575 2708 2576 struct loadparm_service *lp _service(struct loadparm_context *lp_ctx,2709 struct loadparm_service *lpcfg_service(struct loadparm_context *lp_ctx, 2577 2710 const char *service_name) 2578 2711 { … … 2590 2723 lp_ctx->services[iService], 2591 2724 lp_ctx->services[iService]->szService); 2592 if (strequal(serviceName, service_name)) 2725 if (strequal(serviceName, service_name)) { 2726 talloc_free(serviceName); 2593 2727 return lp_ctx->services[iService]; 2594 } 2595 } 2596 2597 DEBUG(7,("lp_servicenumber: couldn't find %s\n", service_name)); 2728 } 2729 talloc_free(serviceName); 2730 } 2731 } 2732 2733 DEBUG(7,("lpcfg_servicenumber: couldn't find %s\n", service_name)); 2598 2734 return NULL; 2599 2735 } 2600 2736 2737 const char *lpcfg_servicename(const struct loadparm_service *service) 2738 { 2739 return lp_string((const char *)service->szService); 2740 } 2601 2741 2602 2742 /** … … 2605 2745 const char *volume_label(struct loadparm_service *service, struct loadparm_service *sDefault) 2606 2746 { 2607 const char *ret = lp_volume(service, sDefault); 2747 const char *ret; 2748 ret = lp_string((const char *)((service != NULL && service->volume != NULL) ? 2749 service->volume : sDefault->volume)); 2608 2750 if (!*ret) 2609 return lp _servicename(service);2751 return lpcfg_servicename(service); 2610 2752 return ret; 2611 2753 } 2612 2754 2613 2614 2755 /** 2615 2756 * If we are PDC then prefer us as DMB 2616 2757 */ 2617 const char *lp_printername(struct loadparm_service *service, struct loadparm_service *sDefault) 2618 { 2619 const char *ret = _lp_printername(service, sDefault); 2758 const char *lpcfg_printername(struct loadparm_service *service, struct loadparm_service *sDefault) 2759 { 2760 const char *ret; 2761 ret = lp_string((const char *)((service != NULL && service->szPrintername != NULL) ? 2762 service->szPrintername : sDefault->szPrintername)); 2620 2763 if (ret == NULL || (ret != NULL && *ret == '\0')) 2621 ret = lp _servicename(service);2764 ret = lpcfg_servicename(service); 2622 2765 2623 2766 return ret; … … 2628 2771 * Return the max print jobs per queue. 2629 2772 */ 2630 int lp _maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault)2773 int lpcfg_maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault) 2631 2774 { 2632 2775 int maxjobs = (service != NULL) ? service->iMaxPrintJobs : sDefault->iMaxPrintJobs; … … 2637 2780 } 2638 2781 2639 struct smb_iconv_convenience *lp _iconv_convenience(struct loadparm_context *lp_ctx)2782 struct smb_iconv_convenience *lpcfg_iconv_convenience(struct loadparm_context *lp_ctx) 2640 2783 { 2641 2784 if (lp_ctx == NULL) { 2642 static struct smb_iconv_convenience *fallback_ic = NULL; 2643 if (fallback_ic == NULL) 2644 fallback_ic = smb_iconv_convenience_init(talloc_autofree_context(), 2645 "CP850", "UTF8", true); 2646 return fallback_ic; 2785 return get_iconv_convenience(); 2647 2786 } 2648 2787 return lp_ctx->iconv_convenience; … … 2651 2790 _PUBLIC_ void reload_charcnv(struct loadparm_context *lp_ctx) 2652 2791 { 2653 talloc_unlink(lp_ctx, lp_ctx->iconv_convenience); 2654 global_iconv_convenience = lp_ctx->iconv_convenience = smb_iconv_convenience_init_lp(lp_ctx, lp_ctx); 2655 } 2656 2657 void lp_smbcli_options(struct loadparm_context *lp_ctx, 2792 struct smb_iconv_convenience *old_ic = lp_ctx->iconv_convenience; 2793 if (old_ic == NULL) { 2794 old_ic = global_iconv_convenience; 2795 } 2796 lp_ctx->iconv_convenience = smb_iconv_convenience_reinit_lp(lp_ctx, lp_ctx, old_ic); 2797 global_iconv_convenience = lp_ctx->iconv_convenience; 2798 } 2799 2800 void lpcfg_smbcli_options(struct loadparm_context *lp_ctx, 2658 2801 struct smbcli_options *options) 2659 2802 { 2660 options->max_xmit = lp _max_xmit(lp_ctx);2661 options->max_mux = lp _maxmux(lp_ctx);2662 options->use_spnego = lp _nt_status_support(lp_ctx) && lp_use_spnego(lp_ctx);2663 options->signing = lp _client_signing(lp_ctx);2803 options->max_xmit = lpcfg_max_xmit(lp_ctx); 2804 options->max_mux = lpcfg_maxmux(lp_ctx); 2805 options->use_spnego = lpcfg_nt_status_support(lp_ctx) && lpcfg_use_spnego(lp_ctx); 2806 options->signing = lpcfg_client_signing(lp_ctx); 2664 2807 options->request_timeout = SMB_REQUEST_TIMEOUT; 2665 options->ntstatus_support = lp _nt_status_support(lp_ctx);2666 options->max_protocol = lp _cli_maxprotocol(lp_ctx);2667 options->unicode = lp _unicode(lp_ctx);2808 options->ntstatus_support = lpcfg_nt_status_support(lp_ctx); 2809 options->max_protocol = lpcfg_cli_maxprotocol(lp_ctx); 2810 options->unicode = lpcfg_unicode(lp_ctx); 2668 2811 options->use_oplocks = true; 2669 2812 options->use_level2_oplocks = true; 2670 2813 } 2671 2814 2672 void lp _smbcli_session_options(struct loadparm_context *lp_ctx,2815 void lpcfg_smbcli_session_options(struct loadparm_context *lp_ctx, 2673 2816 struct smbcli_session_options *options) 2674 2817 { 2675 options->lanman_auth = lp _client_lanman_auth(lp_ctx);2676 options->ntlmv2_auth = lp _client_ntlmv2_auth(lp_ctx);2677 options->plaintext_auth = lp _client_plaintext_auth(lp_ctx);2678 } 2679 2680 _PUBLIC_ char *lp _tls_keyfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2818 options->lanman_auth = lpcfg_client_lanman_auth(lp_ctx); 2819 options->ntlmv2_auth = lpcfg_client_ntlmv2_auth(lp_ctx); 2820 options->plaintext_auth = lpcfg_client_plaintext_auth(lp_ctx); 2821 } 2822 2823 _PUBLIC_ char *lpcfg_tls_keyfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2681 2824 { 2682 2825 return private_path(mem_ctx, lp_ctx, lp_ctx->globals->tls_keyfile); 2683 2826 } 2684 2827 2685 _PUBLIC_ char *lp _tls_certfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2828 _PUBLIC_ char *lpcfg_tls_certfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2686 2829 { 2687 2830 return private_path(mem_ctx, lp_ctx, lp_ctx->globals->tls_certfile); 2688 2831 } 2689 2832 2690 _PUBLIC_ char *lp _tls_cafile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2833 _PUBLIC_ char *lpcfg_tls_cafile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2691 2834 { 2692 2835 return private_path(mem_ctx, lp_ctx, lp_ctx->globals->tls_cafile); 2693 2836 } 2694 2837 2695 _PUBLIC_ char *lp _tls_crlfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2838 _PUBLIC_ char *lpcfg_tls_crlfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2696 2839 { 2697 2840 return private_path(mem_ctx, lp_ctx, lp_ctx->globals->tls_crlfile); 2698 2841 } 2699 2842 2700 _PUBLIC_ char *lp _tls_dhpfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2843 _PUBLIC_ char *lpcfg_tls_dhpfile(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2701 2844 { 2702 2845 return private_path(mem_ctx, lp_ctx, lp_ctx->globals->tls_dhpfile); 2703 2846 } 2704 2847 2705 _PUBLIC_ struct dcerpc_server_info *lp _dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2848 _PUBLIC_ struct dcerpc_server_info *lpcfg_dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2706 2849 { 2707 2850 struct dcerpc_server_info *ret = talloc_zero(mem_ctx, struct dcerpc_server_info); 2708 2851 2709 ret->domain_name = talloc_reference(mem_ctx, lp _workgroup(lp_ctx));2710 ret->version_major = lp _parm_int(lp_ctx, NULL, "server_info", "version_major", 5);2711 ret->version_minor = lp _parm_int(lp_ctx, NULL, "server_info", "version_minor", 2);2712 ret->version_build = lp _parm_int(lp_ctx, NULL, "server_info", "version_build", 3790);2852 ret->domain_name = talloc_reference(mem_ctx, lpcfg_workgroup(lp_ctx)); 2853 ret->version_major = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_major", 5); 2854 ret->version_minor = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_minor", 2); 2855 ret->version_build = lpcfg_parm_int(lp_ctx, NULL, "server_info", "version_build", 3790); 2713 2856 2714 2857 return ret; 2715 2858 } 2716 2859 2717 struct gensec_settings *lp _gensec_settings(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)2860 struct gensec_settings *lpcfg_gensec_settings(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx) 2718 2861 { 2719 2862 struct gensec_settings *settings = talloc(mem_ctx, struct gensec_settings); … … 2722 2865 SMB_ASSERT(lp_ctx != NULL); 2723 2866 settings->lp_ctx = talloc_reference(settings, lp_ctx); 2724 settings->iconv_convenience = lp_iconv_convenience(lp_ctx); 2725 settings->target_hostname = lp_parm_string(lp_ctx, NULL, "gensec", "target_hostname"); 2867 settings->target_hostname = lpcfg_parm_string(lp_ctx, NULL, "gensec", "target_hostname"); 2726 2868 return settings; 2727 2869 }
Note:
See TracChangeset
for help on using the changeset viewer.