ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/include/channel_mode.h
(Generate patch)

Comparing:
ircd-hybrid-8/include/channel_mode.h (file contents), Revision 1156 by michael, Tue Aug 9 20:29:20 2011 UTC vs.
ircd-hybrid/branches/8.2.x/include/channel_mode.h (file contents), Revision 4101 by michael, Sun Jun 29 19:35:16 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3 < *  channel_mode.h: The ircd channel mode header.
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 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
# Line 18 | Line 17
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
21 *
22 *  $Id$
20   */
21  
22 + /*! \file channel_mode.h
23 + * \brief Includes channel mode related definitions and structures.
24 + * \version $Id$
25 + */
26  
27   #ifndef INCLUDED_channel_mode_h
28   #define INCLUDED_channel_mode_h
29  
29 #include "ircd_defs.h"        /* buffer sizes */
30
30   #define MODEBUFLEN    200
31  
32   /* Maximum mode changes allowed per client, per server is different */
33   #define MAXMODEPARAMS 4
34  
35 + enum
36 + {
37 +  MODE_QUERY =  0,
38 +  MODE_ADD   =  1,
39 +  MODE_DEL   = -1
40 + };
41 +
42 + enum
43 + {
44 +  CHACCESS_NOTONCHAN = -1,
45 +  CHACCESS_PEON      =  0,
46 +  CHACCESS_HALFOP    =  1,
47 +  CHACCESS_CHANOP    =  2,
48 +  CHACCESS_REMOTE    =  3
49 + };
50 +
51   /* can_send results */
52 < #define CAN_SEND_NO     0
53 < #define CAN_SEND_NONOP  1
54 < #define CAN_SEND_OPV    2
52 > enum
53 > {
54 >  CAN_SEND_NO    =  0,
55 >  CAN_SEND_NONOP = -1,
56 >  CAN_SEND_OPV   = -2
57 > };
58  
59  
60   /* Channel related flags */
61 < #define CHFL_CHANOP     0x0001 /* Channel operator   */
62 < #define CHFL_HALFOP     0x0002 /* Channel half op    */
63 < #define CHFL_VOICE      0x0004 /* the power to speak */
64 < #define CHFL_DEOPPED    0x0008 /* deopped by us, modes need to be bounced */
65 < #define CHFL_BAN        0x0010 /* ban channel flag */
66 < #define CHFL_EXCEPTION  0x0020 /* exception to ban channel flag */
49 < #define CHFL_INVEX      0x0040
61 > #define CHFL_CHANOP     0x0001U  /* Channel operator   */
62 > #define CHFL_HALFOP     0x0002U  /* Channel half op    */
63 > #define CHFL_VOICE      0x0004U  /* the power to speak */
64 > #define CHFL_BAN        0x0008U  /* ban channel flag */
65 > #define CHFL_EXCEPTION  0x0010U  /* exception to ban channel flag */
66 > #define CHFL_INVEX      0x0020U
67  
68   /* channel modes ONLY */
69 < #define MODE_PRIVATE    0x0001
70 < #define MODE_SECRET     0x0002
71 < #define MODE_MODERATED  0x0004
72 < #define MODE_TOPICLIMIT 0x0008
73 < #define MODE_INVITEONLY 0x0010
74 < #define MODE_NOPRIVMSGS 0x0020
75 < #define MODE_SSLONLY    0x0040
76 < #define MODE_OPERONLY   0x0080
69 > #define MODE_PRIVATE    0x0001U  /**< */
70 > #define MODE_SECRET     0x0002U  /**< Channel does not show up on NAMES or LIST */
71 > #define MODE_MODERATED  0x0004U  /**< Users without +v/h/o cannot send text to the channel */
72 > #define MODE_TOPICLIMIT 0x0008U  /**< Only chanops can change the topic */
73 > #define MODE_INVITEONLY 0x0010U  /**< Only invited usersmay join this channel */
74 > #define MODE_NOPRIVMSGS 0x0020U  /**< Users must be in the channel to send text to it */
75 > #define MODE_SSLONLY    0x0040U  /**< Prevents anyone who isn't connected via SSL/TLS from joining the channel */
76 > #define MODE_OPERONLY   0x0080U  /**< Prevents anyone who hasn't obtained IRC operator status from joining the channel */
77 > #define MODE_REGISTERED 0x0100U  /**< Channel has been registered with ChanServ */
78 > #define MODE_REGONLY    0x0200U  /**< Only registered clients may join a channel with that mode set */
79 > #define MODE_NOCTRL     0x0400U  /**< Prevents users from sending messages containing control codes to the channel */
80 > #define MODE_MODREG     0x0800U  /**< Unregistered/unidentified clients cannot send text to the channel */
81  
82   /* cache flags for silence on ban */
83 < #define CHFL_BAN_CHECKED  0x0080
84 < #define CHFL_BAN_SILENCED 0x0100
64 <
65 < #define MODE_QUERY  0
66 < #define MODE_ADD    1
67 < #define MODE_DEL   -1
68 <
69 < #define CHACCESS_NOTONCHAN  -1
70 < #define CHACCESS_PEON       0
71 < #define CHACCESS_HALFOP     1
72 < #define CHACCESS_CHANOP     2
83 > #define CHFL_BAN_CHECKED  0x0080U
84 > #define CHFL_BAN_SILENCED 0x0100U
85  
86   /* name invisible */
87   #define SecretChannel(x)        (((x)->mode.mode & MODE_SECRET))
88 < #define PubChannel(x)           (!SecretChannel(x))
89 < /* knock is forbidden, halfops can't kick/deop other halfops.
78 < * +pi means paranoid and will generate notices on each invite */
88 > #define PubChannel(x)           (((x)->mode.mode & (MODE_PRIVATE | MODE_SECRET)) == 0)
89 > /* knock is forbidden, halfops can't kick/deop other halfops. */
90   #define PrivateChannel(x)       (((x)->mode.mode & MODE_PRIVATE))
91  
92 + struct ChannelMode
93 + {
94 +  void (*func)(struct Client *,
95 +               struct Channel *, int, int *, char **,
96 +               int *, int, int, char, unsigned int);
97 +  unsigned int d;
98 + };
99 +
100   struct ChModeChange
101   {
102    char letter;
103    const char *arg;
104    const char *id;
105    int dir;
87  unsigned int caps;
88  unsigned int nocaps;
106    int mems;
90  struct Client *client;
107   };
108  
109 < struct ChCapCombo
109 > struct mode_letter
110   {
111 <  int count;
112 <  unsigned int cap_yes;
97 <  unsigned int cap_no;
111 >  const unsigned int mode;
112 >  const unsigned char letter;
113   };
114  
115 < extern int add_id(struct Client *, struct Channel *, char *, int);
116 < extern void set_channel_mode(struct Client *, struct Client *, struct Channel *,
117 <                             struct Membership *, int, char **, char *);
115 > extern const struct mode_letter chan_modes[];
116 > extern const struct ChannelMode ModeTable[];
117 >
118 > extern int add_id(struct Client *, struct Channel *, char *, unsigned int);
119 > extern void set_channel_mode(struct Client *, struct Channel *,
120 >                             struct Membership *, int, char **);
121   extern void clear_ban_cache(struct Channel *);
122   extern void clear_ban_cache_client(struct Client *);
105 extern void init_chcap_usage_counts(void);
106 extern void set_chcap_usage_counts(struct Client *);
107 extern void unset_chcap_usage_counts(struct Client *);
123   #endif /* INCLUDED_channel_mode_h */

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)