xref: /freebsd/usr.sbin/inetd/inetd.h (revision 5ff3afce6ff19ff84ab6ad6f7d42cf4042a20517)
15ff3afceSSheldon Hearn /*
25ff3afceSSheldon Hearn  * Copyright (c) 1983, 1991, 1993, 1994
35ff3afceSSheldon Hearn  *	The Regents of the University of California.  All rights reserved.
45ff3afceSSheldon Hearn  *
55ff3afceSSheldon Hearn  * Redistribution and use in source and binary forms, with or without
65ff3afceSSheldon Hearn  * modification, are permitted provided that the following conditions
75ff3afceSSheldon Hearn  * are met:
85ff3afceSSheldon Hearn  * 1. Redistributions of source code must retain the above copyright
95ff3afceSSheldon Hearn  *    notice, this list of conditions and the following disclaimer.
105ff3afceSSheldon Hearn  * 2. Redistributions in binary form must reproduce the above copyright
115ff3afceSSheldon Hearn  *    notice, this list of conditions and the following disclaimer in the
125ff3afceSSheldon Hearn  *    documentation and/or other materials provided with the distribution.
135ff3afceSSheldon Hearn  * 3. All advertising materials mentioning features or use of this software
145ff3afceSSheldon Hearn  *    must display the following acknowledgement:
155ff3afceSSheldon Hearn  *	This product includes software developed by the University of
165ff3afceSSheldon Hearn  *	California, Berkeley and its contributors.
175ff3afceSSheldon Hearn  * 4. Neither the name of the University nor the names of its contributors
185ff3afceSSheldon Hearn  *    may be used to endorse or promote products derived from this software
195ff3afceSSheldon Hearn  *    without specific prior written permission.
205ff3afceSSheldon Hearn  *
215ff3afceSSheldon Hearn  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
225ff3afceSSheldon Hearn  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
235ff3afceSSheldon Hearn  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
245ff3afceSSheldon Hearn  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
255ff3afceSSheldon Hearn  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
265ff3afceSSheldon Hearn  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
275ff3afceSSheldon Hearn  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
285ff3afceSSheldon Hearn  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
295ff3afceSSheldon Hearn  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
305ff3afceSSheldon Hearn  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
315ff3afceSSheldon Hearn  * SUCH DAMAGE.
325ff3afceSSheldon Hearn  *
335ff3afceSSheldon Hearn  * $Id$
345ff3afceSSheldon Hearn  */
355ff3afceSSheldon Hearn 
365ff3afceSSheldon Hearn #include <sys/time.h>
375ff3afceSSheldon Hearn #include <sys/socket.h>
385ff3afceSSheldon Hearn 
395ff3afceSSheldon Hearn #include <netinet/in.h>
405ff3afceSSheldon Hearn 
415ff3afceSSheldon Hearn #include <stdio.h>
425ff3afceSSheldon Hearn 
435ff3afceSSheldon Hearn #define BUFSIZE 8192
445ff3afceSSheldon Hearn #define LINESIZ 72
455ff3afceSSheldon Hearn 
465ff3afceSSheldon Hearn #define NORM_TYPE	0
475ff3afceSSheldon Hearn #define MUX_TYPE	1
485ff3afceSSheldon Hearn #define MUXPLUS_TYPE	2
495ff3afceSSheldon Hearn #define TTCP_TYPE	3
505ff3afceSSheldon Hearn #define ISMUX(sep)	(((sep)->se_type == MUX_TYPE) || \
515ff3afceSSheldon Hearn 			 ((sep)->se_type == MUXPLUS_TYPE))
525ff3afceSSheldon Hearn #define ISMUXPLUS(sep)	((sep)->se_type == MUXPLUS_TYPE)
535ff3afceSSheldon Hearn #define ISTTCP(sep)	((sep)->se_type == TTCP_TYPE)
545ff3afceSSheldon Hearn 
555ff3afceSSheldon Hearn struct	servtab {
565ff3afceSSheldon Hearn 	char	*se_service;		/* name of service */
575ff3afceSSheldon Hearn 	int	se_socktype;		/* type of socket to use */
585ff3afceSSheldon Hearn 	char	*se_proto;		/* protocol used */
595ff3afceSSheldon Hearn 	int	se_maxchild;		/* max number of children */
605ff3afceSSheldon Hearn 	int	se_maxcpm;		/* max connects per IP per minute */
615ff3afceSSheldon Hearn 	int	se_numchild;		/* current number of children */
625ff3afceSSheldon Hearn 	pid_t	*se_pids;		/* array of child pids */
635ff3afceSSheldon Hearn 	char	*se_user;		/* user name to run as */
645ff3afceSSheldon Hearn 	char    *se_group;              /* group name to run as */
655ff3afceSSheldon Hearn #ifdef  LOGIN_CAP
665ff3afceSSheldon Hearn 	char    *se_class;              /* login class name to run with */
675ff3afceSSheldon Hearn #endif
685ff3afceSSheldon Hearn 	struct	biltin *se_bi;		/* if built-in, description */
695ff3afceSSheldon Hearn 	char	*se_server;		/* server program */
705ff3afceSSheldon Hearn 	char	*se_server_name;	/* server program without path */
715ff3afceSSheldon Hearn #define	MAXARGV 20
725ff3afceSSheldon Hearn 	char	*se_argv[MAXARGV+1];	/* program arguments */
735ff3afceSSheldon Hearn 	int	se_fd;			/* open descriptor */
745ff3afceSSheldon Hearn 	struct	sockaddr_in se_ctrladdr;/* bound address */
755ff3afceSSheldon Hearn 	u_char	se_type;		/* type: normal, mux, or mux+ */
765ff3afceSSheldon Hearn 	u_char	se_checked;		/* looked at during merge */
775ff3afceSSheldon Hearn 	u_char	se_accept;		/* i.e., wait/nowait mode */
785ff3afceSSheldon Hearn 	u_char	se_rpc;			/* ==1 if RPC service */
795ff3afceSSheldon Hearn 	int	se_rpc_prog;		/* RPC program number */
805ff3afceSSheldon Hearn 	u_int	se_rpc_lowvers;		/* RPC low version */
815ff3afceSSheldon Hearn 	u_int	se_rpc_highvers;	/* RPC high version */
825ff3afceSSheldon Hearn 	int	se_count;		/* number started since se_time */
835ff3afceSSheldon Hearn 	struct	timeval se_time;	/* start of se_count */
845ff3afceSSheldon Hearn 	struct	servtab *se_next;
855ff3afceSSheldon Hearn };
865ff3afceSSheldon Hearn 
875ff3afceSSheldon Hearn void		chargen_dg __P((int, struct servtab *));
885ff3afceSSheldon Hearn void		chargen_stream __P((int, struct servtab *));
895ff3afceSSheldon Hearn void		close_sep __P((struct servtab *));
905ff3afceSSheldon Hearn void		flag_signal __P((char));
915ff3afceSSheldon Hearn void		flag_config __P((int));
925ff3afceSSheldon Hearn void		config __P((void));
935ff3afceSSheldon Hearn void		daytime_dg __P((int, struct servtab *));
945ff3afceSSheldon Hearn void		daytime_stream __P((int, struct servtab *));
955ff3afceSSheldon Hearn void		discard_dg __P((int, struct servtab *));
965ff3afceSSheldon Hearn void		discard_stream __P((int, struct servtab *));
975ff3afceSSheldon Hearn void		echo_dg __P((int, struct servtab *));
985ff3afceSSheldon Hearn void		echo_stream __P((int, struct servtab *));
995ff3afceSSheldon Hearn void		endconfig __P((void));
1005ff3afceSSheldon Hearn struct servtab *enter __P((struct servtab *));
1015ff3afceSSheldon Hearn void		freeconfig __P((struct servtab *));
1025ff3afceSSheldon Hearn struct servtab *getconfigent __P((void));
1035ff3afceSSheldon Hearn void		iderror __P((int, int, FILE *, int));
1045ff3afceSSheldon Hearn void		ident_stream __P((int, struct servtab *));
1055ff3afceSSheldon Hearn void		machtime_dg __P((int, struct servtab *));
1065ff3afceSSheldon Hearn void		machtime_stream __P((int, struct servtab *));
1075ff3afceSSheldon Hearn int		matchservent __P((char *, char *, char *));
1085ff3afceSSheldon Hearn char	       *newstr __P((char *));
1095ff3afceSSheldon Hearn char	       *nextline __P((FILE *));
1105ff3afceSSheldon Hearn void		print_service __P((char *, struct servtab *));
1115ff3afceSSheldon Hearn void		addchild __P((struct servtab *, int));
1125ff3afceSSheldon Hearn void		flag_reapchild __P((int));
1135ff3afceSSheldon Hearn void		reapchild __P((void));
1145ff3afceSSheldon Hearn void		enable __P((struct servtab *));
1155ff3afceSSheldon Hearn void		disable __P((struct servtab *));
1165ff3afceSSheldon Hearn void		flag_retry __P((int));
1175ff3afceSSheldon Hearn void		retry __P((void));
1185ff3afceSSheldon Hearn int		setconfig __P((void));
1195ff3afceSSheldon Hearn void		setup __P((struct servtab *));
1205ff3afceSSheldon Hearn char	       *sskip __P((char **));
1215ff3afceSSheldon Hearn char	       *skip __P((char **));
1225ff3afceSSheldon Hearn struct servtab *tcpmux __P((int));
1235ff3afceSSheldon Hearn int		cpmip __P((struct servtab *, int));
1245ff3afceSSheldon Hearn void		inetd_setproctitle __P((char *, int));
1255ff3afceSSheldon Hearn 
1265ff3afceSSheldon Hearn void		unregisterrpc __P((register struct servtab *sep));
1275ff3afceSSheldon Hearn 
1285ff3afceSSheldon Hearn struct biltin {
1295ff3afceSSheldon Hearn 	char	*bi_service;		/* internally provided service name */
1305ff3afceSSheldon Hearn 	int	bi_socktype;		/* type of socket supported */
1315ff3afceSSheldon Hearn 	short	bi_fork;		/* 1 if should fork before call */
1325ff3afceSSheldon Hearn 	int	bi_maxchild;		/* max number of children, -1=default */
1335ff3afceSSheldon Hearn 	void	(*bi_fn)();		/* function which performs it */
1345ff3afceSSheldon Hearn };
135