+
+ /* If they're a local user trying to ban too broad a mask, forbid it. */
+ if (MyUser(sptr)
+ && (sile->flags & BAN_IPMASK)
+ && sile->addrbits > 0
+ && sile->addrbits < (irc_in_addr_is_ipv4(&sile->address) ? 112 : 32)) {
+ send_reply(sptr, ERR_MASKTOOWIDE, orig_mask);
+ free_ban(sile);
+ return NULL;
+ }
+
+ /* Apply it to the silence list. */
+ res = apply_ban(&cli_user(sptr)->silence, sile, 1);
+ return res ? NULL : sile;