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/branches/8.2.x/include/channel_mode.h (file contents):
Revision 4101 by michael, Sun Jun 29 19:35:16 2014 UTC vs.
Revision 8806 by michael, Sat Jan 19 19:32:10 2019 UTC

# Line 1 | Line 1
1   /*
2   *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (c) 1997-2014 ircd-hybrid development team
4 > *  Copyright (c) 1997-2019 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 15 | Line 15
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
18 > *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19   *  USA
20   */
21  
# Line 27 | Line 27
27   #ifndef INCLUDED_channel_mode_h
28   #define INCLUDED_channel_mode_h
29  
30 < #define MODEBUFLEN    200
30 >
31 > #define CMEMBER_STATUS_FLAGS "@%+"
32 > enum { CMEMBER_STATUS_FLAGS_LEN = sizeof(CMEMBER_STATUS_FLAGS) - 1 };
33 >
34 > enum { MODEBUFLEN = 200 };
35  
36   /* Maximum mode changes allowed per client, per server is different */
37 < #define MAXMODEPARAMS 4
37 > enum { MAXMODEPARAMS = 6 };
38  
39   enum
40   {
41 <  MODE_QUERY =  0,
42 <  MODE_ADD   =  1,
43 <  MODE_DEL   = -1
41 >  MODE_QUERY,
42 >  MODE_DEL,
43 >  MODE_ADD
44   };
45  
46   enum
47   {
48    CHACCESS_NOTONCHAN = -1,
49 <  CHACCESS_PEON      =  0,
50 <  CHACCESS_HALFOP    =  1,
51 <  CHACCESS_CHANOP    =  2,
52 <  CHACCESS_REMOTE    =  3
49 >  CHACCESS_PEON,
50 >  CHACCESS_HALFOP,
51 >  CHACCESS_CHANOP,
52 >  CHACCESS_REMOTE
53   };
54  
55   /* can_send results */
56   enum
57   {
58 <  CAN_SEND_NO    =  0,
59 <  CAN_SEND_NONOP = -1,
60 <  CAN_SEND_OPV   = -2
58 >  CAN_SEND_NO,
59 >  CAN_SEND_NONOP,
60 >  CAN_SEND_OPV
61   };
62  
59
63   /* Channel related flags */
64 < #define CHFL_CHANOP     0x0001U  /* Channel operator   */
65 < #define CHFL_HALFOP     0x0002U  /* Channel half op    */
66 < #define CHFL_VOICE      0x0004U  /* the power to speak */
67 < #define CHFL_BAN        0x0008U  /* ban channel flag */
68 < #define CHFL_EXCEPTION  0x0010U  /* exception to ban channel flag */
69 < #define CHFL_INVEX      0x0020U
64 > enum
65 > {
66 >  CHFL_CHANOP       = 1 << 0,  /* Channel operator   */
67 >  CHFL_HALFOP       = 1 << 1,  /* Channel half op    */
68 >  CHFL_VOICE        = 1 << 2,  /* the power to speak */
69 >  CHFL_BAN          = 1 << 3,  /* ban channel flag */
70 >  CHFL_EXCEPTION    = 1 << 4,  /* exception to ban channel flag */
71 >  CHFL_INVEX        = 1 << 5,
72 >  /* Cache flags for silence on ban */
73 >  CHFL_BAN_CHECKED  = 1 << 6,
74 >  CHFL_BAN_SILENCED = 1 << 7
75 > };
76  
77   /* channel modes ONLY */
78 < #define MODE_PRIVATE    0x0001U  /**< */
79 < #define MODE_SECRET     0x0002U  /**< Channel does not show up on NAMES or LIST */
80 < #define MODE_MODERATED  0x0004U  /**< Users without +v/h/o cannot send text to the channel */
81 < #define MODE_TOPICLIMIT 0x0008U  /**< Only chanops can change the topic */
82 < #define MODE_INVITEONLY 0x0010U  /**< Only invited usersmay join this channel */
83 < #define MODE_NOPRIVMSGS 0x0020U  /**< Users must be in the channel to send text to it */
84 < #define MODE_SSLONLY    0x0040U  /**< Prevents anyone who isn't connected via SSL/TLS from joining the channel */
85 < #define MODE_OPERONLY   0x0080U  /**< Prevents anyone who hasn't obtained IRC operator status from joining the channel */
86 < #define MODE_REGISTERED 0x0100U  /**< Channel has been registered with ChanServ */
87 < #define MODE_REGONLY    0x0200U  /**< Only registered clients may join a channel with that mode set */
88 < #define MODE_NOCTRL     0x0400U  /**< Prevents users from sending messages containing control codes to the channel */
89 < #define MODE_MODREG     0x0800U  /**< Unregistered/unidentified clients cannot send text to the channel */
90 <
91 < /* cache flags for silence on ban */
92 < #define CHFL_BAN_CHECKED  0x0080U
93 < #define CHFL_BAN_SILENCED 0x0100U
78 > enum
79 > {
80 >  MODE_PRIVATE      = 1 <<  0,  /**< */
81 >  MODE_SECRET       = 1 <<  1,  /**< Channel does not show up on NAMES or LIST */
82 >  MODE_MODERATED    = 1 <<  2,  /**< Users without +v/+h/+o cannot send text to the channel */
83 >  MODE_TOPICLIMIT   = 1 <<  3,  /**< Only chanops can change the topic */
84 >  MODE_INVITEONLY   = 1 <<  4,  /**< Only invited users may join this channel */
85 >  MODE_NOPRIVMSGS   = 1 <<  5,  /**< Users must be in the channel to send text to it */
86 >  MODE_SSLONLY      = 1 <<  6,  /**< Prevents anyone who isn't connected via SSL/TLS from joining the channel */
87 >  MODE_OPERONLY     = 1 <<  7,  /**< Prevents anyone who hasn't obtained IRC operator status from joining the channel */
88 >  MODE_REGISTERED   = 1 <<  8,  /**< Channel has been registered with ChanServ */
89 >  MODE_REGONLY      = 1 <<  9,  /**< Only registered clients may join a channel with that mode set */
90 >  MODE_NOCTRL       = 1 << 10,  /**< Prevents users from sending messages containing control codes to the channel */
91 >  MODE_MODREG       = 1 << 11,  /**< Unregistered/unidentified clients cannot send text to the channel */
92 >  MODE_NOCTCP       = 1 << 12,  /**< Clients cannot send CTCP messages to the channel */
93 >  MODE_NONOTICE     = 1 << 13,  /**< Clients cannot send NOTICE to the channel */
94 >  MODE_HIDEBMASKS   = 1 << 14,  /**< Hides +b/+e/+I lists/changes for non-chanops everywhere */
95 >  MODE_EXTLIMIT     = 1 << 15,  /**< Channel can make use of the extended ban list limit */
96 >  MODE_NONICKCHANGE = 1 << 16   /**< User is prevented from changing their nick while in this channel */
97 > };
98 >
99 > #define HasCMode(x, y) ((x)->mode.mode &   (y))
100 > #define AddCMode(x, y) ((x)->mode.mode |=  (y))
101 > #define DelCMode(x, y) ((x)->mode.mode &= ~(y))
102  
103   /* name invisible */
104   #define SecretChannel(x)        (((x)->mode.mode & MODE_SECRET))
# Line 89 | Line 106 | enum
106   /* knock is forbidden, halfops can't kick/deop other halfops. */
107   #define PrivateChannel(x)       (((x)->mode.mode & MODE_PRIVATE))
108  
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
109   struct ChModeChange
110   {
111    char letter;
112    const char *arg;
113    const char *id;
114 <  int dir;
115 <  int mems;
114 >  unsigned int dir;
115 >  unsigned int flags;
116   };
117  
118 < struct mode_letter
118 > struct chan_mode
119   {
120 <  const unsigned int mode;
121 <  const unsigned char letter;
120 >  unsigned char letter;
121 >  unsigned int mode;
122 >  unsigned int flag;
123 >  bool only_opers;
124 >  bool only_servers;
125 >  int required_oplevel;
126 >  void (*func)(struct Client *,
127 >               struct Channel *, int, int *, char **, int *,
128 >               int, int, const char, const struct chan_mode *);
129   };
130  
131 < extern const struct mode_letter chan_modes[];
132 < extern const struct ChannelMode ModeTable[];
131 > extern const struct chan_mode *cmode_map[];
132 > extern const struct chan_mode  cmode_tab[];
133  
134 < extern int add_id(struct Client *, struct Channel *, char *, unsigned int);
135 < extern void set_channel_mode(struct Client *, struct Channel *,
134 > extern void channel_mode_init(void);
135 > extern bool add_id(struct Client *, struct Channel *, char *, dlink_list *);
136 > extern void channel_mode_set(struct Client *, struct Channel *,
137                               struct Membership *, int, char **);
138 < extern void clear_ban_cache(struct Channel *);
122 < extern void clear_ban_cache_client(struct Client *);
138 > extern void clear_ban_cache_list(dlink_list *);
139   #endif /* INCLUDED_channel_mode_h */

Comparing ircd-hybrid/branches/8.2.x/include/channel_mode.h (property svn:keywords):
Revision 4101 by michael, Sun Jun 29 19:35:16 2014 UTC vs.
Revision 8806 by michael, Sat Jan 19 19:32:10 2019 UTC

# Line 1 | Line 1
1 < Id Revision
1 > Id

Diff Legend

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