]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/inetd/inetd.h
This commit was generated by cvs2svn to compensate for changes in r75264,
[FreeBSD/FreeBSD.git] / usr.sbin / inetd / inetd.h
1 /*
2  * Copyright (c) 1983, 1991, 1993, 1994
3  *      The Regents of the University of California.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *      This product includes software developed by the University of
16  *      California, Berkeley and its contributors.
17  * 4. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * $FreeBSD$
34  */
35
36 #include <sys/time.h>
37 #include <sys/socket.h>
38
39 #include <netinet/in.h>
40
41 #include <stdio.h>
42
43 #define BUFSIZE 8192
44 #define LINESIZ 72
45
46 #define NORM_TYPE       0
47 #define MUX_TYPE        1
48 #define MUXPLUS_TYPE    2
49 #define TTCP_TYPE       3
50 #define FAITH_TYPE      4
51 #define ISMUX(sep)      (((sep)->se_type == MUX_TYPE) || \
52                          ((sep)->se_type == MUXPLUS_TYPE))
53 #define ISMUXPLUS(sep)  ((sep)->se_type == MUXPLUS_TYPE)
54 #define ISTTCP(sep)     ((sep)->se_type == TTCP_TYPE)
55
56 struct  servtab {
57         char    *se_service;            /* name of service */
58         int     se_socktype;            /* type of socket to use */
59         int     se_family;              /* address family */
60         char    *se_proto;              /* protocol used */
61         int     se_maxchild;            /* max number of children */
62         int     se_maxcpm;              /* max connects per IP per minute */
63         int     se_numchild;            /* current number of children */
64         pid_t   *se_pids;               /* array of child pids */
65         char    *se_user;               /* user name to run as */
66         char    *se_group;              /* group name to run as */
67 #ifdef  LOGIN_CAP
68         char    *se_class;              /* login class name to run with */
69 #endif
70         struct  biltin *se_bi;          /* if built-in, description */
71         char    *se_server;             /* server program */
72         char    *se_server_name;        /* server program without path */
73 #define MAXARGV 20
74         char    *se_argv[MAXARGV+1];    /* program arguments */
75 #ifdef IPSEC
76         char    *se_policy;             /* IPsec policy string */
77 #endif
78         int     se_fd;                  /* open descriptor */
79         union {                         /* bound address */
80                 struct  sockaddr se_un_ctrladdr;
81                 struct  sockaddr_in se_un_ctrladdr4;
82                 struct  sockaddr_in6 se_un_ctrladdr6;
83         } se_un;
84 #define se_ctrladdr     se_un.se_un_ctrladdr
85 #define se_ctrladdr4    se_un.se_un_ctrladdr4
86 #define se_ctrladdr6    se_un.se_un_ctrladdr6
87         socklen_t       se_ctrladdr_size;
88         u_char  se_type;                /* type: normal, mux, or mux+ */
89         u_char  se_checked;             /* looked at during merge */
90         u_char  se_accept;              /* i.e., wait/nowait mode */
91         u_char  se_rpc;                 /* ==1 if RPC service */
92         int     se_rpc_prog;            /* RPC program number */
93         u_int   se_rpc_lowvers;         /* RPC low version */
94         u_int   se_rpc_highvers;        /* RPC high version */
95         int     se_count;               /* number started since se_time */
96         struct  timeval se_time;        /* start of se_count */
97         struct  servtab *se_next;
98         struct se_flags {
99                 u_int se_nomapped : 1;
100                 u_int se_ctladdrinitok : 1;
101                 u_int se_reset : 1;
102         } se_flags;
103 };
104
105 #define se_nomapped             se_flags.se_nomapped
106 #define se_ctladdrinitok        se_flags.se_ctladdrinitok
107 #define se_reset                se_flags.se_reset
108
109 void            chargen_dg __P((int, struct servtab *));
110 void            chargen_stream __P((int, struct servtab *));
111 void            close_sep __P((struct servtab *));
112 void            flag_signal __P((int));
113 void            flag_config __P((int));
114 void            config __P((void));
115 void            daytime_dg __P((int, struct servtab *));
116 void            daytime_stream __P((int, struct servtab *));
117 void            discard_dg __P((int, struct servtab *));
118 void            discard_stream __P((int, struct servtab *));
119 void            echo_dg __P((int, struct servtab *));
120 void            echo_stream __P((int, struct servtab *));
121 void            endconfig __P((void));
122 struct servtab *enter __P((struct servtab *));
123 void            freeconfig __P((struct servtab *));
124 struct servtab *getconfigent __P((void));
125 void            iderror __P((int, int, int, int));
126 void            ident_stream __P((int, struct servtab *));
127 void            machtime_dg __P((int, struct servtab *));
128 void            machtime_stream __P((int, struct servtab *));
129 int             matchservent __P((char *, char *, char *));
130 char           *newstr __P((char *));
131 char           *nextline __P((FILE *));
132 void            print_service __P((char *, struct servtab *));
133 void            addchild __P((struct servtab *, int));
134 void            flag_reapchild __P((int));
135 void            reapchild __P((void));
136 void            enable __P((struct servtab *));
137 void            disable __P((struct servtab *));
138 void            flag_retry __P((int));
139 void            retry __P((void));
140 int             setconfig __P((void));
141 void            setup __P((struct servtab *));
142 #ifdef IPSEC
143 void            ipsecsetup __P((struct servtab *));
144 #endif
145 char           *sskip __P((char **));
146 char           *skip __P((char **));
147 struct servtab *tcpmux __P((int));
148 int             cpmip __P((struct servtab *, int));
149 void            inetd_setproctitle __P((char *, int));
150 int             check_loop __P((struct sockaddr *, struct servtab *sep));
151
152 void            unregisterrpc __P((register struct servtab *sep));
153
154 struct biltin {
155         char    *bi_service;            /* internally provided service name */
156         int     bi_socktype;            /* type of socket supported */
157         short   bi_fork;                /* 1 if should fork before call */
158         int     bi_maxchild;            /* max number of children, -1=default */
159         void    (*bi_fn)();             /* function which performs it */
160 };