|
|
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.