From b9108cac529dac4b4b392fab4bac4fd0e6da1b4b Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 6 Jun 2011 16:47:32 +1000 Subject: s3-s4-param: Add hooks for parametric options in the s3/s4 glue layer Autobuild-User: Andrew Bartlett Autobuild-Date: Mon Jun 6 10:48:53 CEST 2011 on sn-devel-104 --- source3/param/loadparm_ctx.c | 26 ++++++++++++++++++++++++++ source4/param/loadparm.c | 5 +++++ source4/script/mks3param.pl | 1 + 3 files changed, 32 insertions(+) diff --git a/source3/param/loadparm_ctx.c b/source3/param/loadparm_ctx.c index 3bcf80954a..cc2468651a 100644 --- a/source3/param/loadparm_ctx.c +++ b/source3/param/loadparm_ctx.c @@ -1,12 +1,38 @@ +/* + Unix SMB/CIFS implementation. + Parameter loading functions + Copyright (C) Andrew Bartlett 2011 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + #include "includes.h" #include "../source4/param/s3_param.h" +static const char *get_parametric(const char *type, const char *option) +{ + return lp_parm_const_string(-1, type, option, NULL); +} + /* These are in the order that they appear in the s4 loadparm file. * All of the s4 loadparm functions should be here eventually, once * they are implemented in the s3 loadparm, have the same format (enum * values in particular) and defaults. */ static const struct loadparm_s3_context s3_fns = { + .get_parametric = get_parametric, + .server_role = lp_server_role, .winbind_separator = lp_winbind_separator, diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 2e60ef93b2..fba09fa2c4 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -815,6 +815,11 @@ const char *lpcfg_get_parametric(struct loadparm_context *lp_ctx, if (lp_ctx == NULL) return NULL; + if (lp_ctx->s3_fns) { + SMB_ASSERT(service == NULL); + return lp_ctx->s3_fns->get_parametric(type, option); + } + data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt); vfskey_tmp = talloc_asprintf(NULL, "%s:%s", type, option); diff --git a/source4/script/mks3param.pl b/source4/script/mks3param.pl index db494e7eb4..76322b1076 100644 --- a/source4/script/mks3param.pl +++ b/source4/script/mks3param.pl @@ -84,6 +84,7 @@ sub print_header($$) $file->("/* This file was automatically generated by mks3param.pl. DO NOT EDIT */\n\n"); $file->("struct loadparm_s3_context\n"); $file->("{\n"); + $file->("\tconst char * (*get_parametric)(const char *type, const char *option);"); } sub print_footer($$) -- cgit