268
269
return (networks = mystrdup(mynetworks()));
271
/* convert_bool_parameter - get boolean parameter string value */
272
/* pcf_conv_bool_parameter - get boolean parameter string value */
273
static const char *convert_bool_parameter(char *ptr)
274
static const char *pcf_conv_bool_parameter(char *ptr)
275
276
CONFIG_BOOL_TABLE *cbt = (CONFIG_BOOL_TABLE *) ptr;
277
278
return (cbt->defval ? "yes" : "no");
280
/* convert_time_parameter - get relative time parameter string value */
281
/* pcf_conv_time_parameter - get relative time parameter string value */
282
static const char *convert_time_parameter(char *ptr)
283
static const char *pcf_conv_time_parameter(char *ptr)
284
285
CONFIG_TIME_TABLE *ctt = (CONFIG_TIME_TABLE *) ptr;
286
287
return (ctt->defval);
289
/* convert_int_parameter - get integer parameter string value */
290
/* pcf_conv_int_parameter - get integer parameter string value */
291
static const char *convert_int_parameter(char *ptr)
292
static const char *pcf_conv_int_parameter(char *ptr)
293
294
CONFIG_INT_TABLE *cit = (CONFIG_INT_TABLE *) ptr;
295
return (STR(vstring_sprintf(param_string_buf, "%d", cit->defval)));
296
return (STR(vstring_sprintf(pcf_param_string_buf, "%d", cit->defval)));
298
/* convert_str_parameter - get string parameter string value */
299
/* pcf_conv_str_parameter - get string parameter string value */
300
static const char *convert_str_parameter(char *ptr)
301
static const char *pcf_conv_str_parameter(char *ptr)
302
303
CONFIG_STR_TABLE *cst = (CONFIG_STR_TABLE *) ptr;
304
305
return (cst->defval);
307
/* convert_str_fn_parameter - get string-function parameter string value */
308
/* pcf_conv_str_fn_parameter - get string-function parameter string value */
309
static const char *convert_str_fn_parameter(char *ptr)
310
static const char *pcf_conv_str_fn_parameter(char *ptr)
311
312
CONFIG_STR_FN_TABLE *cft = (CONFIG_STR_FN_TABLE *) ptr;
313
314
return (cft->defval());
316
/* convert_raw_parameter - get raw string parameter string value */
317
/* pcf_conv_raw_parameter - get raw string parameter string value */
318
static const char *convert_raw_parameter(char *ptr)
319
static const char *pcf_conv_raw_parameter(char *ptr)
320
321
CONFIG_RAW_TABLE *rst = (CONFIG_RAW_TABLE *) ptr;
322
323
return (rst->defval);
325
/* convert_nint_parameter - get new integer parameter string value */
326
/* pcf_conv_nint_parameter - get new integer parameter string value */
327
static const char *convert_nint_parameter(char *ptr)
328
static const char *pcf_conv_nint_parameter(char *ptr)
329
330
CONFIG_NINT_TABLE *rst = (CONFIG_NINT_TABLE *) ptr;
331
332
return (rst->defval);
334
/* convert_nbool_parameter - get new boolean parameter string value */
335
/* pcf_conv_nbool_parameter - get new boolean parameter string value */
336
static const char *convert_nbool_parameter(char *ptr)
337
static const char *pcf_conv_nbool_parameter(char *ptr)
338
339
CONFIG_NBOOL_TABLE *bst = (CONFIG_NBOOL_TABLE *) ptr;
340
341
return (bst->defval);
343
/* convert_long_parameter - get long parameter string value */
344
/* pcf_conv_long_parameter - get long parameter string value */
345
static const char *convert_long_parameter(char *ptr)
346
static const char *pcf_conv_long_parameter(char *ptr)
347
348
CONFIG_LONG_TABLE *clt = (CONFIG_LONG_TABLE *) ptr;
349
return (STR(vstring_sprintf(param_string_buf, "%ld", clt->defval)));
350
return (STR(vstring_sprintf(pcf_param_string_buf, "%ld", clt->defval)));
352
/* register_builtin_parameters - add built-ins to the global name space */
353
/* pcf_register_builtin_parameters - add built-ins to the global name space */
354
void register_builtin_parameters(const char *procname, pid_t pid)
355
void pcf_register_builtin_parameters(const char *procname, pid_t pid)
356
const char *myname = "register_builtin_parameters";
357
const char *myname = "pcf_register_builtin_parameters";
357
358
const CONFIG_TIME_TABLE *ctt;
358
359
const CONFIG_BOOL_TABLE *cbt;
359
360
const CONFIG_INT_TABLE *cit;
370
if (param_table != 0)
371
if (pcf_param_table != 0)
371
372
msg_panic("%s: global parameter table is already initialized", myname);
374
375
* Initialize the global parameter table.
376
param_table = PC_PARAM_TABLE_CREATE(1000);
377
pcf_param_table = PCF_PARAM_TABLE_CREATE(1000);
379
380
* Add the built-in parameters to the global name space. The class
380
381
* (built-in) is tentative; some parameters are actually service-defined,
381
382
* but they have their own default value.
383
for (ctt = time_table; ctt->name; ctt++)
384
PC_PARAM_TABLE_ENTER(param_table, ctt->name, PC_PARAM_FLAG_BUILTIN,
385
(char *) ctt, convert_time_parameter);
386
for (cbt = bool_table; cbt->name; cbt++)
387
PC_PARAM_TABLE_ENTER(param_table, cbt->name, PC_PARAM_FLAG_BUILTIN,
388
(char *) cbt, convert_bool_parameter);
389
for (cit = int_table; cit->name; cit++)
390
PC_PARAM_TABLE_ENTER(param_table, cit->name, PC_PARAM_FLAG_BUILTIN,
391
(char *) cit, convert_int_parameter);
392
for (cst = str_table; cst->name; cst++)
393
PC_PARAM_TABLE_ENTER(param_table, cst->name, PC_PARAM_FLAG_BUILTIN,
394
(char *) cst, convert_str_parameter);
395
for (cft = str_fn_table; cft->name; cft++)
396
PC_PARAM_TABLE_ENTER(param_table, cft->name, PC_PARAM_FLAG_BUILTIN,
397
(char *) cft, convert_str_fn_parameter);
398
for (rst = raw_table; rst->name; rst++)
399
PC_PARAM_TABLE_ENTER(param_table, rst->name,
400
PC_PARAM_FLAG_BUILTIN | PC_PARAM_FLAG_RAW,
401
(char *) rst, convert_raw_parameter);
402
for (nst = nint_table; nst->name; nst++)
403
PC_PARAM_TABLE_ENTER(param_table, nst->name, PC_PARAM_FLAG_BUILTIN,
404
(char *) nst, convert_nint_parameter);
405
for (bst = nbool_table; bst->name; bst++)
406
PC_PARAM_TABLE_ENTER(param_table, bst->name, PC_PARAM_FLAG_BUILTIN,
407
(char *) bst, convert_nbool_parameter);
408
for (lst = long_table; lst->name; lst++)
409
PC_PARAM_TABLE_ENTER(param_table, lst->name, PC_PARAM_FLAG_BUILTIN,
410
(char *) lst, convert_long_parameter);
384
for (ctt = pcf_time_table; ctt->name; ctt++)
385
PCF_PARAM_TABLE_ENTER(pcf_param_table, ctt->name,
386
PCF_PARAM_FLAG_BUILTIN, (char *) ctt,
387
pcf_conv_time_parameter);
388
for (cbt = pcf_bool_table; cbt->name; cbt++)
389
PCF_PARAM_TABLE_ENTER(pcf_param_table, cbt->name,
390
PCF_PARAM_FLAG_BUILTIN, (char *) cbt,
391
pcf_conv_bool_parameter);
392
for (cit = pcf_int_table; cit->name; cit++)
393
PCF_PARAM_TABLE_ENTER(pcf_param_table, cit->name,
394
PCF_PARAM_FLAG_BUILTIN, (char *) cit,
395
pcf_conv_int_parameter);
396
for (cst = pcf_str_table; cst->name; cst++)
397
PCF_PARAM_TABLE_ENTER(pcf_param_table, cst->name,
398
PCF_PARAM_FLAG_BUILTIN, (char *) cst,
399
pcf_conv_str_parameter);
400
for (cft = pcf_str_fn_table; cft->name; cft++)
401
PCF_PARAM_TABLE_ENTER(pcf_param_table, cft->name,
402
PCF_PARAM_FLAG_BUILTIN, (char *) cft,
403
pcf_conv_str_fn_parameter);
404
for (rst = pcf_raw_table; rst->name; rst++)
405
PCF_PARAM_TABLE_ENTER(pcf_param_table, rst->name,
406
PCF_PARAM_FLAG_BUILTIN | PCF_PARAM_FLAG_RAW,
407
(char *) rst, pcf_conv_raw_parameter);
408
for (nst = pcf_nint_table; nst->name; nst++)
409
PCF_PARAM_TABLE_ENTER(pcf_param_table, nst->name,
410
PCF_PARAM_FLAG_BUILTIN, (char *) nst,
411
pcf_conv_nint_parameter);
412
for (bst = pcf_nbool_table; bst->name; bst++)
413
PCF_PARAM_TABLE_ENTER(pcf_param_table, bst->name,
414
PCF_PARAM_FLAG_BUILTIN, (char *) bst,
415
pcf_conv_nbool_parameter);
416
for (lst = pcf_long_table; lst->name; lst++)
417
PCF_PARAM_TABLE_ENTER(pcf_param_table, lst->name,
418
PCF_PARAM_FLAG_BUILTIN, (char *) lst,
419
pcf_conv_long_parameter);
413
422
* Register legacy parameters (used as a backwards-compatible migration
416
for (cst = legacy_str_table; cst->name; cst++)
417
PC_PARAM_TABLE_ENTER(param_table, cst->name, PC_PARAM_FLAG_LEGACY,
418
(char *) cst, convert_str_parameter);
425
for (cst = pcf_legacy_str_table; cst->name; cst++)
426
PCF_PARAM_TABLE_ENTER(pcf_param_table, cst->name,
427
PCF_PARAM_FLAG_LEGACY, (char *) cst,
428
pcf_conv_str_parameter);
421
431
* Register parameters whose default value is normally initialized by
424
adhoc_procname.defval = mystrdup(procname);
425
PC_PARAM_TABLE_ENTER(param_table, adhoc_procname.name,
426
PC_PARAM_FLAG_BUILTIN | PC_PARAM_FLAG_READONLY,
427
(char *) &adhoc_procname, convert_str_parameter);
428
adhoc_pid.defval = pid;
429
PC_PARAM_TABLE_ENTER(param_table, adhoc_pid.name,
430
PC_PARAM_FLAG_BUILTIN | PC_PARAM_FLAG_READONLY,
431
(char *) &adhoc_pid, convert_int_parameter);
434
pcf_adhoc_procname.defval = mystrdup(procname);
435
PCF_PARAM_TABLE_ENTER(pcf_param_table, pcf_adhoc_procname.name,
436
PCF_PARAM_FLAG_BUILTIN | PCF_PARAM_FLAG_READONLY,
437
(char *) &pcf_adhoc_procname, pcf_conv_str_parameter);
438
pcf_adhoc_pid.defval = pid;
439
PCF_PARAM_TABLE_ENTER(pcf_param_table, pcf_adhoc_pid.name,
440
PCF_PARAM_FLAG_BUILTIN | PCF_PARAM_FLAG_READONLY,
441
(char *) &pcf_adhoc_pid, pcf_conv_int_parameter);