struct StatsStruct
{
char letter;
- void (*handler) ();
+ void (*handler) (struct Client *source_p);
int need_oper;
int need_admin;
};
-static void stats_dns_servers (struct Client *);
+static void stats_dns_servers(struct Client *);
static void stats_delay(struct Client *);
static void stats_hash(struct Client *);
static void stats_connect(struct Client *);
{'I', stats_auth, 0, 0, },
{'k', stats_tklines, 0, 0, },
{'K', stats_klines, 0, 0, },
- {'l', stats_ltrace, 0, 0, },
- {'L', stats_ltrace, 0, 0, },
+ {'l', NULL /* special */, 0, 0, },
+ {'L', NULL /* special */, 0, 0, },
{'m', stats_messages, 0, 0, },
{'M', stats_messages, 0, 0, },
{'n', stats_dnsbl, 0, 0, },
if((statchar != 'L') && (statchar != 'l'))
stats_spy(source_p, statchar, NULL);
- for (i = 0; stats_cmd_table[i].handler; i++)
+ for (i = 0; stats_cmd_table[i].letter; i++)
{
if(stats_cmd_table[i].letter == statchar)
{
/* Blah, stats L needs the parameters, none of the others do.. */
if(statchar == 'L' || statchar == 'l')
- stats_cmd_table[i].handler (source_p, parc, parv);
+ stats_ltrace (source_p, parc, parv);
else
stats_cmd_table[i].handler (source_p);
}
sendto_one_numeric(source_p, RPL_STATSCLINE,
form_str(RPL_STATSCLINE),
-#ifndef HIDE_SERVERS_IPS
- server_p->host,
-#else
"*@127.0.0.1",
-#endif
buf, server_p->name,
server_p->port, server_p->class_name);
}
else if((ConfigFileEntry.stats_i_oper_only == 1) && !IsOper (source_p))
{
struct ConfItem *aconf;
- char *name, *host, *pass, *user, *classname;
+ char *name, *host, *pass = "*", *user, *classname;
int port;
if(MyConnect (source_p))
(struct sockaddr *)&source_p->localClient->ip,
CONF_CLIENT,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_CLIENT,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;
get_printable_conf (aconf, &name, &host, &pass, &user, &port, &classname);
+ if(!EmptyString(aconf->spasswd))
+ pass = aconf->spasswd;
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
- name, show_iline_prefix(source_p, aconf, user),
+ name, pass, show_iline_prefix(source_p, aconf, user),
host, port, classname);
}
(struct sockaddr *)&source_p->localClient->ip,
CONF_KILL,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_KILL,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;
(struct sockaddr *)&source_p->localClient->ip,
CONF_KILL,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_KILL,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;
sendto_one_numeric(source_p, RPL_STATSOLINE,
form_str(RPL_STATSOLINE),
oper_p->username, oper_p->host, oper_p->name,
- IsOper(source_p) ? get_oper_privs(oper_p->flags) : "0", "-1");
+ IsOper(source_p) ? oper_p->privset->name : "0", "-1");
}
}
sp.is_sbs += target_p->localClient->sendB;
sp.is_sbr += target_p->localClient->receiveB;
- sp.is_sti += rb_current_time() - target_p->localClient->firsttime;
+ sp.is_sti += (unsigned long long)(rb_current_time() - target_p->localClient->firsttime);
sp.is_sv++;
}
sp.is_cbs += target_p->localClient->sendB;
sp.is_cbr += target_p->localClient->receiveB;
- sp.is_cti += rb_current_time() - target_p->localClient->firsttime;
+ sp.is_cti += (unsigned long long)(rb_current_time() - target_p->localClient->firsttime);
sp.is_cl++;
}
"T :accepts %u refused %u", sp.is_ac, sp.is_ref);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"T :rejected %u delaying %lu",
- sp.is_rej, rb_dlink_list_length(&delay_exit));
+ sp.is_rej, delay_exit_length());
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,
+ "T :throttled refused %u throttle list size %lu", sp.is_thr, throttle_size());
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"T :nicks being delayed %lu",
get_nd_count());
sp.is_cbr / 1024,
sp.is_sbr / 1024);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :time connected %lu %lu",
- (long int)sp.is_cti, (long int)sp.is_sti);
+ "T :time connected %llu %llu",
+ sp.is_cti, sp.is_sti);
}
static void
{ SHARED_UNRESV, 'R' },
{ SHARED_LOCOPS, 'L' },
{ SHARED_REHASH, 'H' },
+ { SHARED_TDLINE, 'd' },
+ { SHARED_PDLINE, 'D' },
+ { SHARED_UNDLINE, 'E' },
{ 0, '\0'}
};
{
struct remote_conf *shared_p;
rb_dlink_node *ptr;
- char buf[15];
+ char buf[sizeof(shared_flagtable)/sizeof(shared_flagtable[0])];
char *p;
int i;
sendto_one(source_p, Sformat,
get_id(&me, source_p), RPL_STATSLINKINFO, get_id(source_p, source_p),
- get_server_name(target_p, SHOW_IP),
+ target_p->name,
(int) rb_linebuf_len (&target_p->localClient->buf_sendq),
(int) target_p->localClient->sendM,
(int) target_p->localClient->sendK,
if(IsAnyServer(target_p))
{
sendto_one_numeric(source_p, RPL_STATSLINKINFO, Lformat,
- get_server_name(target_p, SHOW_IP),
+ target_p->name,
(int) rb_linebuf_len(&target_p->localClient->buf_sendq),
(int) target_p->localClient->sendM,
(int) target_p->localClient->sendK,