ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/include/parse.h
Revision: 3163
Committed: Sat Mar 15 19:57:13 2014 UTC (11 years, 5 months ago) by michael
Content type: text/x-chdr
File size: 3669 byte(s)
Log Message:
- parse.h: removed redundant comment

File Contents

# User Rev Content
1 adx 30 /*
2 michael 2865 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3 adx 30 *
4 michael 2865 * Copyright (c) 1997-2014 ircd-hybrid development team
5 adx 30 *
6     * This program is free software; you can redistribute it and/or modify
7     * it under the terms of the GNU General Public License as published by
8     * the Free Software Foundation; either version 2 of the License, or
9     * (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19     * USA
20     */
21    
22 michael 2865 /*! \file parse.h
23     * \brief A header for the message parser.
24     * \version $Id$
25     */
26    
27 adx 30 #ifndef INCLUDED_parse_h
28     #define INCLUDED_parse_h
29    
30     struct Client;
31    
32 michael 1243
33     /*
34     * m_functions execute protocol messages on this server:
35 michael 3159 * int m_func(struct Client *source_p, int parc, char *parv[]);
36 michael 1243 *
37 michael 3159 * source_p is the source of the message, defined by the
38     * prefix part of the message if present. If not
39     * then it is the client of the physical connection.
40     * Note that prefixes are only taken from servers.
41 michael 1243 *
42 michael 3159 * parc number of variable parameter strings (if zero,
43     * parv is allowed to be NULL)
44 michael 1243 *
45 michael 3159 * parv a NULL terminated list of parameter pointers,
46 michael 1243 *
47 michael 3159 * parv[0] command
48     * parv[1]...parv[parc - 1] pointers to additional parameters
49     * parv[parc] == NULL, *always*
50 michael 1243 *
51 michael 3159 * note: it is guaranteed that parv[0]..parv[parc - 1] are all
52     * non-NULL pointers.
53 michael 1243 */
54    
55     /*
56     * MessageHandler
57     */
58 michael 3159 typedef enum HandlerType
59     {
60 michael 1243 UNREGISTERED_HANDLER,
61     CLIENT_HANDLER,
62     SERVER_HANDLER,
63     ENCAP_HANDLER,
64     OPER_HANDLER,
65     DUMMY_HANDLER,
66     LAST_HANDLER_TYPE
67     } HandlerType;
68    
69 michael 3156 typedef int (*MessageHandler)(struct Client *, int, char *[]);
70 michael 1243
71 michael 2865 /*
72     * Message table structure
73 michael 1243 */
74     struct Message
75     {
76     const char *cmd;
77     unsigned int count; /* number of times command used */
78     unsigned int rcount; /* number of times command used by server */
79     unsigned int args_min; /* at least this many args must be passed
80 michael 2865 * or an error will be sent to the user
81     * before the m_func is even called
82 michael 1243 */
83     unsigned int args_max; /* maximum permitted parameters */
84     unsigned int flags; /* bit 0 set means that this command is allowed
85     * to be used only on the average of once per 2
86     * seconds -SRB
87     */
88     uint64_t bytes; /* bytes received for this message */
89    
90     /* handlers:
91     * UNREGISTERED, CLIENT, SERVER, ENCAP, OPER, DUMMY, LAST
92     */
93     MessageHandler handlers[LAST_HANDLER_TYPE];
94     };
95    
96     /*
97     * Constants
98     */
99     #define MFLG_SLOW 0x001 /* Command can be executed roughly
100 michael 2865 * once per 2 seconds.
101 michael 1243 */
102     #define MAXPARA 15
103    
104 adx 30 extern void parse(struct Client *, char *, char *);
105     extern void mod_add_cmd(struct Message *);
106     extern void mod_del_cmd(struct Message *);
107     extern struct Message *find_command(const char *);
108     extern void report_messages(struct Client *);
109    
110 michael 1243 /* generic handlers */
111 michael 3156 extern int m_ignore(struct Client *, int, char *[]);
112     extern int m_not_oper(struct Client *, int, char *[]);
113     extern int m_registered(struct Client *, int, char *[]);
114     extern int m_unregistered(struct Client *, int, char *[]);
115 adx 30 #endif /* INCLUDED_parse_h */

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision