ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/include/parse.h
Revision: 8479
Committed: Tue Apr 3 17:03:47 2018 UTC (8 years, 3 months ago) by michael
Content type: text/x-chdr
File size: 3270 byte(s)
Log Message:
- Documentation changes

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 8279 * Copyright (c) 1997-2018 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 michael 4565 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19 adx 30 * 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     LAST_HANDLER_TYPE
66     } HandlerType;
67    
68 michael 2865 /*
69     * Message table structure
70 michael 1243 */
71     struct Message
72     {
73     const char *cmd;
74 michael 4549 void *extra;
75 michael 1243 unsigned int count; /* number of times command used */
76     unsigned int rcount; /* number of times command used by server */
77     unsigned int args_min; /* at least this many args must be passed
78 michael 2865 * or an error will be sent to the user
79     * before the m_func is even called
80 michael 1243 */
81     unsigned int args_max; /* maximum permitted parameters */
82 michael 5881 unsigned int flags;
83 michael 6782 uintmax_t bytes; /* bytes received for this message */
84 michael 1243
85     /* handlers:
86 michael 5881 * UNREGISTERED, CLIENT, SERVER, ENCAP, OPER, LAST
87 michael 1243 */
88 michael 6845 int (*handlers[LAST_HANDLER_TYPE])(struct Client *, int, char *[]);
89 michael 1243 };
90    
91     /*
92     * Constants
93     */
94 michael 5881 #define MFLG_EXTRA 0x00000001U
95 michael 1243 #define MAXPARA 15
96    
97 adx 30 extern void parse(struct Client *, char *, char *);
98     extern void mod_add_cmd(struct Message *);
99     extern void mod_del_cmd(struct Message *);
100     extern struct Message *find_command(const char *);
101     extern void report_messages(struct Client *);
102    
103 michael 1243 /* generic handlers */
104 michael 3156 extern int m_ignore(struct Client *, int, char *[]);
105     extern int m_not_oper(struct Client *, int, char *[]);
106     extern int m_registered(struct Client *, int, char *[]);
107     extern int m_unregistered(struct Client *, int, char *[]);
108 michael 8479 #endif /* INCLUDED_parse_h */

Properties

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