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