]> jfr.im git - irc/quakenet/newserv.git/blob - nodecount/nodecount.c
unused variables
[irc/quakenet/newserv.git] / nodecount / nodecount.c
1 #include "../core/schedule.h"
2 #include "../lib/irc_string.h"
3 #include "../localuser/localuserchannel.h"
4 #include "../control/control.h"
5
6 int nc_cmd_nodecount(void *source, int cargc, char **cargv);
7
8 void _init(void) {
9 registercontrolcmd("nodecount", 10, 1, &nc_cmd_nodecount);
10 }
11
12 void _fini(void) {
13 deregistercontrolcmd("nodecount", &nc_cmd_nodecount);
14 }
15
16 int nc_cmd_nodecount(void *source, int cargc, char **cargv) {
17 nick *np = (nick *)source;
18 struct irc_in_addr sin;
19 unsigned char bits;
20 patricia_node_t *head, *node;
21 int count;
22
23 if (cargc < 1) {
24 controlreply(np, "Syntax: nodecount <IP>");
25 return CMD_OK;
26 }
27
28 if (ipmask_parse(cargv[0], &sin, &bits) == 0) {
29 controlreply(np, "Invalid mask.");
30
31 return CMD_OK;
32 }
33
34 head = refnode(iptree, &sin, bits);
35
36 count = 0;
37
38 PATRICIA_WALK(head, node) {
39 count += node->usercount;
40 } PATRICIA_WALK_END;
41
42 derefnode(iptree, head);
43
44 controlreply(np, "%d user(s) found.", count);
45
46 return CMD_OK;
47 }
48