| 208 |
|
%token LINKS_DELAY |
| 209 |
|
%token LISTEN |
| 210 |
|
%token T_LOG |
| 211 |
+ |
%token MASK |
| 212 |
|
%token MAX_ACCEPT |
| 213 |
|
%token MAX_BANS |
| 214 |
|
%token MAX_CHANS_PER_OPER |
| 268 |
|
%token REHASH |
| 269 |
|
%token REMOTE |
| 270 |
|
%token REMOTEBAN |
| 270 |
– |
%token RESTRICT_CHANNELS |
| 271 |
|
%token RSA_PRIVATE_KEY_FILE |
| 272 |
|
%token RSA_PUBLIC_KEY_FILE |
| 273 |
|
%token SSL_CERTIFICATE_FILE |
| 1717 |
|
strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf)); |
| 1718 |
|
} '{' resv_items '}' ';' |
| 1719 |
|
{ |
| 1720 |
< |
if (IsChanPrefix(block_state.name.buf[0])) |
| 1721 |
< |
create_channel_resv(block_state.name.buf, block_state.rpass.buf); |
| 1722 |
< |
else if (block_state.name.buf[0]) |
| 1723 |
< |
create_nick_resv(block_state.name.buf, block_state.rpass.buf); |
| 1720 |
> |
if (conf_parser_ctx.pass != 2) |
| 1721 |
> |
break; |
| 1722 |
> |
|
| 1723 |
> |
create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list); |
| 1724 |
|
}; |
| 1725 |
|
|
| 1726 |
|
resv_items: resv_items resv_item | resv_item; |
| 1727 |
< |
resv_item: resv_reason | resv_channel | resv_nick | error ';' ; |
| 1727 |
> |
resv_item: resv_mask | resv_reason | resv_exempt | error ';' ; |
| 1728 |
|
|
| 1729 |
< |
resv_reason: REASON '=' QSTRING ';' |
| 1729 |
> |
resv_mask: MASK '=' QSTRING ';' |
| 1730 |
|
{ |
| 1731 |
|
if (conf_parser_ctx.pass == 2) |
| 1732 |
< |
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf)); |
| 1732 |
> |
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf)); |
| 1733 |
|
}; |
| 1734 |
|
|
| 1735 |
< |
resv_channel: CHANNEL '=' QSTRING ';' |
| 1735 |
> |
resv_reason: REASON '=' QSTRING ';' |
| 1736 |
|
{ |
| 1737 |
|
if (conf_parser_ctx.pass == 2) |
| 1738 |
< |
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf)); |
| 1738 |
> |
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf)); |
| 1739 |
|
}; |
| 1740 |
|
|
| 1741 |
< |
resv_nick: NICK '=' QSTRING ';' |
| 1741 |
> |
resv_exempt: EXEMPT '=' QSTRING ';' |
| 1742 |
|
{ |
| 1743 |
|
if (conf_parser_ctx.pass == 2) |
| 1744 |
< |
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf)); |
| 1744 |
> |
dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list); |
| 1745 |
|
}; |
| 1746 |
|
|
| 1747 |
+ |
|
| 1748 |
|
/*************************************************************************** |
| 1749 |
|
* section service |
| 1750 |
|
***************************************************************************/ |
| 2842 |
|
channel_max_chans_per_user | channel_max_chans_per_oper | |
| 2843 |
|
channel_quiet_on_ban | channel_default_split_user_count | |
| 2844 |
|
channel_default_split_server_count | |
| 2845 |
< |
channel_no_create_on_split | channel_restrict_channels | |
| 2845 |
> |
channel_no_create_on_split | |
| 2846 |
|
channel_no_join_on_split | |
| 2847 |
|
channel_jflood_count | channel_jflood_time | |
| 2848 |
|
channel_disable_fake_channels | error; |
| 2852 |
|
ConfigChannel.disable_fake_channels = yylval.number; |
| 2853 |
|
}; |
| 2854 |
|
|
| 2854 |
– |
channel_restrict_channels: RESTRICT_CHANNELS '=' TBOOL ';' |
| 2855 |
– |
{ |
| 2856 |
– |
ConfigChannel.restrict_channels = yylval.number; |
| 2857 |
– |
}; |
| 2858 |
– |
|
| 2855 |
|
channel_knock_delay: KNOCK_DELAY '=' timespec ';' |
| 2856 |
|
{ |
| 2857 |
|
ConfigChannel.knock_delay = $3; |