/* * Copyright (c) 2004, 2005 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: sockcnfdef.h,v 1.10 2007/05/01 04:18:32 ca Exp $ */ #ifndef SM_SOCKCNFDEF_H #define SM_SOCKCNFDEF_H 1 #include "sm/generic.h" #include "sm/net.h" #include "sm/sm-conf.h" #if SM_SOCKCNFDEF #define EXTERN #else #define EXTERN extern #endif EXTERN sm_conf_definition_T const sock_types[] #if SM_SOCKCNFDEF = { { SM_CONF_DEF_MAGIC, "unix", sm_conf_type_choice_value, SOCK_TYPE_UNIX , 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "local", sm_conf_type_choice_value, SOCK_TYPE_UNIX , 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "inet", sm_conf_type_choice_value, SOCK_TYPE_INET , 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "inet6", sm_conf_type_choice_value, SOCK_TYPE_INET6 , 0, 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_SOCKCNFDEF */ ; EXTERN sm_conf_definition_T unix_sock_spec_defs[] #if SM_SOCKCNFDEF = { { SM_CONF_DEF_MAGIC, "type", sm_conf_type_choice, offsetof(sockspec_T, sckspc_type), sizeof(sock_type_T), NULL, SM_CONF_FLAG_STRICTLY_REQUIRED, sock_types, NULL, NULL, "socket type" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "path", sm_conf_type_string, offsetof(sockspec_T, sock_unix.unixsckspc_path), 0, NULL, SM_CONF_FLAG_KEEP_DEFAULT, NULL, NULL, NULL, "pathname of Unix domain socket" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "umask", sm_conf_type_u32, offsetof(sockspec_T, sock_unix.unixsckspc_umask), sizeof(mode_t), "007", 0, NULL, NULL, NULL, "umask to set before bind(2) and to set socket permissions" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "user", sm_conf_type_string, offsetof(sockspec_T, sock_unix.unixsckspc_user), 0, "", 0, NULL, NULL, NULL, "owner of socket" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "group", sm_conf_type_string, offsetof(sockspec_T, sock_unix.unixsckspc_group), 0, "", 0, NULL, NULL, NULL, "group of socket" 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_SOCKCNFDEF */ ; EXTERN sm_conf_definition_T inet_sock_spec_defs[] #if SM_SOCKCNFDEF = { { SM_CONF_DEF_MAGIC, "type", sm_conf_type_choice, offsetof(sockspec_T, sckspc_type), sizeof(sock_type_T), NULL, SM_CONF_FLAG_STRICTLY_REQUIRED, sock_types, NULL, NULL, "socket type" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "port", sm_conf_type_u32, offsetof(sockspec_T, sock_inet.inetsckspc_port), sizeof(int), NULL, SM_CONF_FLAG_KEEP_DEFAULT|SM_CONF_FLAG_STRICTLY_REQUIRED, NULL, NULL, NULL, "port to listen on" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "address", sm_conf_type_ipv4, offsetof(sockspec_T, sock_inet.inetsckspc_addr), sizeof(ipv4_T), "0.0.0.0", SM_CONF_FLAG_KEEP_DEFAULT, NULL, NULL, NULL, "bind to this IPv4 address" 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_SOCKCNFDEF */ ; EXTERN sm_conf_definition_T sock_spec_definitions[] #if SM_SOCKCNFDEF = { { SM_CONF_DEF_MAGIC, "", sm_conf_type_union_type, offsetof(sockspec_T, sckspc_type), sizeof(sock_type_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice, SOCK_TYPE_UNIX, sizeof(sockspec_T), "unix", SM_CONF_FLAG_KEEP_DEFAULT, unix_sock_spec_defs, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "type", sm_conf_type_union_choice, SOCK_TYPE_INET, sizeof(sockspec_T), "inet", SM_CONF_FLAG_KEEP_DEFAULT, inet_sock_spec_defs, 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_SOCKCNFDEF */ ; #undef EXTERN #endif /* SM_SOCKCNFDEF_H */