|
|
1.1 ! root 1: /* sndrarp.c - sndrarp */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <network.h> ! 6: ! 7: /*------------------------------------------------------------------------ ! 8: * sndrarp - broadcast a RARP packet to obtain my IP address ! 9: *------------------------------------------------------------------------ ! 10: */ ! 11: sndrarp() ! 12: { ! 13: struct epacket *mkarp(); ! 14: struct epacket *packet; ! 15: int i; ! 16: int mypid; ! 17: int resp; ! 18: IPaddr junk; /* needed for argument to mkarp; not ever used */ ! 19: PStype ps; ! 20: ! 21: mypid = getpid(); ! 22: for (i=0 ; i<AR_RTRY ; i++) { ! 23: packet = mkarp(EP_RARP, AR_RREQ, junk, junk); ! 24: if ( ((int)packet) == SYSERR) ! 25: break; ! 26: disable(ps); ! 27: Arp.rarppid = mypid; ! 28: recvclr(); ! 29: write(ETHER, packet, EMINPAK); ! 30: resp = recvtim(AR_TIME); ! 31: restore(ps); ! 32: if (resp != TIMEOUT) ! 33: return(OK); ! 34: } ! 35: panic("No response to RARP"); ! 36: return(SYSERR); ! 37: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.