Changeset 740 for vendor/current/source4/param
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- Location:
- vendor/current/source4/param
- Files:
-
- 1 added
- 2 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source4/param/generic.c
r414 r740 19 19 #include "includes.h" 20 20 #include "../lib/util/dlinklist.h" 21 #include "../lib/util/parmlist.h" 21 22 #include "param/param.h" 22 23 #include "param/loadparm.h" … … 233 234 for (param = section->parameters->entries; param; param = param->next) { 234 235 if (isglobal) 235 lp _do_global_parameter(lp_ctx, param->key,236 lpcfg_do_global_parameter(lp_ctx, param->key, 236 237 param->value); 237 238 else { 238 239 struct loadparm_service *service = 239 lp _service(lp_ctx, section->name);240 lpcfg_service(lp_ctx, section->name); 240 241 if (service == NULL) 241 service = lp _add_service(lp_ctx, lp_default_service(lp_ctx), section->name);242 lp _do_service_parameter(lp_ctx, service, param->key, param->value);242 service = lpcfg_add_service(lp_ctx, lpcfg_default_service(lp_ctx), section->name); 243 lpcfg_do_service_parameter(lp_ctx, service, param->key, param->value); 243 244 } 244 245 } -
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 } -
vendor/current/source4/param/loadparm.h
r414 r740 30 30 /* the following are used by loadparm for option lists */ 31 31 typedef enum { 32 P_BOOL,P_INTEGER,P_OCTAL,P_BYTES,P_LIST,P_ STRING,P_USTRING,P_ENUM32 P_BOOL,P_INTEGER,P_OCTAL,P_BYTES,P_LIST,P_CMDLIST,P_STRING,P_USTRING,P_ENUM 33 33 } parm_type; 34 34 -
vendor/current/source4/param/param.h
r414 r740 21 21 #define _PARAM_H 22 22 23 #include "../lib/util/parmlist.h" 23 struct parmlist_entry; 24 24 25 25 struct param_context { … … 52 52 }; 53 53 54 enum sid_generator { 55 SID_GENERATOR_INTERNAL=0, 56 SID_GENERATOR_BACKEND=1, 57 }; 58 54 59 enum announce_as {/* Types of machine we can announce as. */ 55 60 ANNOUNCE_AS_NT_SERVER=1, … … 65 70 struct gensec_settings; 66 71 72 #ifdef CONFIG_H_IS_FROM_SAMBA 73 #include "param/param_proto.h" 74 #endif 75 76 const char **lpcfg_interfaces(struct loadparm_context *); 77 const char *lpcfg_realm(struct loadparm_context *); 78 const char *lpcfg_netbios_name(struct loadparm_context *); 79 const char *lpcfg_private_dir(struct loadparm_context *); 80 int lpcfg_server_role(struct loadparm_context *); 81 67 82 void reload_charcnv(struct loadparm_context *lp_ctx); 68 83 69 struct loadparm_service *lp_default_service(struct loadparm_context *lp_ctx); 70 struct parm_struct *lp_parm_table(void); 71 int lp_server_role(struct loadparm_context *); 72 const char **lp_smb_ports(struct loadparm_context *); 73 int lp_nbt_port(struct loadparm_context *); 74 int lp_dgram_port(struct loadparm_context *); 75 int lp_cldap_port(struct loadparm_context *); 76 int lp_krb5_port(struct loadparm_context *); 77 int lp_kpasswd_port(struct loadparm_context *); 78 int lp_web_port(struct loadparm_context *); 79 const char *lp_swat_directory(struct loadparm_context *); 80 bool lp_tls_enabled(struct loadparm_context *); 81 char *lp_tls_keyfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 82 char *lp_tls_certfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 83 char *lp_tls_cafile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 84 char *lp_tls_crlfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 85 char *lp_tls_dhpfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 86 const char *lp_share_backend(struct loadparm_context *); 87 const char *lp_sam_url(struct loadparm_context *); 88 const char *lp_idmap_url(struct loadparm_context *); 89 const char *lp_secrets_url(struct loadparm_context *); 90 const char *lp_spoolss_url(struct loadparm_context *); 91 const char *lp_wins_config_url(struct loadparm_context *); 92 const char *lp_wins_url(struct loadparm_context *); 93 const char *lp_winbind_separator(struct loadparm_context *); 94 const char *lp_winbindd_socket_directory(struct loadparm_context *); 95 const char *lp_winbindd_privileged_socket_directory(struct loadparm_context *); 96 const char *lp_template_shell(struct loadparm_context *); 97 const char *lp_template_homedir(struct loadparm_context *); 98 bool lp_winbind_sealed_pipes(struct loadparm_context *); 99 bool lp_idmap_trusted_only(struct loadparm_context *); 100 const char *lp_private_dir(struct loadparm_context *); 101 const char *lp_serverstring(struct loadparm_context *); 102 const char *lp_lockdir(struct loadparm_context *); 103 const char *lp_modulesdir(struct loadparm_context *); 104 const char *lp_setupdir(struct loadparm_context *); 105 const char *lp_ncalrpc_dir(struct loadparm_context *); 106 const char *lp_dos_charset(struct loadparm_context *); 107 const char *lp_unix_charset(struct loadparm_context *); 108 const char *lp_display_charset(struct loadparm_context *); 109 const char *lp_piddir(struct loadparm_context *); 110 const char **lp_dcerpc_endpoint_servers(struct loadparm_context *); 111 const char **lp_server_services(struct loadparm_context *); 112 const char *lp_ntptr_providor(struct loadparm_context *); 113 const char *lp_auto_services(struct loadparm_context *); 114 const char *lp_passwd_chat(struct loadparm_context *); 115 const char **lp_passwordserver(struct loadparm_context *); 116 const char **lp_name_resolve_order(struct loadparm_context *); 117 const char *lp_realm(struct loadparm_context *); 118 const char *lp_socket_options(struct loadparm_context *); 119 const char *lp_workgroup(struct loadparm_context *); 120 const char *lp_netbios_name(struct loadparm_context *); 121 const char *lp_netbios_scope(struct loadparm_context *); 122 const char **lp_wins_server_list(struct loadparm_context *); 123 const char **lp_interfaces(struct loadparm_context *); 124 const char *lp_socket_address(struct loadparm_context *); 125 const char **lp_netbios_aliases(struct loadparm_context *); 126 bool lp_disable_netbios(struct loadparm_context *); 127 bool lp_wins_support(struct loadparm_context *); 128 bool lp_wins_dns_proxy(struct loadparm_context *); 129 const char *lp_wins_hook(struct loadparm_context *); 130 bool lp_local_master(struct loadparm_context *); 131 bool lp_readraw(struct loadparm_context *); 132 bool lp_large_readwrite(struct loadparm_context *); 133 bool lp_writeraw(struct loadparm_context *); 134 bool lp_null_passwords(struct loadparm_context *); 135 bool lp_obey_pam_restrictions(struct loadparm_context *); 136 bool lp_encrypted_passwords(struct loadparm_context *); 137 bool lp_time_server(struct loadparm_context *); 138 bool lp_bind_interfaces_only(struct loadparm_context *); 139 bool lp_unicode(struct loadparm_context *); 140 bool lp_nt_status_support(struct loadparm_context *); 141 bool lp_lanman_auth(struct loadparm_context *); 142 bool lp_ntlm_auth(struct loadparm_context *); 143 bool lp_client_plaintext_auth(struct loadparm_context *); 144 bool lp_client_lanman_auth(struct loadparm_context *); 145 bool lp_client_ntlmv2_auth(struct loadparm_context *); 146 bool lp_client_use_spnego_principal(struct loadparm_context *); 147 bool lp_host_msdfs(struct loadparm_context *); 148 bool lp_unix_extensions(struct loadparm_context *); 149 bool lp_use_spnego(struct loadparm_context *); 150 bool lp_rpc_big_endian(struct loadparm_context *); 151 int lp_max_wins_ttl(struct loadparm_context *); 152 int lp_min_wins_ttl(struct loadparm_context *); 153 int lp_maxmux(struct loadparm_context *); 154 int lp_max_xmit(struct loadparm_context *); 155 int lp_passwordlevel(struct loadparm_context *); 156 int lp_srv_maxprotocol(struct loadparm_context *); 157 int lp_srv_minprotocol(struct loadparm_context *); 158 int lp_cli_maxprotocol(struct loadparm_context *); 159 int lp_cli_minprotocol(struct loadparm_context *); 160 int lp_security(struct loadparm_context *); 161 bool lp_paranoid_server_security(struct loadparm_context *); 162 int lp_announce_as(struct loadparm_context *); 163 164 const char *lp_servicename(const struct loadparm_service *service); 165 const char *lp_pathname(struct loadparm_service *, struct loadparm_service *); 166 const char **lp_hostsallow(struct loadparm_service *, struct loadparm_service *); 167 const char **lp_hostsdeny(struct loadparm_service *, struct loadparm_service *); 168 const char *lp_comment(struct loadparm_service *, struct loadparm_service *); 169 const char *lp_fstype(struct loadparm_service *, struct loadparm_service *); 170 const char **lp_ntvfs_handler(struct loadparm_service *, struct loadparm_service *); 171 bool lp_msdfs_root(struct loadparm_service *, struct loadparm_service *); 172 bool lp_browseable(struct loadparm_service *, struct loadparm_service *); 173 bool lp_readonly(struct loadparm_service *, struct loadparm_service *); 174 bool lp_print_ok(struct loadparm_service *, struct loadparm_service *); 175 bool lp_map_hidden(struct loadparm_service *, struct loadparm_service *); 176 bool lp_map_archive(struct loadparm_service *, struct loadparm_service *); 177 bool lp_strict_locking(struct loadparm_service *, struct loadparm_service *); 178 bool lp_oplocks(struct loadparm_service *, struct loadparm_service *); 179 bool lp_strict_sync(struct loadparm_service *, struct loadparm_service *); 180 bool lp_ci_filesystem(struct loadparm_service *, struct loadparm_service *); 181 bool lp_map_system(struct loadparm_service *, struct loadparm_service *); 182 int lp_max_connections(struct loadparm_service *, struct loadparm_service *); 183 int lp_csc_policy(struct loadparm_service *, struct loadparm_service *); 184 int lp_create_mask(struct loadparm_service *, struct loadparm_service *); 185 int lp_force_create_mode(struct loadparm_service *, struct loadparm_service *); 186 int lp_dir_mask(struct loadparm_service *, struct loadparm_service *); 187 int lp_force_dir_mode(struct loadparm_service *, struct loadparm_service *); 188 int lp_server_signing(struct loadparm_context *); 189 int lp_client_signing(struct loadparm_context *); 190 const char *lp_ntp_signd_socket_directory(struct loadparm_context *); 191 192 193 const char *lp_get_parametric(struct loadparm_context *lp_ctx, 84 struct loadparm_service *lpcfg_default_service(struct loadparm_context *lp_ctx); 85 struct parm_struct *lpcfg_parm_table(void); 86 87 88 char *lpcfg_tls_keyfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 89 char *lpcfg_tls_certfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 90 char *lpcfg_tls_cafile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 91 char *lpcfg_tls_dhpfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 92 char *lpcfg_tls_crlfile(TALLOC_CTX *mem_ctx, struct loadparm_context *); 93 94 const char *lpcfg_servicename(const struct loadparm_service *service); 95 96 97 const char *lpcfg_get_parametric(struct loadparm_context *lp_ctx, 194 98 struct loadparm_service *service, 195 99 const char *type, const char *option); 196 100 197 const char *lp _parm_string(struct loadparm_context *lp_ctx,101 const char *lpcfg_parm_string(struct loadparm_context *lp_ctx, 198 102 struct loadparm_service *service, const char *type, 199 103 const char *option); 200 const char **lp _parm_string_list(TALLOC_CTX *mem_ctx,104 const char **lpcfg_parm_string_list(TALLOC_CTX *mem_ctx, 201 105 struct loadparm_context *lp_ctx, 202 106 struct loadparm_service *service, 203 107 const char *type, 204 108 const char *option, const char *separator); 205 int lp _parm_int(struct loadparm_context *lp_ctx,109 int lpcfg_parm_int(struct loadparm_context *lp_ctx, 206 110 struct loadparm_service *service, const char *type, 207 111 const char *option, int default_v); 208 int lp _parm_bytes(struct loadparm_context *lp_ctx,112 int lpcfg_parm_bytes(struct loadparm_context *lp_ctx, 209 113 struct loadparm_service *service, const char *type, 210 114 const char *option, int default_v); 211 unsigned long lp _parm_ulong(struct loadparm_context *lp_ctx,115 unsigned long lpcfg_parm_ulong(struct loadparm_context *lp_ctx, 212 116 struct loadparm_service *service, const char *type, 213 117 const char *option, unsigned long default_v); 214 double lp _parm_double(struct loadparm_context *lp_ctx,118 double lpcfg_parm_double(struct loadparm_context *lp_ctx, 215 119 struct loadparm_service *service, const char *type, 216 120 const char *option, double default_v); 217 bool lp _parm_bool(struct loadparm_context *lp_ctx,218 struct loadparm_service *service, const char *type,219 const char *option, bool default_v);220 struct loadparm_service *lp _add_service(struct loadparm_context *lp_ctx,121 bool lpcfg_parm_bool(struct loadparm_context *lp_ctx, 122 struct loadparm_service *service, const char *type, 123 const char *option, bool default_v); 124 struct loadparm_service *lpcfg_add_service(struct loadparm_context *lp_ctx, 221 125 const struct loadparm_service *pservice, 222 126 const char *name); 223 bool lp _add_home(struct loadparm_context *lp_ctx,127 bool lpcfg_add_home(struct loadparm_context *lp_ctx, 224 128 const char *pszHomename, 225 129 struct loadparm_service *default_service, 226 130 const char *user, const char *pszHomedir); 227 bool lp _add_printer(struct loadparm_context *lp_ctx,131 bool lpcfg_add_printer(struct loadparm_context *lp_ctx, 228 132 const char *pszPrintername, 229 133 struct loadparm_service *default_service); 230 struct parm_struct *lp _parm_struct(const char *name);231 void *lp _parm_ptr(struct loadparm_context *lp_ctx,134 struct parm_struct *lpcfg_parm_struct(const char *name); 135 void *lpcfg_parm_ptr(struct loadparm_context *lp_ctx, 232 136 struct loadparm_service *service, struct parm_struct *parm); 233 bool lp _file_list_changed(struct loadparm_context *lp_ctx);234 235 bool lp _do_global_parameter(struct loadparm_context *lp_ctx,137 bool lpcfg_file_list_changed(struct loadparm_context *lp_ctx); 138 139 bool lpcfg_do_global_parameter(struct loadparm_context *lp_ctx, 236 140 const char *pszParmName, const char *pszParmValue); 237 bool lp _do_service_parameter(struct loadparm_context *lp_ctx,141 bool lpcfg_do_service_parameter(struct loadparm_context *lp_ctx, 238 142 struct loadparm_service *service, 239 143 const char *pszParmName, const char *pszParmValue); … … 242 146 * Process a parameter. 243 147 */ 244 bool lp _do_global_parameter_var(struct loadparm_context *lp_ctx,148 bool lpcfg_do_global_parameter_var(struct loadparm_context *lp_ctx, 245 149 const char *pszParmName, const char *fmt, ...); 246 bool lp _set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,150 bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName, 247 151 const char *pszParmValue); 248 bool lp _set_option(struct loadparm_context *lp_ctx, const char *option);152 bool lpcfg_set_option(struct loadparm_context *lp_ctx, const char *option); 249 153 250 154 /** 251 155 * Display the contents of a single services record. 252 156 */ 253 bool lp _dump_a_parameter(struct loadparm_context *lp_ctx,157 bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx, 254 158 struct loadparm_service *service, 255 159 const char *parm_name, FILE * f); … … 259 163 * Return NULL when out of parameters. 260 164 */ 261 struct parm_struct *lp _next_parameter(struct loadparm_context *lp_ctx, int snum, int *i,165 struct parm_struct *lpcfg_next_parameter(struct loadparm_context *lp_ctx, int snum, int *i, 262 166 int allparameters); 263 167 … … 265 169 * Unload unused services. 266 170 */ 267 void lp _killunused(struct loadparm_context *lp_ctx,171 void lpcfg_killunused(struct loadparm_context *lp_ctx, 268 172 struct smbsrv_connection *smb, 269 173 bool (*snumused) (struct smbsrv_connection *, int)); … … 273 177 */ 274 178 struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx); 275 const char *lp_configfile(struct loadparm_context *lp_ctx); 276 bool lp_load_default(struct loadparm_context *lp_ctx); 179 struct loadparm_context *loadparm_init_global(bool load_default); 180 const char *lpcfg_configfile(struct loadparm_context *lp_ctx); 181 bool lpcfg_load_default(struct loadparm_context *lp_ctx); 277 182 const char *lp_default_path(void); 278 183 … … 282 187 * Return True on success, False on failure. 283 188 */ 284 bool lp _load(struct loadparm_context *lp_ctx, const char *filename);189 bool lpcfg_load(struct loadparm_context *lp_ctx, const char *filename); 285 190 286 191 /** 287 192 * Return the max number of services. 288 193 */ 289 int lp _numservices(struct loadparm_context *lp_ctx);194 int lpcfg_numservices(struct loadparm_context *lp_ctx); 290 195 291 196 /** 292 197 * Display the contents of the services array in human-readable form. 293 198 */ 294 void lp _dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults,199 void lpcfg_dump(struct loadparm_context *lp_ctx, FILE *f, bool show_defaults, 295 200 int maxtoprint); 296 201 … … 298 203 * Display the contents of one service in human-readable form. 299 204 */ 300 void lp _dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault);301 struct loadparm_service *lp _servicebynum(struct loadparm_context *lp_ctx,205 void lpcfg_dump_one(FILE *f, bool show_defaults, struct loadparm_service *service, struct loadparm_service *sDefault); 206 struct loadparm_service *lpcfg_servicebynum(struct loadparm_context *lp_ctx, 302 207 int snum); 303 struct loadparm_service *lp _service(struct loadparm_context *lp_ctx,208 struct loadparm_service *lpcfg_service(struct loadparm_context *lp_ctx, 304 209 const char *service_name); 305 210 … … 312 217 * If we are PDC then prefer us as DMB 313 218 */ 314 const char *lp _printername(struct loadparm_service *service, struct loadparm_service *sDefault);219 const char *lpcfg_printername(struct loadparm_service *service, struct loadparm_service *sDefault); 315 220 316 221 /** 317 222 * Return the max print jobs per queue. 318 223 */ 319 int lp _maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault);320 struct smb_iconv_convenience *lp _iconv_convenience(struct loadparm_context *lp_ctx);321 void lp _smbcli_options(struct loadparm_context *lp_ctx,224 int lpcfg_maxprintjobs(struct loadparm_service *service, struct loadparm_service *sDefault); 225 struct smb_iconv_convenience *lpcfg_iconv_convenience(struct loadparm_context *lp_ctx); 226 void lpcfg_smbcli_options(struct loadparm_context *lp_ctx, 322 227 struct smbcli_options *options); 323 void lp _smbcli_session_options(struct loadparm_context *lp_ctx,228 void lpcfg_smbcli_session_options(struct loadparm_context *lp_ctx, 324 229 struct smbcli_session_options *options); 325 struct dcerpc_server_info *lp _dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx);326 struct gensec_settings *lp _gensec_settings(TALLOC_CTX *, struct loadparm_context *);230 struct dcerpc_server_info *lpcfg_dcerpc_server_info(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx); 231 struct gensec_settings *lpcfg_gensec_settings(TALLOC_CTX *, struct loadparm_context *); 327 232 328 233 … … 355 260 * @brief Misc utility functions 356 261 */ 357 bool lp _is_mydomain(struct loadparm_context *lp_ctx,262 bool lpcfg_is_mydomain(struct loadparm_context *lp_ctx, 358 263 const char *domain); 359 264 360 bool lp _is_my_domain_or_realm(struct loadparm_context *lp_ctx,265 bool lpcfg_is_my_domain_or_realm(struct loadparm_context *lp_ctx, 361 266 const char *domain); 362 267 … … 365 270 netbios aliases. do a case insensitive match 366 271 */ 367 bool lp _is_myname(struct loadparm_context *lp_ctx, const char *name);272 bool lpcfg_is_myname(struct loadparm_context *lp_ctx, const char *name); 368 273 369 274 /** … … 401 306 */ 402 307 char *smbd_tmp_path(TALLOC_CTX *mem_ctx, 403 struct loadparm_context *lp_ctx, 308 struct loadparm_context *lp_ctx, 404 309 const char *name); 405 310 … … 428 333 */ 429 334 init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, const char *subsystem); 430 const char *lp _messaging_path(TALLOC_CTX *mem_ctx,335 const char *lpcfg_messaging_path(TALLOC_CTX *mem_ctx, 431 336 struct loadparm_context *lp_ctx); 432 struct smb_iconv_convenience *smb_iconv_convenience_init_lp(TALLOC_CTX *mem_ctx, 433 struct loadparm_context *lp_ctx); 434 435 const char *lp_sam_name(struct loadparm_context *lp_ctx); 337 struct smb_iconv_convenience *smb_iconv_convenience_reinit_lp(TALLOC_CTX *mem_ctx, 338 struct loadparm_context *lp_ctx, 339 struct smb_iconv_convenience *old_ic); 340 341 const char *lpcfg_sam_name(struct loadparm_context *lp_ctx); 436 342 437 343 /* The following definitions come from lib/version.c */ -
vendor/current/source4/param/provision.c
r414 r740 19 19 */ 20 20 21 #include <Python.h> 22 #include <ldb.h> 23 #include <pyldb.h> 21 24 #include "includes.h" 22 #include "auth/auth.h"23 #include "lib/ldb_wrap.h"24 #include "ldb/include/ldb.h"25 #include "ldb_errors.h"26 #include "libcli/raw/libcliraw.h"27 25 #include "librpc/ndr/libndr.h" 28 29 #include "param/param.h"30 26 #include "param/provision.h" 31 27 #include "param/secrets.h" 32 #include <Python.h>33 28 #include "lib/talloc/pytalloc.h" 34 #include "librpc/rpc/pyrpc.h"35 29 #include "scripting/python/modules.h" 36 #include "lib/ldb/pyldb.h"37 30 #include "param/pyparam.h" 31 #include "dynconfig/dynconfig.h" 38 32 39 33 static PyObject *provision_module(void) … … 43 37 return NULL; 44 38 return PyImport_Import(name); 39 } 40 41 static PyObject *schema_module(void) 42 { 43 PyObject *name = PyString_FromString("samba.schema"); 44 if (name == NULL) 45 return NULL; 46 return PyImport_Import(name); 47 } 48 49 static PyObject *ldb_module(void) 50 { 51 PyObject *name = PyString_FromString("ldb"); 52 if (name == NULL) 53 return NULL; 54 return PyImport_Import(name); 55 } 56 57 static PyObject *PyLdb_FromLdbContext(struct ldb_context *ldb_ctx) 58 { 59 PyLdbObject *ret; 60 PyObject *ldb_mod = ldb_module(); 61 PyTypeObject *ldb_ctx_type; 62 if (ldb_mod == NULL) 63 return NULL; 64 65 ldb_ctx_type = (PyTypeObject *)PyObject_GetAttrString(ldb_mod, "Ldb"); 66 67 ret = (PyLdbObject *)ldb_ctx_type->tp_alloc(ldb_ctx_type, 0); 68 if (ret == NULL) { 69 PyErr_NoMemory(); 70 return NULL; 71 } 72 ret->mem_ctx = talloc_new(NULL); 73 ret->ldb_ctx = talloc_reference(ret->mem_ctx, ldb_ctx); 74 return (PyObject *)ret; 45 75 } 46 76 … … 50 80 { 51 81 const char *configfile; 52 PyObject *provision_mod, *provision_dict, *provision_fn, *py_result, *parameters ;82 PyObject *provision_mod, *provision_dict, *provision_fn, *py_result, *parameters, *py_lp_ctx; 53 83 54 84 DEBUG(0,("Provision for Become-DC test using python\n")); 55 85 56 py_load_samba_modules();57 86 Py_Initialize(); 58 py_update_path( "bin"); /* FIXME: Can't assume this is always the case*/87 py_update_path(); /* Put the samba path at the start of sys.path */ 59 88 60 89 provision_mod = provision_module(); … … 88 117 settings->invocation_id == NULL?"None":GUID_string(mem_ctx, settings->invocation_id))); 89 118 90 DEBUG(0,("Path es under targetdir[%s]\n",119 DEBUG(0,("Paths under targetdir[%s]\n", 91 120 settings->targetdir)); 92 121 parameters = PyDict_New(); 93 122 94 configfile = lp _configfile(lp_ctx);123 configfile = lpcfg_configfile(lp_ctx); 95 124 if (configfile != NULL) { 96 125 PyDict_SetItemString(parameters, "smbconf", … … 103 132 PyDict_SetItemString(parameters, "targetdir", 104 133 PyString_FromString(settings->targetdir)); 105 PyDict_SetItemString(parameters, "setup_dir",106 PyString_FromString("setup"));107 134 PyDict_SetItemString(parameters, "hostname", 108 135 PyString_FromString(settings->netbios_name)); … … 154 181 155 182 /* FIXME paths */ 156 result->lp_ctx = lp_from_py_object(PyObject_GetAttrString(py_result, "lp")); 183 py_lp_ctx = PyObject_GetAttrString(py_result, "lp"); 184 if (py_lp_ctx == NULL) { 185 DEBUG(0, ("Missing 'lp' attribute")); 186 return NT_STATUS_UNSUCCESSFUL; 187 } 188 result->lp_ctx = lpcfg_from_py_object(mem_ctx, py_lp_ctx); 157 189 result->samdb = PyLdb_AsLdbContext(PyObject_GetAttrString(py_result, "samdb")); 158 190 159 191 return NT_STATUS_OK; 160 192 } 161 162 extern void initldb(void);163 193 164 194 static PyObject *py_dom_sid_FromSid(struct dom_sid *sid) … … 191 221 192 222 /* Open the secrets database */ 193 ldb = secrets_db_connect(tmp_mem, event_ctx,lp_ctx);223 ldb = secrets_db_connect(tmp_mem, lp_ctx); 194 224 if (!ldb) { 195 225 *error_string … … 210 240 } 211 241 212 py_load_samba_modules();213 242 Py_Initialize(); 214 py_update_path("bin"); /* FIXME: Can't assume this is always the case */ 215 initldb(); 243 py_update_path(); /* Put the samba path at the start of sys.path */ 216 244 provision_mod = provision_module(); 217 245 … … 248 276 PyDict_SetItemString(parameters, "domain", 249 277 PyString_FromString(settings->domain_name)); 250 PyDict_SetItemString(parameters, "domain",251 PyString_FromString(settings->domain_name));252 PyDict_SetItemString(parameters, "realm",253 PyString_FromString(settings->realm));278 if (settings->realm != NULL) { 279 PyDict_SetItemString(parameters, "realm", 280 PyString_FromString(settings->realm)); 281 } 254 282 PyDict_SetItemString(parameters, "machinepass", 255 283 PyString_FromString(settings->machine_password)); … … 301 329 return NT_STATUS_UNSUCCESSFUL; 302 330 } 331 332 333 struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, 334 DATA_BLOB *override_prefixmap) 335 { 336 PyObject *schema_mod, *schema_dict, *schema_fn, *py_result, *parameters; 337 338 Py_Initialize(); 339 py_update_path(); /* Put the samba path at the start of sys.path */ 340 341 schema_mod = schema_module(); 342 343 if (schema_mod == NULL) { 344 PyErr_Print(); 345 DEBUG(0, ("Unable to import schema Python module.\n")); 346 return NULL; 347 } 348 349 schema_dict = PyModule_GetDict(schema_mod); 350 351 if (schema_dict == NULL) { 352 DEBUG(0, ("Unable to get dictionary for schema module\n")); 353 return NULL; 354 } 355 356 schema_fn = PyDict_GetItemString(schema_dict, "ldb_with_schema"); 357 if (schema_fn == NULL) { 358 PyErr_Print(); 359 DEBUG(0, ("Unable to get schema_get_ldb function\n")); 360 return NULL; 361 } 362 363 parameters = PyDict_New(); 364 365 if (override_prefixmap) { 366 PyDict_SetItemString(parameters, "override_prefixmap", 367 PyString_FromStringAndSize((const char *)override_prefixmap->data, 368 override_prefixmap->length)); 369 } 370 371 py_result = PyEval_CallObjectWithKeywords(schema_fn, NULL, parameters); 372 373 Py_DECREF(parameters); 374 375 if (py_result == NULL) { 376 PyErr_Print(); 377 PyErr_Clear(); 378 return NULL; 379 } 380 381 return PyLdb_AsLdbContext(PyObject_GetAttrString(py_result, "ldb")); 382 } -
vendor/current/source4/param/provision.h
r414 r740 49 49 const char *realm; 50 50 const char *netbios_name; 51 const char *account_name;52 51 enum netr_SchannelType secure_channel_type; 53 52 const char *machine_password; … … 65 64 const char **error_string); 66 65 66 struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, 67 DATA_BLOB *override_prefixmap); 68 67 69 #endif /* _PROVISION_H_ */ -
vendor/current/source4/param/pyparam.c
r414 r740 18 18 */ 19 19 20 #include <stdint.h> 21 #include <stdbool.h> 22 20 #include <Python.h> 23 21 #include "includes.h" 24 22 #include "param/param.h" 25 23 #include "param/loadparm.h" 26 #include <Python.h>27 #include " pytalloc.h"24 #include "lib/talloc/pytalloc.h" 25 #include "dynconfig/dynconfig.h" 28 26 29 27 /* There's no Py_ssize_t in 2.4, apparently */ … … 33 31 #endif 34 32 35 #ifndef Py_RETURN_NONE36 #define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None37 #endif38 39 33 #define PyLoadparmContext_AsLoadparmContext(obj) py_talloc_get_type(obj, struct loadparm_context) 40 41 PyAPI_DATA(PyTypeObject) PyLoadparmContext; 42 PyAPI_DATA(PyTypeObject) PyLoadparmService; 34 #define PyLoadparmService_AsLoadparmService(obj) py_talloc_get_type(obj, struct loadparm_service) 35 36 extern PyTypeObject PyLoadparmContext; 37 extern PyTypeObject PyLoadparmService; 43 38 44 39 PyObject *PyLoadparmService_FromService(struct loadparm_service *service) … … 49 44 static PyObject *py_lp_ctx_get_helper(struct loadparm_context *lp_ctx, const char *service_name, const char *param_name) 50 45 { 51 52 53 54 55 if (service_name != NULL) { 56 struct loadparm_service *service;57 /* its a share parameter */58 service = lp_service(lp_ctx, service_name);59 if (service == NULL) {60 return NULL;61 }62 if (strchr(param_name, ':')) {63 /* its a parametric option on a share */64 const char *type = talloc_strndup(lp_ctx,65 param_name,66 67 68 69 70 return NULL;71 72 value = lp_get_parametric(lp_ctx, service, type, option);73 74 return NULL;75 76 77 }78 79 parm = lp_parm_struct(param_name);80 if (parm == NULL || parm->pclass == P_GLOBAL) {81 82 }83 parm_ptr = lp_parm_ptr(lp_ctx, service, parm);46 struct parm_struct *parm = NULL; 47 void *parm_ptr = NULL; 48 int i; 49 50 if (service_name != NULL && strwicmp(service_name, GLOBAL_NAME) && 51 strwicmp(service_name, GLOBAL_NAME2)) { 52 struct loadparm_service *service; 53 /* its a share parameter */ 54 service = lpcfg_service(lp_ctx, service_name); 55 if (service == NULL) { 56 return NULL; 57 } 58 if (strchr(param_name, ':')) { 59 /* its a parametric option on a share */ 60 const char *type = talloc_strndup(lp_ctx, param_name, 61 strcspn(param_name, ":")); 62 const char *option = strchr(param_name, ':') + 1; 63 const char *value; 64 if (type == NULL || option == NULL) { 65 return NULL; 66 } 67 value = lpcfg_get_parametric(lp_ctx, service, type, option); 68 if (value == NULL) { 69 return NULL; 70 } 71 return PyString_FromString(value); 72 } 73 74 parm = lpcfg_parm_struct(param_name); 75 if (parm == NULL || parm->pclass == P_GLOBAL) { 76 return NULL; 77 } 78 parm_ptr = lpcfg_parm_ptr(lp_ctx, service, parm); 84 79 } else if (strchr(param_name, ':')) { 85 /* its a global parametric option */86 const char *type = talloc_strndup(lp_ctx,87 param_name, strcspn(param_name, ":"));88 const char *option = strchr(param_name, ':') + 1;89 const char *value;90 if (type == NULL || option == NULL) {91 92 }93 value = lp_get_parametric(lp_ctx, NULL, type, option);94 if (value == NULL)95 96 return PyString_FromString(value);97 98 /* its a global parameter */99 parm = lp_parm_struct(param_name);100 if (parm == NULL) {101 102 }103 parm_ptr = lp_parm_ptr(lp_ctx, NULL, parm);104 105 106 107 return NULL;80 /* its a global parametric option */ 81 const char *type = talloc_strndup(lp_ctx, 82 param_name, strcspn(param_name, ":")); 83 const char *option = strchr(param_name, ':') + 1; 84 const char *value; 85 if (type == NULL || option == NULL) { 86 return NULL; 87 } 88 value = lpcfg_get_parametric(lp_ctx, NULL, type, option); 89 if (value == NULL) 90 return NULL; 91 return PyString_FromString(value); 92 } else { 93 /* its a global parameter */ 94 parm = lpcfg_parm_struct(param_name); 95 if (parm == NULL) { 96 return NULL; 97 } 98 parm_ptr = lpcfg_parm_ptr(lp_ctx, NULL, parm); 99 } 100 101 if (parm == NULL || parm_ptr == NULL) { 102 return NULL; 108 103 } 109 104 … … 126 121 } 127 122 return NULL; 123 case P_CMDLIST: 128 124 case P_LIST: 129 125 { … … 156 152 return NULL; 157 153 158 ret = lp _load(PyLoadparmContext_AsLoadparmContext(self), filename);154 ret = lpcfg_load(PyLoadparmContext_AsLoadparmContext(self), filename); 159 155 160 156 if (!ret) { … … 168 164 { 169 165 bool ret; 170 ret = lp _load_default(PyLoadparmContext_AsLoadparmContext(self));166 ret = lpcfg_load_default(PyLoadparmContext_AsLoadparmContext(self)); 171 167 172 168 if (!ret) { … … 182 178 char *section_name = NULL; 183 179 PyObject *ret; 184 if (!PyArg_ParseTuple(args, "s| s", ¶m_name, §ion_name))180 if (!PyArg_ParseTuple(args, "s|z", ¶m_name, §ion_name)) 185 181 return NULL; 186 182 … … 197 193 return NULL; 198 194 199 return PyBool_FromLong(lp _is_myname(PyLoadparmContext_AsLoadparmContext(self), name));195 return PyBool_FromLong(lpcfg_is_myname(PyLoadparmContext_AsLoadparmContext(self), name)); 200 196 } 201 197 … … 206 202 return NULL; 207 203 208 return PyBool_FromLong(lp _is_mydomain(PyLoadparmContext_AsLoadparmContext(self), name));204 return PyBool_FromLong(lpcfg_is_mydomain(PyLoadparmContext_AsLoadparmContext(self), name)); 209 205 } 210 206 … … 216 212 return NULL; 217 213 218 ret = lp _set_cmdline(PyLoadparmContext_AsLoadparmContext(self), name, value);214 ret = lpcfg_set_cmdline(PyLoadparmContext_AsLoadparmContext(self), name, value); 219 215 if (!ret) { 220 216 PyErr_SetString(PyExc_RuntimeError, "Unable to set parameter"); … … 244 240 PyObject *ret; 245 241 int i; 246 ret = PyList_New(lp _numservices(lp_ctx));247 for (i = 0; i < lp _numservices(lp_ctx); i++) {248 struct loadparm_service *service = lp _servicebynum(lp_ctx, i);242 ret = PyList_New(lpcfg_numservices(lp_ctx)); 243 for (i = 0; i < lpcfg_numservices(lp_ctx); i++) { 244 struct loadparm_service *service = lpcfg_servicebynum(lp_ctx, i); 249 245 if (service != NULL) { 250 PyList_SetItem(ret, i, PyString_FromString(lp _servicename(service)));246 PyList_SetItem(ret, i, PyString_FromString(lpcfg_servicename(service))); 251 247 } 252 248 } 253 249 return ret; 254 250 } 251 252 static PyObject *py_lp_dump(PyObject *self, PyObject *args) 253 { 254 PyObject *py_stream; 255 bool show_defaults = false; 256 FILE *f; 257 struct loadparm_context *lp_ctx = PyLoadparmContext_AsLoadparmContext(self); 258 259 if (!PyArg_ParseTuple(args, "O|b", &py_stream, &show_defaults)) 260 return NULL; 261 262 f = PyFile_AsFile(py_stream); 263 if (f == NULL) { 264 PyErr_SetString(PyExc_TypeError, "Not a file stream"); 265 return NULL; 266 } 267 268 lpcfg_dump(lp_ctx, f, show_defaults, lpcfg_numservices(lp_ctx)); 269 270 Py_RETURN_NONE; 271 } 272 255 273 256 274 static PyMethodDef py_lp_ctx_methods[] = { … … 277 295 { "services", (PyCFunction)py_lp_ctx_services, METH_NOARGS, 278 296 "S.services() -> list" }, 297 { "dump", (PyCFunction)py_lp_dump, METH_VARARGS, 298 "S.dump(stream, show_defaults=False)" }, 279 299 { NULL } 280 300 }; … … 282 302 static PyObject *py_lp_ctx_default_service(py_talloc_Object *self, void *closure) 283 303 { 284 return PyLoadparmService_FromService(lp _default_service(PyLoadparmContext_AsLoadparmContext(self)));304 return PyLoadparmService_FromService(lpcfg_default_service(PyLoadparmContext_AsLoadparmContext(self))); 285 305 } 286 306 287 307 static PyObject *py_lp_ctx_config_file(py_talloc_Object *self, void *closure) 288 308 { 289 const char *configfile = lp _configfile(PyLoadparmContext_AsLoadparmContext(self));309 const char *configfile = lpcfg_configfile(PyLoadparmContext_AsLoadparmContext(self)); 290 310 if (configfile == NULL) 291 311 Py_RETURN_NONE; … … 313 333 return NULL; 314 334 } 315 ret->ptr = loadparm_init (ret->talloc_ctx);335 ret->ptr = loadparm_init_global(false); 316 336 return (PyObject *)ret; 317 337 } … … 319 339 static Py_ssize_t py_lp_ctx_len(py_talloc_Object *self) 320 340 { 321 return lp _numservices(PyLoadparmContext_AsLoadparmContext(self));341 return lpcfg_numservices(PyLoadparmContext_AsLoadparmContext(self)); 322 342 } 323 343 … … 329 349 return NULL; 330 350 } 331 service = lp _service(PyLoadparmContext_AsLoadparmContext(self), PyString_AsString(name));351 service = lpcfg_service(PyLoadparmContext_AsLoadparmContext(self), PyString_AsString(name)); 332 352 if (service == NULL) { 333 353 PyErr_SetString(PyExc_KeyError, "No such section"); … … 345 365 .tp_name = "LoadParm", 346 366 .tp_basicsize = sizeof(py_talloc_Object), 347 .tp_dealloc = py_talloc_dealloc,348 367 .tp_getset = py_lp_ctx_getset, 349 368 .tp_methods = py_lp_ctx_methods, … … 353 372 }; 354 373 374 static PyObject *py_lp_service_dump(PyObject *self, PyObject *args) 375 { 376 PyObject *py_stream; 377 bool show_defaults = false; 378 FILE *f; 379 struct loadparm_service *service = PyLoadparmService_AsLoadparmService(self); 380 struct loadparm_service *default_service; 381 PyObject *py_default_service; 382 383 if (!PyArg_ParseTuple(args, "OO|b", &py_stream, &py_default_service, 384 &show_defaults)) 385 return NULL; 386 387 f = PyFile_AsFile(py_stream); 388 if (f == NULL) { 389 PyErr_SetString(PyExc_TypeError, "Not a file stream"); 390 return NULL; 391 } 392 393 if (!PyObject_TypeCheck(py_default_service, &PyLoadparmService)) { 394 PyErr_SetNone(PyExc_TypeError); 395 return NULL; 396 } 397 398 default_service = PyLoadparmService_AsLoadparmService(py_default_service); 399 400 lpcfg_dump_one(f, show_defaults, service, default_service); 401 402 Py_RETURN_NONE; 403 } 404 405 static PyMethodDef py_lp_service_methods[] = { 406 { "dump", (PyCFunction)py_lp_service_dump, METH_VARARGS, 407 "S.dump(f, default_service, show_defaults=False)" }, 408 { NULL } 409 }; 410 355 411 PyTypeObject PyLoadparmService = { 356 412 .tp_name = "LoadparmService", 357 .tp_dealloc = py_talloc_dealloc,358 413 .tp_basicsize = sizeof(py_talloc_Object), 414 .tp_methods = py_lp_service_methods, 359 415 .tp_flags = Py_TPFLAGS_DEFAULT, 360 416 }; … … 363 419 { 364 420 return PyString_FromString(lp_default_path()); 421 } 422 423 static PyObject *py_setup_dir(PyObject *self) 424 { 425 return PyString_FromString(dyn_SETUPDIR); 365 426 } 366 427 … … 368 429 { "default_path", (PyCFunction)py_default_path, METH_NOARGS, 369 430 "Returns the default smb.conf path." }, 431 { "setup_dir", (PyCFunction)py_setup_dir, METH_NOARGS, 432 "Returns the compiled in location of provision tempates." }, 370 433 { NULL } 371 434 }; … … 374 437 { 375 438 PyObject *m; 439 PyTypeObject *talloc_type = PyTalloc_GetObjectType(); 440 if (talloc_type == NULL) 441 return; 442 443 PyLoadparmContext.tp_base = talloc_type; 444 PyLoadparmService.tp_base = talloc_type; 376 445 377 446 if (PyType_Ready(&PyLoadparmContext) < 0) 447 return; 448 449 if (PyType_Ready(&PyLoadparmService) < 0) 378 450 return; 379 451 -
vendor/current/source4/param/pyparam.h
r414 r740 21 21 #define _PYPARAM_H_ 22 22 23 _PUBLIC_ struct loadparm_context *lp_from_py_object(PyObject *py_obj); 23 #include "param/param.h" 24 25 _PUBLIC_ struct loadparm_context *lpcfg_from_py_object(TALLOC_CTX *mem_ctx, PyObject *py_obj); 24 26 _PUBLIC_ struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx); 25 27 -
vendor/current/source4/param/pyparam_util.c
r414 r740 18 18 */ 19 19 20 #include <stdint.h> 21 #include <stdbool.h> 22 20 #include <Python.h> 23 21 #include "includes.h" 24 22 #include "param/param.h" 25 23 #include "param/loadparm.h" 26 #include <Python.h> 27 #include "pytalloc.h" 24 #include "lib/talloc/pytalloc.h" 28 25 29 26 #define PyLoadparmContext_AsLoadparmContext(obj) py_talloc_get_type(obj, struct loadparm_context) 30 27 31 _PUBLIC_ struct loadparm_context *lp _from_py_object(PyObject *py_obj)28 _PUBLIC_ struct loadparm_context *lpcfg_from_py_object(TALLOC_CTX *mem_ctx, PyObject *py_obj) 32 29 { 33 struct loadparm_context *lp_ctx; 30 struct loadparm_context *lp_ctx; 31 PyObject *param_mod; 32 PyTypeObject *lp_type; 33 bool is_lpobj; 34 34 35 if (PyString_Check(py_obj)) { 36 lp_ctx = loadparm_init(NULL); 37 if (!lp_load(lp_ctx, PyString_AsString(py_obj))) { 38 talloc_free(lp_ctx); 35 if (PyString_Check(py_obj)) { 36 lp_ctx = loadparm_init_global(false); 37 if (!lpcfg_load(lp_ctx, PyString_AsString(py_obj))) { 39 38 PyErr_Format(PyExc_RuntimeError, "Unable to load %s", 40 41 42 43 44 39 PyString_AsString(py_obj)); 40 return NULL; 41 } 42 return lp_ctx; 43 } 45 44 46 if (py_obj == Py_None) { 47 lp_ctx = loadparm_init(NULL); 48 /* We're not checking that loading the file succeeded *on purpose */ 49 lp_load_default(lp_ctx); 50 return lp_ctx; 51 } 45 if (py_obj == Py_None) { 46 return loadparm_init_global(true); 47 } 52 48 53 return PyLoadparmContext_AsLoadparmContext(py_obj); 49 param_mod = PyImport_ImportModule("samba.param"); 50 if (param_mod == NULL) { 51 return NULL; 52 } 53 54 lp_type = (PyTypeObject *)PyObject_GetAttrString(param_mod, "LoadParm"); 55 Py_DECREF(param_mod); 56 if (lp_type == NULL) { 57 PyErr_SetString(PyExc_RuntimeError, "Unable to import LoadParm"); 58 return NULL; 59 } 60 61 is_lpobj = PyObject_TypeCheck(py_obj, lp_type); 62 Py_DECREF(lp_type); 63 if (is_lpobj) { 64 return talloc_reference(mem_ctx, PyLoadparmContext_AsLoadparmContext(py_obj)); 65 } 66 67 PyErr_SetNone(PyExc_TypeError); 68 return NULL; 54 69 } 55 70 56 71 struct loadparm_context *py_default_loadparm_context(TALLOC_CTX *mem_ctx) 57 72 { 58 struct loadparm_context *ret; 59 ret = loadparm_init(mem_ctx); 60 if (!lp_load_default(ret)) 61 return NULL; 62 return ret; 73 return loadparm_init_global(true); 63 74 } 64 75 -
vendor/current/source4/param/samba-hostconfig.pc.in
r414 r740 6 6 Name: samba-hostconfig 7 7 Description: Host-wide Samba configuration 8 Version: 0.0.19 Libs: -L${libdir} -lsamba-hostconfig8 Version: @PACKAGE_VERSION@ 9 Libs: @LIB_RPATH@ -L${libdir} -lsamba-hostconfig 10 10 Cflags: -I${includedir} -DHAVE_IMMEDIATE_STRUCTURES=1 -
vendor/current/source4/param/secrets.c
r414 r740 26 26 #include "param/param.h" 27 27 #include "system/filesys.h" 28 #include " tdb_wrap.h"29 #include "lib/ldb /include/ldb.h"30 #include "../tdb/include/tdb.h"28 #include "lib/util/tdb_wrap.h" 29 #include "lib/ldb-samba/ldb_wrap.h" 30 #include <ldb.h> 31 31 #include "../lib/util/util_tdb.h" 32 #include "../lib/util/util_ldb.h"33 32 #include "librpc/gen_ndr/ndr_security.h" 33 #include "dsdb/samdb/samdb.h" 34 34 35 35 /** … … 87 87 */ 88 88 struct ldb_context *secrets_db_connect(TALLOC_CTX *mem_ctx, 89 struct tevent_context *ev_ctx,90 89 struct loadparm_context *lp_ctx) 91 90 { 92 char *path; 93 const char *url; 94 struct ldb_context *ldb; 95 96 url = lp_secrets_url(lp_ctx); 97 if (!url || !url[0]) { 98 return NULL; 99 } 100 101 path = private_path(mem_ctx, lp_ctx, url); 102 if (!path) { 103 return NULL; 104 } 105 106 /* Secrets.ldb *must* always be local. If we call for a 107 * system_session() we will recurse */ 108 ldb = ldb_init(mem_ctx, ev_ctx); 109 if (!ldb) { 110 talloc_free(path); 111 return NULL; 112 } 113 114 ldb_set_modules_dir(ldb, 115 talloc_asprintf(ldb, "%s/ldb", lp_modulesdir(lp_ctx))); 116 117 if (ldb_connect(ldb, path, 0, NULL) != 0) { 118 talloc_free(path); 119 return NULL; 120 } 121 122 /* the update_keytab module relies on this being setup */ 123 if (ldb_set_opaque(ldb, "loadparm", lp_ctx) != LDB_SUCCESS) { 124 talloc_free(path); 125 talloc_free(ldb); 126 return NULL; 127 } 128 129 talloc_free(path); 130 131 return ldb; 91 return ldb_wrap_connect(mem_ctx, NULL, lp_ctx, lpcfg_secrets_url(lp_ctx), 92 NULL, NULL, 0); 132 93 } 133 94 … … 137 98 */ 138 99 struct dom_sid *secrets_get_domain_sid(TALLOC_CTX *mem_ctx, 139 struct tevent_context *ev_ctx,140 100 struct loadparm_context *lp_ctx, 141 const char *domain) 101 const char *domain, 102 enum netr_SchannelType *sec_channel_type, 103 char **errstring) 142 104 { 143 105 struct ldb_context *ldb; 144 struct ldb_message * *msgs;106 struct ldb_message *msg; 145 107 int ldb_ret; 146 const char *attrs[] = { "objectSid", NULL };108 const char *attrs[] = { "objectSid", "secureChannelType", NULL }; 147 109 struct dom_sid *result = NULL; 148 110 const struct ldb_val *v; 149 111 enum ndr_err_code ndr_err; 150 112 151 ldb = secrets_db_connect(mem_ctx, ev_ctx, lp_ctx); 113 *errstring = NULL; 114 115 ldb = secrets_db_connect(mem_ctx, lp_ctx); 152 116 if (ldb == NULL) { 153 117 DEBUG(5, ("secrets_db_connect failed\n")); … … 155 119 } 156 120 157 ldb_ret = gendb_search(ldb, ldb,158 ldb_dn_new(mem_ctx, ldb, SECRETS_PRIMARY_DOMAIN_DN),159 &msgs, attrs,160 SECRETS_PRIMARY_DOMAIN_FILTER, domain);121 ldb_ret = dsdb_search_one(ldb, ldb, &msg, 122 ldb_dn_new(mem_ctx, ldb, SECRETS_PRIMARY_DOMAIN_DN), 123 LDB_SCOPE_ONELEVEL, 124 attrs, 0, SECRETS_PRIMARY_DOMAIN_FILTER, domain); 161 125 162 if (ldb_ret == -1) { 163 DEBUG(5, ("Error searching for domain SID for %s: %s", 164 domain, ldb_errstring(ldb))); 165 talloc_free(ldb); 126 if (ldb_ret != LDB_SUCCESS) { 127 *errstring = talloc_asprintf(mem_ctx, "Failed to find record for %s in %s: %s: %s", 128 domain, (char *) ldb_get_opaque(ldb, "ldb_url"), 129 ldb_strerror(ldb_ret), ldb_errstring(ldb)); 130 return NULL; 131 } 132 v = ldb_msg_find_ldb_val(msg, "objectSid"); 133 if (v == NULL) { 134 *errstring = talloc_asprintf(mem_ctx, "Failed to find a SID on record for %s in %s", 135 domain, (char *) ldb_get_opaque(ldb, "ldb_url")); 166 136 return NULL; 167 137 } 168 138 169 if (ldb_ret == 0) { 170 DEBUG(5, ("Did not find domain record for %s\n", domain)); 171 talloc_free(ldb); 172 return NULL; 139 if (sec_channel_type) { 140 int t; 141 t = ldb_msg_find_attr_as_int(msg, "secureChannelType", -1); 142 if (t == -1) { 143 *errstring = talloc_asprintf(mem_ctx, "Failed to find secureChannelType for %s in %s", 144 domain, (char *) ldb_get_opaque(ldb, "ldb_url")); 145 return NULL; 146 } 147 *sec_channel_type = t; 173 148 } 174 149 175 if (ldb_ret > 1) {176 DEBUG(5, ("Found more than one (%d) domain records for %s\n",177 ldb_ret, domain));178 talloc_free(ldb);179 return NULL;180 }181 182 v = ldb_msg_find_ldb_val(msgs[0], "objectSid");183 if (v == NULL) {184 DEBUG(0, ("Domain object for %s does not contain a SID!\n",185 domain));186 return NULL;187 }188 150 result = talloc(mem_ctx, struct dom_sid); 189 151 if (result == NULL) { … … 192 154 } 193 155 194 ndr_err = ndr_pull_struct_blob(v, result, NULL,result,156 ndr_err = ndr_pull_struct_blob(v, result, result, 195 157 (ndr_pull_flags_fn_t)ndr_pull_dom_sid); 196 158 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { 159 *errstring = talloc_asprintf(mem_ctx, "Failed to parse SID on record for %s in %s", 160 domain, (char *) ldb_get_opaque(ldb, "ldb_url")); 197 161 talloc_free(result); 198 162 talloc_free(ldb); … … 202 166 return result; 203 167 } 168 169 char *keytab_name_from_msg(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, struct ldb_message *msg) 170 { 171 const char *krb5keytab = ldb_msg_find_attr_as_string(msg, "krb5Keytab", NULL); 172 if (krb5keytab) { 173 return talloc_strdup(mem_ctx, krb5keytab); 174 } else { 175 char *file_keytab; 176 char *relative_path; 177 const char *privateKeytab = ldb_msg_find_attr_as_string(msg, "privateKeytab", NULL); 178 if (!privateKeytab) { 179 return NULL; 180 } 181 182 relative_path = ldb_relative_path(ldb, mem_ctx, privateKeytab); 183 if (!relative_path) { 184 return NULL; 185 } 186 file_keytab = talloc_asprintf(mem_ctx, "FILE:%s", relative_path); 187 talloc_free(relative_path); 188 return file_keytab; 189 } 190 return NULL; 191 } 192 -
vendor/current/source4/param/secrets.h
r414 r740 27 27 #define SECRETS_KRBTGT_SEARCH "(&((|(realm=%s)(flatname=%s))(samAccountName=krbtgt)))" 28 28 #define SECRETS_PRINCIPAL_SEARCH "(&(|(realm=%s)(flatname=%s))(servicePrincipalName=%s))" 29 #define SECRETS_LDAP_FILTER "( objectclass=ldapSecret)"29 #define SECRETS_LDAP_FILTER "(&(objectclass=ldapSecret)(cn=SAMDB Credentials))" 30 30 31 31 /** … … 39 39 struct loadparm_context; 40 40 struct tevent_context; 41 struct ldb_message; 42 struct ldb_context; 43 44 #include "librpc/gen_ndr/misc.h" 45 41 46 struct tdb_wrap *secrets_init(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx); 42 struct ldb_context *secrets_db_connect(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx, struct loadparm_context *lp_ctx); 43 struct dom_sid *secrets_get_domain_sid(TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx, struct loadparm_context *lp_ctx, const char *domain); 47 struct ldb_context *secrets_db_connect(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx); 48 struct dom_sid *secrets_get_domain_sid(TALLOC_CTX *mem_ctx, 49 struct loadparm_context *lp_ctx, 50 const char *domain, 51 enum netr_SchannelType *sec_channel_type, 52 char **errstring); 53 char *keytab_name_from_msg(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, struct ldb_message *msg); 44 54 45 55 -
vendor/current/source4/param/share.c
r414 r740 147 147 NTSTATUS share_init(void) 148 148 { 149 extern NTSTATUS share_ldb_init(void);150 extern NTSTATUS share_classic_init(void);149 #define _MODULE_PROTO(init) extern NTSTATUS init(void); 150 STATIC_share_MODULES_PROTO; 151 151 init_module_fn static_init[] = { STATIC_share_MODULES }; 152 152 -
vendor/current/source4/param/share.h
r414 r740 68 68 struct loadparm_context; 69 69 70 #include "param/share_proto.h" 70 const char *share_string_option(struct share_config *scfg, const char *opt_name, const char *defval); 71 int share_int_option(struct share_config *scfg, const char *opt_name, int defval); 72 bool share_bool_option(struct share_config *scfg, const char *opt_name, bool defval); 73 const char **share_string_list_option(TALLOC_CTX *mem_ctx, struct share_config *scfg, const char *opt_name); 74 NTSTATUS share_list_all(TALLOC_CTX *mem_ctx, struct share_context *sctx, int *count, const char ***names); 75 NTSTATUS share_get_config(TALLOC_CTX *mem_ctx, struct share_context *sctx, const char *name, struct share_config **scfg); 76 NTSTATUS share_create(struct share_context *sctx, const char *name, struct share_info *info, int count); 77 NTSTATUS share_set(struct share_context *sctx, const char *name, struct share_info *info, int count); 78 NTSTATUS share_remove(struct share_context *sctx, const char *name); 79 NTSTATUS share_register(const struct share_ops *ops); 80 NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name, 81 struct tevent_context *event_ctx, 82 struct loadparm_context *lp_ctx, 83 struct share_context **ctx); 84 NTSTATUS share_init(void); 71 85 72 86 /* list of shares options */ -
vendor/current/source4/param/share_classic.c
r414 r740 48 48 struct loadparm_service *s = talloc_get_type(scfg->opaque, 49 49 struct loadparm_service); 50 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 50 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 51 51 struct loadparm_context); 52 52 char *parm, *val; … … 62 62 val++; 63 63 64 ret = lp _parm_string(lp_ctx, s, parm, val);64 ret = lpcfg_parm_string(lp_ctx, s, parm, val); 65 65 if (!ret) { 66 66 ret = defval; … … 75 75 76 76 if (strcmp(opt_name, SHARE_PATH) == 0) { 77 return lp _pathname(s, lp_default_service(lp_ctx));77 return lpcfg_pathname(s, lpcfg_default_service(lp_ctx)); 78 78 } 79 79 80 80 if (strcmp(opt_name, SHARE_COMMENT) == 0) { 81 return lp _comment(s, lp_default_service(lp_ctx));81 return lpcfg_comment(s, lpcfg_default_service(lp_ctx)); 82 82 } 83 83 84 84 if (strcmp(opt_name, SHARE_VOLUME) == 0) { 85 return volume_label(s, lp _default_service(lp_ctx));85 return volume_label(s, lpcfg_default_service(lp_ctx)); 86 86 } 87 87 88 88 if (strcmp(opt_name, SHARE_TYPE) == 0) { 89 if (lp _print_ok(s, lp_default_service(lp_ctx))) {89 if (lpcfg_print_ok(s, lpcfg_default_service(lp_ctx))) { 90 90 return "PRINTER"; 91 91 } 92 if (strcmp("NTFS", lp _fstype(s, lp_default_service(lp_ctx))) == 0) {92 if (strcmp("NTFS", lpcfg_fstype(s, lpcfg_default_service(lp_ctx))) == 0) { 93 93 return "DISK"; 94 94 } 95 return lp _fstype(s, lp_default_service(lp_ctx));95 return lpcfg_fstype(s, lpcfg_default_service(lp_ctx)); 96 96 } 97 97 … … 110 110 struct loadparm_service *s = talloc_get_type(scfg->opaque, 111 111 struct loadparm_service); 112 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 112 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 113 113 struct loadparm_context); 114 114 char *parm, *val; … … 124 124 val++; 125 125 126 ret = lp _parm_int(lp_ctx, s, parm, val, defval);126 ret = lpcfg_parm_int(lp_ctx, s, parm, val, defval); 127 127 if (!ret) { 128 128 ret = defval; … … 133 133 134 134 if (strcmp(opt_name, SHARE_CSC_POLICY) == 0) { 135 return lp _csc_policy(s, lp_default_service(lp_ctx));135 return lpcfg_csc_policy(s, lpcfg_default_service(lp_ctx)); 136 136 } 137 137 138 138 if (strcmp(opt_name, SHARE_MAX_CONNECTIONS) == 0) { 139 return lp _max_connections(s, lp_default_service(lp_ctx));139 return lpcfg_max_connections(s, lpcfg_default_service(lp_ctx)); 140 140 } 141 141 142 142 if (strcmp(opt_name, SHARE_CREATE_MASK) == 0) { 143 return lp _create_mask(s, lp_default_service(lp_ctx));143 return lpcfg_create_mask(s, lpcfg_default_service(lp_ctx)); 144 144 } 145 145 146 146 if (strcmp(opt_name, SHARE_DIR_MASK) == 0) { 147 return lp _dir_mask(s, lp_default_service(lp_ctx));147 return lpcfg_dir_mask(s, lpcfg_default_service(lp_ctx)); 148 148 } 149 149 150 150 if (strcmp(opt_name, SHARE_FORCE_DIR_MODE) == 0) { 151 return lp _force_dir_mode(s, lp_default_service(lp_ctx));151 return lpcfg_force_dir_mode(s, lpcfg_default_service(lp_ctx)); 152 152 } 153 153 154 154 if (strcmp(opt_name, SHARE_FORCE_CREATE_MODE) == 0) { 155 return lp _force_create_mode(s, lp_default_service(lp_ctx));155 return lpcfg_force_create_mode(s, lpcfg_default_service(lp_ctx)); 156 156 } 157 157 … … 168 168 struct loadparm_service *s = talloc_get_type(scfg->opaque, 169 169 struct loadparm_service); 170 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 170 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 171 171 struct loadparm_context); 172 172 char *parm, *val; … … 182 182 val++; 183 183 184 ret = lp _parm_bool(lp_ctx, s, parm, val, defval);184 ret = lpcfg_parm_bool(lp_ctx, s, parm, val, defval); 185 185 talloc_free(parm); 186 186 return ret; … … 192 192 193 193 if (strcmp(opt_name, SHARE_BROWSEABLE) == 0) { 194 return lp _browseable(s, lp_default_service(lp_ctx));194 return lpcfg_browseable(s, lpcfg_default_service(lp_ctx)); 195 195 } 196 196 197 197 if (strcmp(opt_name, SHARE_READONLY) == 0) { 198 return lp _readonly(s, lp_default_service(lp_ctx));198 return lpcfg_readonly(s, lpcfg_default_service(lp_ctx)); 199 199 } 200 200 201 201 if (strcmp(opt_name, SHARE_MAP_SYSTEM) == 0) { 202 return lp _map_system(s, lp_default_service(lp_ctx));202 return lpcfg_map_system(s, lpcfg_default_service(lp_ctx)); 203 203 } 204 204 205 205 if (strcmp(opt_name, SHARE_MAP_HIDDEN) == 0) { 206 return lp _map_hidden(s, lp_default_service(lp_ctx));206 return lpcfg_map_hidden(s, lpcfg_default_service(lp_ctx)); 207 207 } 208 208 209 209 if (strcmp(opt_name, SHARE_MAP_ARCHIVE) == 0) { 210 return lp _map_archive(s, lp_default_service(lp_ctx));210 return lpcfg_map_archive(s, lpcfg_default_service(lp_ctx)); 211 211 } 212 212 213 213 if (strcmp(opt_name, SHARE_STRICT_LOCKING) == 0) { 214 return lp _strict_locking(s, lp_default_service(lp_ctx));214 return lpcfg_strict_locking(s, lpcfg_default_service(lp_ctx)); 215 215 } 216 216 217 217 if (strcmp(opt_name, SHARE_OPLOCKS) == 0) { 218 return lp _oplocks(s, lp_default_service(lp_ctx));218 return lpcfg_oplocks(s, lpcfg_default_service(lp_ctx)); 219 219 } 220 220 221 221 if (strcmp(opt_name, SHARE_STRICT_SYNC) == 0) { 222 return lp _strict_sync(s, lp_default_service(lp_ctx));222 return lpcfg_strict_sync(s, lpcfg_default_service(lp_ctx)); 223 223 } 224 224 225 225 if (strcmp(opt_name, SHARE_MSDFS_ROOT) == 0) { 226 return lp _msdfs_root(s, lp_default_service(lp_ctx));226 return lpcfg_msdfs_root(s, lpcfg_default_service(lp_ctx)); 227 227 } 228 228 229 229 if (strcmp(opt_name, SHARE_CI_FILESYSTEM) == 0) { 230 return lp _ci_filesystem(s, lp_default_service(lp_ctx));230 return lpcfg_ci_filesystem(s, lpcfg_default_service(lp_ctx)); 231 231 } 232 232 … … 241 241 struct loadparm_service *s = talloc_get_type(scfg->opaque, 242 242 struct loadparm_service); 243 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 243 struct loadparm_context *lp_ctx = talloc_get_type(scfg->ctx->priv_data, 244 244 struct loadparm_context); 245 245 char *parm, *val; … … 255 255 val++; 256 256 257 ret = lp _parm_string_list(mem_ctx, lp_ctx, s, parm, val, ",;");257 ret = lpcfg_parm_string_list(mem_ctx, lp_ctx, s, parm, val, ",;"); 258 258 talloc_free(parm); 259 259 return ret; … … 261 261 262 262 if (strcmp(opt_name, SHARE_HOSTS_ALLOW) == 0) { 263 return lp _hostsallow(s, lp_default_service(lp_ctx));263 return lpcfg_hostsallow(s, lpcfg_default_service(lp_ctx)); 264 264 } 265 265 266 266 if (strcmp(opt_name, SHARE_HOSTS_DENY) == 0) { 267 return lp _hostsdeny(s, lp_default_service(lp_ctx));267 return lpcfg_hostsdeny(s, lpcfg_default_service(lp_ctx)); 268 268 } 269 269 270 270 if (strcmp(opt_name, SHARE_NTVFS_HANDLER) == 0) { 271 return lp _ntvfs_handler(s, lp_default_service(lp_ctx));271 return lpcfg_ntvfs_handler(s, lpcfg_default_service(lp_ctx)); 272 272 } 273 273 … … 287 287 const char **n; 288 288 289 num_services = lp _numservices((struct loadparm_context *)ctx->priv_data);289 num_services = lpcfg_numservices((struct loadparm_context *)ctx->priv_data); 290 290 291 291 n = talloc_array(mem_ctx, const char *, num_services); … … 296 296 297 297 for (i = 0; i < num_services; i++) { 298 n[i] = talloc_strdup(n, lp _servicename(lp_servicebynum((struct loadparm_context *)ctx->priv_data, i)));298 n[i] = talloc_strdup(n, lpcfg_servicename(lpcfg_servicebynum((struct loadparm_context *)ctx->priv_data, i))); 299 299 if (!n[i]) { 300 300 DEBUG(0,("ERROR: Out of memory!\n")); … … 318 318 struct loadparm_service *service; 319 319 320 service = lp _service((struct loadparm_context *)ctx->priv_data, name);320 service = lpcfg_service((struct loadparm_context *)ctx->priv_data, name); 321 321 322 322 if (service == NULL) { … … 330 330 } 331 331 332 s->name = talloc_strdup(s, lp _servicename(service));332 s->name = talloc_strdup(s, lpcfg_servicename(service)); 333 333 if (!s->name) { 334 334 DEBUG(0,("ERROR: Out of memory!\n")); -
vendor/current/source4/param/share_ldb.c
r414 r740 21 21 22 22 #include "includes.h" 23 #include "ldb/include/ldb.h"24 #include "ldb/include/ldb_errors.h"23 #include <ldb.h> 24 #include <ldb_errors.h> 25 25 #include "auth/auth.h" 26 26 #include "ldb_wrap.h" … … 41 41 } 42 42 43 sdb = ldb_wrap_connect(*ctx, ev_ctx, lp_ctx, 43 sdb = ldb_wrap_connect(*ctx, ev_ctx, lp_ctx, 44 44 private_path(*ctx, lp_ctx, "share.ldb"), 45 system_session( *ctx,lp_ctx),46 NULL, 0 , NULL);45 system_session(lp_ctx), 46 NULL, 0); 47 47 48 48 if (!sdb) { -
vendor/current/source4/param/tests/loadparm.c
r414 r740 33 33 { 34 34 struct loadparm_context *lp_ctx = loadparm_init(tctx); 35 torture_assert(tctx, lp _set_option(lp_ctx, "workgroup=werkgroep"), "lp_set_option failed");36 torture_assert_str_equal(tctx, "WERKGROEP", lp _workgroup(lp_ctx), "workgroup");35 torture_assert(tctx, lpcfg_set_option(lp_ctx, "workgroup=werkgroep"), "lpcfg_set_option failed"); 36 torture_assert_str_equal(tctx, "WERKGROEP", lpcfg_workgroup(lp_ctx), "workgroup"); 37 37 return true; 38 38 } … … 41 41 { 42 42 struct loadparm_context *lp_ctx = loadparm_init(tctx); 43 torture_assert(tctx, lp _set_cmdline(lp_ctx, "workgroup", "werkgroep"), "lp_set_cmdline failed");44 torture_assert(tctx, lp _do_global_parameter(lp_ctx, "workgroup", "barbla"), "lp_set_option failed");45 torture_assert_str_equal(tctx, "WERKGROEP", lp _workgroup(lp_ctx), "workgroup");43 torture_assert(tctx, lpcfg_set_cmdline(lp_ctx, "workgroup", "werkgroep"), "lpcfg_set_cmdline failed"); 44 torture_assert(tctx, lpcfg_do_global_parameter(lp_ctx, "workgroup", "barbla"), "lpcfg_set_option failed"); 45 torture_assert_str_equal(tctx, "WERKGROEP", lpcfg_workgroup(lp_ctx), "workgroup"); 46 46 return true; 47 47 } … … 50 50 { 51 51 struct loadparm_context *lp_ctx = loadparm_init(tctx); 52 torture_assert(tctx, lp _do_global_parameter(lp_ctx, "workgroup", "werkgroep42"),53 "lp _set_cmdline failed");54 torture_assert_str_equal(tctx, lp _workgroup(lp_ctx), "WERKGROEP42", "workgroup");52 torture_assert(tctx, lpcfg_do_global_parameter(lp_ctx, "workgroup", "werkgroep42"), 53 "lpcfg_set_cmdline failed"); 54 torture_assert_str_equal(tctx, lpcfg_workgroup(lp_ctx), "WERKGROEP42", "workgroup"); 55 55 return true; 56 56 } … … 60 60 { 61 61 struct loadparm_context *lp_ctx = loadparm_init(tctx); 62 torture_assert(tctx, lp _do_global_parameter_var(lp_ctx, "workgroup", "werk%s%d", "groep", 42),63 "lp _set_cmdline failed");64 torture_assert_str_equal(tctx, lp _workgroup(lp_ctx), "WERKGROEP42", "workgroup");62 torture_assert(tctx, lpcfg_do_global_parameter_var(lp_ctx, "workgroup", "werk%s%d", "groep", 42), 63 "lpcfg_set_cmdline failed"); 64 torture_assert_str_equal(tctx, lpcfg_workgroup(lp_ctx), "WERKGROEP42", "workgroup"); 65 65 return true; 66 66 } … … 70 70 { 71 71 struct loadparm_context *lp_ctx = loadparm_init(tctx); 72 torture_assert(tctx, !lp _set_option(lp_ctx, "workgroup"), "lp_set_option succeeded");72 torture_assert(tctx, !lpcfg_set_option(lp_ctx, "workgroup"), "lpcfg_set_option succeeded"); 73 73 return true; 74 74 } … … 77 77 { 78 78 struct loadparm_context *lp_ctx = loadparm_init(tctx); 79 torture_assert(tctx, lp _set_option(lp_ctx, "some:thing=blaat"), "lp_set_option failed");80 torture_assert_str_equal(tctx, lp _parm_string(lp_ctx, NULL, "some", "thing"), "blaat",79 torture_assert(tctx, lpcfg_set_option(lp_ctx, "some:thing=blaat"), "lpcfg_set_option failed"); 80 torture_assert_str_equal(tctx, lpcfg_parm_string(lp_ctx, NULL, "some", "thing"), "blaat", 81 81 "invalid parametric option"); 82 82 return true; … … 86 86 { 87 87 struct loadparm_context *lp_ctx = loadparm_init(tctx); 88 torture_assert(tctx, lp _set_option(lp_ctx, "some:thing=3.4"), "lp_set_option failed");89 torture_assert(tctx, lp _parm_double(lp_ctx, NULL, "some", "thing", 2.0) == 3.4,88 torture_assert(tctx, lpcfg_set_option(lp_ctx, "some:thing=3.4"), "lpcfg_set_option failed"); 89 torture_assert(tctx, lpcfg_parm_double(lp_ctx, NULL, "some", "thing", 2.0) == 3.4, 90 90 "invalid parametric option"); 91 torture_assert(tctx, lp _parm_double(lp_ctx, NULL, "some", "bla", 2.0) == 2.0,91 torture_assert(tctx, lpcfg_parm_double(lp_ctx, NULL, "some", "bla", 2.0) == 2.0, 92 92 "invalid parametric option"); 93 93 return true; … … 97 97 { 98 98 struct loadparm_context *lp_ctx = loadparm_init(tctx); 99 torture_assert(tctx, lp _set_option(lp_ctx, "some:thing=true"), "lp_set_option failed");100 torture_assert(tctx, lp _parm_bool(lp_ctx, NULL, "some", "thing", false) == true,99 torture_assert(tctx, lpcfg_set_option(lp_ctx, "some:thing=true"), "lpcfg_set_option failed"); 100 torture_assert(tctx, lpcfg_parm_bool(lp_ctx, NULL, "some", "thing", false) == true, 101 101 "invalid parametric option"); 102 torture_assert(tctx, lp _parm_bool(lp_ctx, NULL, "some", "bla", true) == true,102 torture_assert(tctx, lpcfg_parm_bool(lp_ctx, NULL, "some", "bla", true) == true, 103 103 "invalid parametric option"); 104 104 return true; … … 108 108 { 109 109 struct loadparm_context *lp_ctx = loadparm_init(tctx); 110 torture_assert(tctx, lp _set_option(lp_ctx, "some:thing=34"), "lp_set_option failed");111 torture_assert_int_equal(tctx, lp _parm_int(lp_ctx, NULL, "some", "thing", 20), 34,110 torture_assert(tctx, lpcfg_set_option(lp_ctx, "some:thing=34"), "lpcfg_set_option failed"); 111 torture_assert_int_equal(tctx, lpcfg_parm_int(lp_ctx, NULL, "some", "thing", 20), 34, 112 112 "invalid parametric option"); 113 torture_assert_int_equal(tctx, lp _parm_int(lp_ctx, NULL, "some", "bla", 42), 42,113 torture_assert_int_equal(tctx, lpcfg_parm_int(lp_ctx, NULL, "some", "bla", 42), 42, 114 114 "invalid parametric option"); 115 115 return true; … … 119 119 { 120 120 struct loadparm_context *lp_ctx = loadparm_init(tctx); 121 torture_assert(tctx, lp _set_option(lp_ctx, "some:thing=16K"), "lp_set_option failed");122 torture_assert_int_equal(tctx, lp _parm_bytes(lp_ctx, NULL, "some", "thing", 20), 16 * 1024,121 torture_assert(tctx, lpcfg_set_option(lp_ctx, "some:thing=16K"), "lpcfg_set_option failed"); 122 torture_assert_int_equal(tctx, lpcfg_parm_bytes(lp_ctx, NULL, "some", "thing", 20), 16 * 1024, 123 123 "invalid parametric option"); 124 torture_assert_int_equal(tctx, lp _parm_bytes(lp_ctx, NULL, "some", "bla", 42), 42,124 torture_assert_int_equal(tctx, lpcfg_parm_bytes(lp_ctx, NULL, "some", "bla", 42), 42, 125 125 "invalid parametric option"); 126 126 return true; … … 130 130 { 131 131 struct loadparm_context *lp_ctx = loadparm_init(tctx); 132 struct loadparm_service *service = lp _add_service(lp_ctx, lp_default_service(lp_ctx), "foo");133 torture_assert(tctx, lp _do_service_parameter(lp_ctx, service,134 "some:thing", "foo"), "lp _set_option failed");135 torture_assert_str_equal(tctx, lp _parm_string(lp_ctx, service, "some", "thing"), "foo",132 struct loadparm_service *service = lpcfg_add_service(lp_ctx, lpcfg_default_service(lp_ctx), "foo"); 133 torture_assert(tctx, lpcfg_do_service_parameter(lp_ctx, service, 134 "some:thing", "foo"), "lpcfg_set_option failed"); 135 torture_assert_str_equal(tctx, lpcfg_parm_string(lp_ctx, service, "some", "thing"), "foo", 136 136 "invalid parametric option"); 137 137 return true; … … 141 141 { 142 142 struct loadparm_context *lp_ctx = loadparm_init(tctx); 143 struct loadparm_service *service = lp _add_service(lp_ctx, lp_default_service(lp_ctx), "foo");144 torture_assert(tctx, service == lp _service(lp_ctx, "foo"), "invalid service");143 struct loadparm_service *service = lpcfg_add_service(lp_ctx, lpcfg_default_service(lp_ctx), "foo"); 144 torture_assert(tctx, service == lpcfg_service(lp_ctx, "foo"), "invalid service"); 145 145 return true; 146 146 } … … 148 148 struct torture_suite *torture_local_loadparm(TALLOC_CTX *mem_ctx) 149 149 { 150 struct torture_suite *suite = torture_suite_create(mem_ctx, " LOADPARM");150 struct torture_suite *suite = torture_suite_create(mem_ctx, "loadparm"); 151 151 152 152 torture_suite_add_simple_test(suite, "create", test_create); … … 160 160 torture_suite_add_simple_test(suite, "set_lp_parm_bytes", test_lp_parm_bytes); 161 161 torture_suite_add_simple_test(suite, "service_parameter", test_lp_do_service_parameter); 162 torture_suite_add_simple_test(suite, "lp _service", test_lp_service);162 torture_suite_add_simple_test(suite, "lpcfg_service", test_lp_service); 163 163 torture_suite_add_simple_test(suite, "do_global_parameter_var", test_do_global_parameter_var); 164 164 torture_suite_add_simple_test(suite, "do_global_parameter", test_do_global_parameter); -
vendor/current/source4/param/tests/share.c
r414 r740 107 107 NTSTATUS status; 108 108 109 status = share_remove(ctx, "nonexist ant");109 status = share_remove(ctx, "nonexistent"); 110 110 111 111 if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED)) … … 199 199 struct torture_suite *torture_local_share(TALLOC_CTX *mem_ctx) 200 200 { 201 struct torture_suite *suite = torture_suite_create(mem_ctx, " SHARE");201 struct torture_suite *suite = torture_suite_create(mem_ctx, "share"); 202 202 struct torture_tcase *tcase; 203 203 -
vendor/current/source4/param/util.c
r414 r740 36 36 37 37 38 bool lp _is_mydomain(struct loadparm_context *lp_ctx,38 bool lpcfg_is_mydomain(struct loadparm_context *lp_ctx, 39 39 const char *domain) 40 40 { 41 return strequal(lp _workgroup(lp_ctx), domain);42 } 43 44 bool lp _is_my_domain_or_realm(struct loadparm_context *lp_ctx,41 return strequal(lpcfg_workgroup(lp_ctx), domain); 42 } 43 44 bool lpcfg_is_my_domain_or_realm(struct loadparm_context *lp_ctx, 45 45 const char *domain) 46 46 { 47 return strequal(lp _workgroup(lp_ctx), domain) ||48 strequal(lp _realm(lp_ctx), domain);47 return strequal(lpcfg_workgroup(lp_ctx), domain) || 48 strequal(lpcfg_realm(lp_ctx), domain); 49 49 } 50 50 … … 53 53 netbios aliases. do a case insensitive match 54 54 */ 55 bool lp _is_myname(struct loadparm_context *lp_ctx, const char *name)55 bool lpcfg_is_myname(struct loadparm_context *lp_ctx, const char *name) 56 56 { 57 57 const char **aliases; 58 58 int i; 59 59 60 if (strcasecmp(name, lp _netbios_name(lp_ctx)) == 0) {60 if (strcasecmp(name, lpcfg_netbios_name(lp_ctx)) == 0) { 61 61 return true; 62 62 } 63 63 64 aliases = lp _netbios_aliases(lp_ctx);64 aliases = lpcfg_netbios_aliases(lp_ctx); 65 65 for (i=0; aliases && aliases[i]; i++) { 66 66 if (strcasecmp(name, aliases[i]) == 0) { … … 87 87 } 88 88 89 dname = talloc_strdup(mem_ctx, lp _lockdir(lp_ctx));89 dname = talloc_strdup(mem_ctx, lpcfg_lockdir(lp_ctx)); 90 90 trim_string(dname,"","/"); 91 91 … … 113 113 { 114 114 char *fname, *config_dir, *p; 115 config_dir = talloc_strdup(mem_ctx, lp _configfile(lp_ctx));115 config_dir = talloc_strdup(mem_ctx, lpcfg_configfile(lp_ctx)); 116 116 if (config_dir == NULL) { 117 117 config_dir = talloc_strdup(mem_ctx, lp_default_path()); … … 151 151 return talloc_strdup(mem_ctx, name); 152 152 } 153 fname = talloc_asprintf(mem_ctx, "%s/%s", lp _private_dir(lp_ctx), name);153 fname = talloc_asprintf(mem_ctx, "%s/%s", lpcfg_private_dir(lp_ctx), name); 154 154 return fname; 155 155 } … … 161 161 */ 162 162 char *smbd_tmp_path(TALLOC_CTX *mem_ctx, 163 struct loadparm_context *lp_ctx, 163 struct loadparm_context *lp_ctx, 164 164 const char *name) 165 165 { … … 270 270 const char *name) 271 271 { 272 const char *env_moduledir = getenv("LD_SAMBA_MODULE_PATH");273 272 return talloc_asprintf(mem_ctx, "%s/%s", 274 env_moduledir?env_moduledir:lp_modulesdir(lp_ctx),273 lpcfg_modulesdir(lp_ctx), 275 274 name); 276 275 } … … 294 293 } 295 294 296 const char *lp _messaging_path(TALLOC_CTX *mem_ctx,295 const char *lpcfg_messaging_path(TALLOC_CTX *mem_ctx, 297 296 struct loadparm_context *lp_ctx) 298 297 { 299 return smbd_tmp_path(mem_ctx, lp_ctx, "messaging"); 300 } 301 302 struct smb_iconv_convenience *smb_iconv_convenience_init_lp(TALLOC_CTX *mem_ctx, 303 struct loadparm_context *lp_ctx) 304 { 305 return smb_iconv_convenience_init(mem_ctx, lp_dos_charset(lp_ctx), 306 lp_unix_charset(lp_ctx), 307 lp_parm_bool(lp_ctx, NULL, "iconv", "native", true)); 308 } 309 310 311 const char *lp_sam_name(struct loadparm_context *lp_ctx) 312 { 313 switch (lp_server_role(lp_ctx)) { 298 return smbd_tmp_path(mem_ctx, lp_ctx, "msg"); 299 } 300 301 struct smb_iconv_convenience *smb_iconv_convenience_reinit_lp(TALLOC_CTX *mem_ctx, 302 struct loadparm_context *lp_ctx, 303 struct smb_iconv_convenience *old_ic) 304 { 305 return smb_iconv_convenience_reinit(mem_ctx, lpcfg_dos_charset(lp_ctx), 306 lpcfg_unix_charset(lp_ctx), 307 lpcfg_display_charset(lp_ctx), 308 lpcfg_parm_bool(lp_ctx, NULL, "iconv", "native", true), 309 old_ic); 310 } 311 312 313 const char *lpcfg_sam_name(struct loadparm_context *lp_ctx) 314 { 315 switch (lpcfg_server_role(lp_ctx)) { 314 316 case ROLE_DOMAIN_CONTROLLER: 315 return lp _workgroup(lp_ctx);317 return lpcfg_workgroup(lp_ctx); 316 318 default: 317 return lp _netbios_name(lp_ctx);318 } 319 } 320 319 return lpcfg_netbios_name(lp_ctx); 320 } 321 } 322
Note:
See TracChangeset
for help on using the changeset viewer.