ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/include/parse.h
Revision: 5880
Committed: Sun May 3 16:01:42 2015 UTC (8 years, 11 months ago) by michael
Content type: text/x-chdr
File size: 3308 byte(s)
Log Message:
- Use C99-style initializers in all struct Message items
- Removed MFLG_SLOW
- Removed DUMMY_HANDLER

File Contents

# Content
1 /*
2 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3 *
4 * Copyright (c) 1997-2015 ircd-hybrid development team
5 *
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19 * USA
20 */
21
22 /*! \file parse.h
23 * \brief A header for the message parser.
24 * \version $Id$
25 */
26
27 #ifndef INCLUDED_parse_h
28 #define INCLUDED_parse_h
29
30 struct Client;
31
32
33 /*
34 * m_functions execute protocol messages on this server:
35 * int m_func(struct Client *source_p, int parc, char *parv[]);
36 *
37 * 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 *
42 * parc number of variable parameter strings (if zero,
43 * parv is allowed to be NULL)
44 *
45 * parv a NULL terminated list of parameter pointers,
46 *
47 * parv[0] command
48 * parv[1]...parv[parc - 1] pointers to additional parameters
49 * parv[parc] == NULL, *always*
50 *
51 * note: it is guaranteed that parv[0]..parv[parc - 1] are all
52 * non-NULL pointers.
53 */
54
55 /*
56 * MessageHandler
57 */
58 typedef enum HandlerType
59 {
60 UNREGISTERED_HANDLER,
61 CLIENT_HANDLER,
62 SERVER_HANDLER,
63 ENCAP_HANDLER,
64 OPER_HANDLER,
65 LAST_HANDLER_TYPE
66 } HandlerType;
67
68 typedef int (*MessageHandler)(struct Client *, int, char *[]);
69
70 /*
71 * Message table structure
72 */
73 struct Message
74 {
75 const char *cmd;
76 void *extra;
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 * or an error will be sent to the user
81 * before the m_func is even called
82 */
83 unsigned int args_max; /* maximum permitted parameters */
84 unsigned int flags;
85 uint64_t bytes; /* bytes received for this message */
86
87 /* handlers:
88 * UNREGISTERED, CLIENT, SERVER, ENCAP, OPER, LAST
89 */
90 MessageHandler handlers[LAST_HANDLER_TYPE];
91 };
92
93 /*
94 * Constants
95 */
96 #define MFLG_EXTRA 0x00000001U
97 #define MAXPARA 15
98
99 extern void parse(struct Client *, char *, char *);
100 extern void mod_add_cmd(struct Message *);
101 extern void mod_del_cmd(struct Message *);
102 extern struct Message *find_command(const char *);
103 extern void report_messages(struct Client *);
104
105 /* generic handlers */
106 extern int m_ignore(struct Client *, int, char *[]);
107 extern int m_not_oper(struct Client *, int, char *[]);
108 extern int m_registered(struct Client *, int, char *[]);
109 extern int m_unregistered(struct Client *, int, char *[]);
110 #endif /* INCLUDED_parse_h */

Properties

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