/*
* Copyright (c) 2004-2006 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
* $Id: mapcnfdef.h,v 1.19 2007/05/01 04:18:32 ca Exp $
*/
#ifndef SM_MAPCNFDEF_H
#define SM_MAPCNFDEF_H 1
#include "sm/generic.h"
#include "sm/map.h"
#include "sm/mapcnf.h"
#include "sm/sm-conf.h"
/*
** Problem: different maps need different parameters for open:
** socketmap: use sockcnfdef?
** sequence map: array of names?
** hash: optional parameters, e.g., cache size?
** should this be a union?
*/
#if SM_MAPCNFDEF
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN
sm_conf_definition_T const
mst_flag_names[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC,
"implicitly_match_detail", sm_conf_type_choice_value,
SM_MAPSPEC_FL_IMPLDET,
0, NULL, 0, NULL, NULL, NULL,
"implicitly match +detail without specifying +* or *"
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
mst_hash_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_hash.mst_hash_type), 0,
"hash",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "file", sm_conf_type_string,
offsetof(mapspec_T, mst_hash.mst_hash_fn), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
mst_bht_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_bht.mst_bht_type), 0,
"bhtable",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "file", sm_conf_type_string,
offsetof(mapspec_T, mst_bht.mst_bht_fn), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
mst_socket_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_socket.mst_socket_type), 0,
"socket",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "mapname", sm_conf_type_string,
offsetof(mapspec_T, mst_socket.mst_socket_mapname), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "path", sm_conf_type_string,
offsetof(mapspec_T, mst_socket.mst_socket_path), 0,
NULL,
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "address", sm_conf_type_ipv4,
offsetof(mapspec_T, mst_socket.mst_socket_ipv4), sizeof(ipv4_T),
NULL,
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "port", sm_conf_type_u32,
offsetof(mapspec_T, mst_socket.mst_socket_port), sizeof(short),
NULL,
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
mst_seq_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_seq.mst_seq_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_seq.mst_seq_type), 0,
"seq",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "maps", sm_conf_type_argv,
offsetof(mapspec_T, mst_seq.mst_seq_maps), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
mst_passwd_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_passwd.mst_passwd_type), 0,
"passwd",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
#if MTA_USE_TINYCDB
EXTERN
sm_conf_definition_T
mst_cdb_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "name", sm_conf_type_section_title,
offsetof(mapspec_T, mst_name), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_string,
offsetof(mapspec_T, mst_cdb.mst_cdb_type), 0,
"cdb",
0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "file", sm_conf_type_string,
offsetof(mapspec_T, mst_cdb.mst_cdb_fn), 0,
NULL, SM_CONF_FLAG_STRICTLY_REQUIRED,
NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
#endif /* MTA_USE_TINYCDB */
EXTERN
sm_conf_definition_T
map_spec_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_type,
offsetof(mapspec_T, mst_kind), sizeof(mapspec_kind_T),
NULL, 0, NULL, NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_HASH, sizeof(mapspec_T), "hash", 0,
mst_hash_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_HASH, sizeof(mapspec_T), "bhtable", 0,
mst_bht_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_SOCKET, sizeof(mapspec_T), "socket", 0,
mst_socket_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_SEQUENCE, sizeof(mapspec_T), "sequence", 0,
mst_seq_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_PASSWD, sizeof(mapspec_T), "passwd", 0,
mst_passwd_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
#if MTA_USE_TINYCDB
{ SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice,
MST_HASH, sizeof(mapspec_T), "cdb", 0,
mst_cdb_defs,
NULL, NULL, NULL
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
#endif /* MTA_USE_TINYCDB */
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
map_definitions[]
#if SM_MAPCNFDEF
=
{
{
SM_CONF_DEF_MAGIC,
"map declaration",
sm_conf_type_union,
offsetof(map_decl_T, mapdecl_maps),
sizeof(mapspec_T),
NULL,
0,
map_spec_defs,
NULL,
NULL,
"maps"
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{
SM_CONF_DEF_MAGIC,
"n",
sm_conf_type_array_n,
offsetof(map_decl_T, mapdecl_n),
sizeof(uint),
NULL,
0,
map_spec_defs,
NULL,
NULL,
"number of maps (implicit)"
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
EXTERN
sm_conf_definition_T
maps_spec_defs[]
#if SM_MAPCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "map", sm_conf_type_array,
0, /* offset */
0, /* size (# of elements) */
NULL, /* default */
SM_CONF_FLAG_MULTIPLE,
map_definitions,
NULL, NULL,
"Map Declarations"
SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)}
}
#endif /* SM_MAPCNFDEF */
;
#undef EXTERN
#endif /* SM_MAPCNFDEF_H */
syntax highlighted by Code2HTML, v. 0.9.1