|
|
1.1 root 1: /* rwhoind.c - rwhoind */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <network.h>
6: #include <rwho.h>
7:
8: /*------------------------------------------------------------------------
9: * rwhoind - rwho daemon to record info from incoming rwho packets
10: *------------------------------------------------------------------------
11: */
12: PROCESS rwhoind()
13: {
14: int dev;
15: int len;
16: int i;
17: long now;
18: PStype ps;
19: struct rwhopac *rpacptr;
20: struct rwent *rwptr;
21:
22: if ( (dev=open(INTERNET, ANYFPORT, URWHO)) == SYSERR ||
23: control(dev, DG_SETMODE, DG_DMODE) == SYSERR)
24: panic("rwho_in: cannot open rwho port");
25: while (TRUE) {
26: if ( (len = read(dev,Rwho.rbuf,RWMAXP)) == SYSERR )
27: continue;
28: rpacptr = (struct rwhopac *) Rwho.rbuf;
29: for (i=0 ; i<Rwho.rwnent ; i++) {
30: rwptr = &Rwho.rwcache[i];
31: if (strncmp(rpacptr->rw_host, rwptr->rwmach,
32: RMACLEN) == 0)
33: break;
34: }
35: if (i >= Rwho.rwnent) {
36: disable(ps);
37: if (Rwho.rwnent >= RWCSIZ) {
38: restore(ps);
39: continue;
40: }
41: rwptr = &Rwho.rwcache[Rwho.rwnent++];
42: strncpy(rwptr->rwmach, rpacptr->rw_host, RMACLEN);
43: restore(ps);
44: }
45: rwptr->rwboot = net2hl(rpacptr->rw_btim);
46: gettime(&now);
47: rwptr->rwlast = now;
48: rwptr->rwslast = net2hl(rpacptr->rw_sndtim);
49: for (i=0 ; i<RWNLOAD ; i++)
50: rwptr->rwload[i] = net2hl(rpacptr->rw_load[i]);
51: rwptr->rwusers = (len-RWMINP)/sizeof(struct rw_who);
52: }
53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.