Another round of clean up, including fixes presented by Matthias Drochner
(PR#1404). Things to be noted: - all IP addresses are now `struct in_addr's. - the function rarp_getipaddress() no longer return `myip'; in stead it returns -1 on failure (errno set), 0 on success. `myip' is set as a size-effect.
This commit is contained in:
parent
05f929580f
commit
d9124da47f
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: arp.c,v 1.9 1995/09/14 23:45:21 pk Exp $ */
|
||||
/* $NetBSD: arp.c,v 1.10 1995/09/18 21:19:18 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -56,8 +56,8 @@
|
||||
#define ARP_NUM 8 /* need at most 3 arp entries */
|
||||
|
||||
static struct arp_list {
|
||||
n_long addr;
|
||||
u_char ea[6];
|
||||
struct in_addr addr;
|
||||
u_char ea[6];
|
||||
} arp_list[ARP_NUM] = {
|
||||
{ INADDR_BROADCAST, BA }
|
||||
};
|
||||
@ -71,7 +71,7 @@ static ssize_t arprecv __P((struct iodesc *, void *, size_t, time_t));
|
||||
u_char *
|
||||
arpwhohas(d, addr)
|
||||
register struct iodesc *d;
|
||||
n_long addr;
|
||||
struct in_addr addr;
|
||||
{
|
||||
register int i;
|
||||
register struct ether_arp *ah;
|
||||
@ -93,11 +93,11 @@ arpwhohas(d, addr)
|
||||
|
||||
#ifdef ARP_DEBUG
|
||||
if (debug)
|
||||
printf("arpwhohas: called for %s\n", intoa(addr));
|
||||
printf("arpwhohas: called for %s\n", inet_ntoa(addr));
|
||||
#endif
|
||||
/* Try for cached answer first */
|
||||
for (i = 0, al = arp_list; i < arp_num; ++i, ++al)
|
||||
if (addr == al->addr)
|
||||
if (addr.s_addr == al->addr.s_addr)
|
||||
return (al->ea);
|
||||
|
||||
/* Don't overflow cache */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: bootp.c,v 1.6 1995/09/14 23:45:22 pk Exp $ */
|
||||
/* $NetBSD: bootp.c,v 1.7 1995/09/18 21:19:20 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -101,15 +101,15 @@ bootp(sock)
|
||||
bp->bp_op = BOOTREQUEST;
|
||||
bp->bp_htype = 1; /* 10Mb Ethernet (48 bits) */
|
||||
bp->bp_hlen = 6;
|
||||
bp->bp_xid = d->xid;
|
||||
bp->bp_xid = htonl(d->xid);
|
||||
MACPY(d->myea, bp->bp_chaddr);
|
||||
bzero(bp->bp_file, sizeof(bp->bp_file));
|
||||
bcopy(vm_rfc1048, bp->bp_vend, sizeof(vm_rfc1048));
|
||||
|
||||
d->myip = myip;
|
||||
d->myport = IPPORT_BOOTPC;
|
||||
d->destip = INADDR_BROADCAST;
|
||||
d->destport = IPPORT_BOOTPS;
|
||||
d->myport = htons(IPPORT_BOOTPC);
|
||||
d->destip.s_addr = INADDR_BROADCAST;
|
||||
d->destport = htons(IPPORT_BOOTPS);
|
||||
|
||||
(void)sendrecv(d,
|
||||
bootpsend, bp, sizeof(*bp),
|
||||
@ -134,7 +134,7 @@ bootpsend(d, pkt, len)
|
||||
#endif
|
||||
|
||||
bp = pkt;
|
||||
bp->bp_secs = (u_long)(getsecs() - bot);
|
||||
bp->bp_secs = htons((u_short)(getsecs() - bot));
|
||||
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
@ -165,18 +165,17 @@ bootprecv(d, pkt, len, tleft)
|
||||
goto bad;
|
||||
|
||||
bp = (struct bootp *)pkt;
|
||||
NTOHL(bp->bp_xid);
|
||||
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("bootprecv: checked. bp = 0x%x, n = %d\n",
|
||||
(unsigned)bp, n);
|
||||
#endif
|
||||
if (bp->bp_xid != d->xid) {
|
||||
if (bp->bp_xid != htonl(d->xid)) {
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug) {
|
||||
printf("bootprecv: expected xid 0x%x, got 0x%x\n",
|
||||
d->xid, bp->bp_xid);
|
||||
d->xid, ntohl(bp->bp_xid));
|
||||
}
|
||||
#endif
|
||||
goto bad;
|
||||
@ -188,14 +187,14 @@ bootprecv(d, pkt, len, tleft)
|
||||
#endif
|
||||
|
||||
/* Pick up our ip address (and natural netmask) */
|
||||
myip = d->myip = ntohl(bp->bp_yiaddr.s_addr);
|
||||
myip = d->myip = bp->bp_yiaddr;
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("our ip address is %s\n", intoa(d->myip));
|
||||
printf("our ip address is %s\n", inet_ntoa(d->myip));
|
||||
#endif
|
||||
if (IN_CLASSA(d->myip))
|
||||
if (IN_CLASSA(d->myip.s_addr))
|
||||
nmask = IN_CLASSA_NET;
|
||||
else if (IN_CLASSB(d->myip))
|
||||
else if (IN_CLASSB(d->myip.s_addr))
|
||||
nmask = IN_CLASSB_NET;
|
||||
else
|
||||
nmask = IN_CLASSC_NET;
|
||||
@ -206,7 +205,7 @@ bootprecv(d, pkt, len, tleft)
|
||||
|
||||
/* Pick up root or swap server address and file spec. */
|
||||
if (bp->bp_siaddr.s_addr != 0)
|
||||
rootip = ntohl(bp->bp_siaddr.s_addr);
|
||||
rootip = bp->bp_siaddr;
|
||||
if (bp->bp_file[0] != '\0') {
|
||||
strncpy(bootfile, (char *)bp->bp_file, sizeof(bootfile));
|
||||
bootfile[sizeof(bootfile) - 1] = '\0';
|
||||
@ -230,23 +229,23 @@ bootprecv(d, pkt, len, tleft)
|
||||
}
|
||||
|
||||
/* Get subnet (or natural net) mask */
|
||||
mask = nmask;
|
||||
netmask = nmask;
|
||||
if (smask)
|
||||
mask = smask;
|
||||
netmask = smask;
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("mask: %s\n", intoa(mask));
|
||||
printf("mask: %s\n", intoa(netmask));
|
||||
#endif
|
||||
|
||||
/* We need a gateway if root or swap is on a different net */
|
||||
if (!SAMENET(d->myip, rootip, mask)) {
|
||||
if (!SAMENET(d->myip, rootip, netmask)) {
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("need gateway for root ip\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!SAMENET(d->myip, swapip, mask)) {
|
||||
if (!SAMENET(d->myip, swapip, netmask)) {
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("need gateway for swap ip\n");
|
||||
@ -254,12 +253,12 @@ bootprecv(d, pkt, len, tleft)
|
||||
}
|
||||
|
||||
/* Toss gateway if on a different net */
|
||||
if (!SAMENET(d->myip, gateip, mask)) {
|
||||
if (!SAMENET(d->myip, gateip, netmask)) {
|
||||
#ifdef BOOTP_DEBUG
|
||||
if (debug)
|
||||
printf("gateway ip (%s) bad\n", intoa(gateip));
|
||||
printf("gateway ip (%s) bad\n", inet_ntoa(gateip));
|
||||
#endif
|
||||
gateip = 0;
|
||||
gateip.s_addr = 0;
|
||||
}
|
||||
|
||||
return (n);
|
||||
@ -282,10 +281,10 @@ vend_cmu(cp)
|
||||
vp = (struct cmu_vend *)cp;
|
||||
|
||||
if (vp->v_smask.s_addr != 0) {
|
||||
smask = ntohl(vp->v_smask.s_addr);
|
||||
smask = vp->v_smask.s_addr;
|
||||
}
|
||||
if (vp->v_dgate.s_addr != 0) {
|
||||
gateip = ntohl(vp->v_dgate.s_addr);
|
||||
gateip = vp->v_dgate;
|
||||
}
|
||||
}
|
||||
|
||||
@ -315,30 +314,26 @@ vend_rfc1048(cp, len)
|
||||
|
||||
if (tag == TAG_SUBNET_MASK) {
|
||||
bcopy(cp, &smask, sizeof(smask));
|
||||
smask = ntohl(smask);
|
||||
}
|
||||
if (tag == TAG_GATEWAY) {
|
||||
bcopy(cp, &gateip, sizeof(gateip));
|
||||
gateip = ntohl(gateip);
|
||||
bcopy(cp, &gateip.s_addr, sizeof(gateip.s_addr));
|
||||
}
|
||||
if (tag == TAG_SWAPSERVER) {
|
||||
bcopy(cp, &swapip, sizeof(swapip));
|
||||
swapip = ntohl(swapip);
|
||||
bcopy(cp, &swapip.s_addr, sizeof(swapip.s_addr));
|
||||
}
|
||||
if (tag == TAG_DOMAIN_SERVER) {
|
||||
bcopy(cp, &nameip, sizeof(nameip));
|
||||
nameip = ntohl(nameip);
|
||||
bcopy(cp, &nameip.s_addr, sizeof(nameip.s_addr));
|
||||
}
|
||||
if (tag == TAG_ROOTPATH) {
|
||||
strncpy(rootpath, cp, sizeof(rootpath));
|
||||
strncpy(rootpath, (char *)cp, sizeof(rootpath));
|
||||
rootpath[size] = '\0';
|
||||
}
|
||||
if (tag == TAG_HOSTNAME) {
|
||||
strncpy(hostname, cp, sizeof(hostname));
|
||||
strncpy(hostname, (char *)cp, sizeof(hostname));
|
||||
hostname[size] = '\0';
|
||||
}
|
||||
if (tag == TAG_DOMAINNAME) {
|
||||
strncpy(domainname, cp, sizeof(domainname));
|
||||
strncpy(domainname, (char *)cp, sizeof(domainname));
|
||||
domainname[size] = '\0';
|
||||
}
|
||||
cp += size;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: bootparam.c,v 1.3 1995/09/17 00:49:38 pk Exp $ */
|
||||
/* $NetBSD: bootparam.c,v 1.4 1995/09/18 21:19:22 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 Gordon W. Ross
|
||||
@ -52,14 +52,8 @@
|
||||
#include "rpc.h"
|
||||
#include "bootparam.h"
|
||||
|
||||
n_long bp_server_addr; /* net order */
|
||||
n_short bp_server_port; /* net order */
|
||||
|
||||
int hostnamelen;
|
||||
char hostname[FNAME_SIZE];
|
||||
|
||||
int domainnamelen;
|
||||
char domainname[FNAME_SIZE];
|
||||
struct in_addr bp_server_addr; /* net order */
|
||||
n_short bp_server_port; /* net order */
|
||||
|
||||
/*
|
||||
* RPC definitions for bootparamd
|
||||
@ -78,8 +72,8 @@ struct xdr_inaddr {
|
||||
int32_t addr[4];
|
||||
};
|
||||
|
||||
int xdr_inaddr_encode __P((void **p, n_long ia));
|
||||
int xdr_inaddr_decode __P((void **p, n_long *ia));
|
||||
int xdr_inaddr_encode __P((void **p, struct in_addr ia));
|
||||
int xdr_inaddr_decode __P((void **p, struct in_addr *ia));
|
||||
|
||||
int xdr_string_encode __P((void **p, char *str, int len));
|
||||
int xdr_string_decode __P((void **p, char *str, int *len_p));
|
||||
@ -131,12 +125,12 @@ bp_whoami(sockfd)
|
||||
int len, x;
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_whoami: myip=0x%x\n", myip);
|
||||
printf("bp_whoami: myip=%s\n", inet_ntoa(myip));
|
||||
#endif
|
||||
|
||||
if (!(d = socktodesc(sockfd))) {
|
||||
printf("bp_whoami: bad socket. %d\n", sockfd);
|
||||
return (EBADF);
|
||||
return (-1);
|
||||
}
|
||||
args = &sdata.d;
|
||||
repl = &rdata.d;
|
||||
@ -158,7 +152,7 @@ bp_whoami(sockfd)
|
||||
|
||||
/* RPC: portmap/callit */
|
||||
d->myport = htons(--rpc_port);
|
||||
d->destip = htonl(INADDR_BROADCAST); /* XXX: subnet bcast? */
|
||||
d->destip.s_addr = INADDR_BROADCAST; /* XXX: subnet bcast? */
|
||||
/* rpc_call will set d->destport */
|
||||
|
||||
len = rpc_call(d, PMAPPROG, PMAPVERS, PMAPPROC_CALLIT,
|
||||
@ -166,7 +160,7 @@ bp_whoami(sockfd)
|
||||
repl, sizeof(*repl));
|
||||
if (len < 8) {
|
||||
printf("bootparamd: 'whoami' call failed\n");
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Save bootparam server address (from IP header). */
|
||||
@ -181,7 +175,7 @@ bp_whoami(sockfd)
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_whoami: server at %s:%d\n",
|
||||
intoa(bp_server_addr), ntohs(bp_server_port));
|
||||
inet_ntoa(bp_server_addr), ntohs(bp_server_port));
|
||||
#endif
|
||||
|
||||
/* We have just done a portmap call, so cache the portnum. */
|
||||
@ -196,7 +190,7 @@ bp_whoami(sockfd)
|
||||
x = ntohl(repl->encap_len);
|
||||
if (len < x) {
|
||||
printf("bp_whoami: short reply, %d < %d\n", len, x);
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
recv_head = repl->capsule;
|
||||
|
||||
@ -206,7 +200,7 @@ bp_whoami(sockfd)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_whoami: bad hostname\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* domain name */
|
||||
@ -215,7 +209,7 @@ bp_whoami(sockfd)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_whoami: bad domainname\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* gateway address */
|
||||
@ -223,7 +217,7 @@ bp_whoami(sockfd)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_whoami: bad gateway\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* success */
|
||||
@ -243,7 +237,7 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
int sockfd;
|
||||
char *key;
|
||||
char *pathname;
|
||||
n_long *serv_addr;
|
||||
struct in_addr *serv_addr;
|
||||
{
|
||||
struct {
|
||||
n_long h[RPC_HEADER_WORDS];
|
||||
@ -261,7 +255,7 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
|
||||
if (!(d = socktodesc(sockfd))) {
|
||||
printf("bp_getfile: bad socket. %d\n", sockfd);
|
||||
return (EBADF);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
send_tail = sdata.d;
|
||||
@ -300,7 +294,8 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_getfile: short reply\n");
|
||||
#endif
|
||||
return(-1);
|
||||
errno = EBADRPC;
|
||||
return (-1);
|
||||
}
|
||||
recv_head = rdata.d;
|
||||
|
||||
@ -314,7 +309,7 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_getfile: bad server name\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* server IP address (mountd/NFS) */
|
||||
@ -322,7 +317,7 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_getfile: bad server addr\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* server pathname */
|
||||
@ -331,7 +326,7 @@ bp_getfile(sockfd, key, serv_addr, pathname)
|
||||
#ifdef RPC_DEBUG
|
||||
printf("bp_getfile: bad server path\n");
|
||||
#endif
|
||||
return(-1);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* success */
|
||||
@ -398,7 +393,7 @@ xdr_string_decode(pkt, str, len_p)
|
||||
int
|
||||
xdr_inaddr_encode(pkt, ia)
|
||||
void **pkt;
|
||||
n_long ia; /* host order */
|
||||
struct in_addr ia;
|
||||
{
|
||||
struct xdr_inaddr *xi;
|
||||
u_char *cp;
|
||||
@ -411,13 +406,13 @@ xdr_inaddr_encode(pkt, ia)
|
||||
xi = *pkt;
|
||||
*(char**)pkt += sizeof(*xi);
|
||||
xi->atype = htonl(1);
|
||||
uia.l = htonl(ia);
|
||||
uia.l = ia.s_addr;
|
||||
cp = uia.c;
|
||||
ip = xi->addr;
|
||||
*ip++ = *cp++;
|
||||
*ip++ = *cp++;
|
||||
*ip++ = *cp++;
|
||||
*ip++ = *cp++;
|
||||
*ip++ = htonl((unsigned int)*cp++);
|
||||
*ip++ = htonl((unsigned int)*cp++);
|
||||
*ip++ = htonl((unsigned int)*cp++);
|
||||
*ip++ = htonl((unsigned int)*cp++);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -425,7 +420,7 @@ xdr_inaddr_encode(pkt, ia)
|
||||
int
|
||||
xdr_inaddr_decode(pkt, ia)
|
||||
void **pkt;
|
||||
n_long *ia; /* host order */
|
||||
struct in_addr *ia; /* host order */
|
||||
{
|
||||
struct xdr_inaddr *xi;
|
||||
u_char *cp;
|
||||
@ -445,14 +440,13 @@ xdr_inaddr_decode(pkt, ia)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
cp = uia.c;
|
||||
ip = xi->addr;
|
||||
*cp++ = *ip++;
|
||||
*cp++ = *ip++;
|
||||
*cp++ = *ip++;
|
||||
*cp++ = *ip++;
|
||||
*ia = ntohl(uia.l);
|
||||
*cp++ = ntohl(*ip++);
|
||||
*cp++ = ntohl(*ip++);
|
||||
*cp++ = ntohl(*ip++);
|
||||
*cp++ = ntohl(*ip++);
|
||||
ia->s_addr = uia.l;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
|
||||
int bp_whoami(int sock);
|
||||
int bp_getfile(int sock, char *key, n_long *addrp, char *path);
|
||||
int bp_getfile(int sock, char *key, struct in_addr *addrp, char *path);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: exit.c,v 1.6 1995/09/17 00:49:40 pk Exp $ */
|
||||
/* $NetBSD: exit.c,v 1.7 1995/09/18 21:19:25 pk Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993 John Brezak
|
||||
@ -44,7 +44,6 @@ panic(fmt /*, va_alist */)
|
||||
#endif
|
||||
{
|
||||
extern void closeall __P((void));
|
||||
extern __dead void _rtt __P((void)) __attribute__((noreturn));
|
||||
va_list ap;
|
||||
static int paniced;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: globals.c,v 1.2 1994/10/26 05:44:47 cgd Exp $ */
|
||||
/* $NetBSD: globals.c,v 1.3 1995/09/18 21:19:27 pk Exp $ */
|
||||
|
||||
/*
|
||||
* globals.c:
|
||||
@ -19,10 +19,13 @@ u_char bcea[6] = BA; /* broadcast ethernet address */
|
||||
char rootpath[FNAME_SIZE] = "/"; /* root mount path */
|
||||
char bootfile[FNAME_SIZE]; /* bootp says to boot this */
|
||||
char hostname[FNAME_SIZE]; /* our hostname */
|
||||
int hostnamelen;
|
||||
char domainname[FNAME_SIZE]; /* our DNS domain */
|
||||
int domainnamelen;
|
||||
char ifname[IFNAME_SIZE]; /* name of interface (e.g. "le0") */
|
||||
n_long nameip; /* DNS server ip address */
|
||||
n_long rootip; /* root ip address */
|
||||
n_long swapip; /* swap ip address */
|
||||
n_long gateip; /* swap ip address */
|
||||
n_long mask = 0xffffff00; /* subnet or net mask */
|
||||
struct in_addr myip; /* my ip address */
|
||||
struct in_addr nameip; /* DNS server ip address */
|
||||
struct in_addr rootip; /* root ip address */
|
||||
struct in_addr swapip; /* swap ip address */
|
||||
struct in_addr gateip; /* swap ip address */
|
||||
n_long netmask = 0xffffff00; /* subnet or net mask */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: iodesc.h,v 1.2 1994/10/26 05:44:50 cgd Exp $ */
|
||||
/* $NetBSD: iodesc.h,v 1.3 1995/09/18 21:19:28 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1993 Adam Glass
|
||||
@ -42,8 +42,8 @@
|
||||
#define __SYS_LIBNETBOOT_IODESC_H
|
||||
|
||||
struct iodesc {
|
||||
n_long destip; /* destination ip address */
|
||||
n_long myip; /* my ip address */
|
||||
struct in_addr destip; /* destination ip address */
|
||||
struct in_addr myip; /* my ip address */
|
||||
u_short destport; /* destination port */
|
||||
u_short myport; /* destination port */
|
||||
u_long xid; /* transaction identification */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: net.c,v 1.7 1995/09/17 00:49:41 pk Exp $ */
|
||||
/* $NetBSD: net.c,v 1.8 1995/09/18 21:19:30 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -56,9 +56,6 @@
|
||||
|
||||
#include "stand.h"
|
||||
#include "net.h"
|
||||
#include "netif.h"
|
||||
|
||||
n_long myip;
|
||||
|
||||
/* Caller must leave room for ethernet, ip and udp headers in front!! */
|
||||
ssize_t
|
||||
@ -79,9 +76,9 @@ sendudp(d, pkt, len)
|
||||
printf("sendudp: d=%x called.\n", (u_int)d);
|
||||
if (d) {
|
||||
printf("saddr: %s:%d",
|
||||
intoa(d->myip), d->myport);
|
||||
inet_ntoa(d->myip), ntohs(d->myport));
|
||||
printf(" daddr: %s:%d\n",
|
||||
intoa(d->destip), d->destport);
|
||||
inet_ntoa(d->destip), ntohs(d->destport));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -97,12 +94,12 @@ sendudp(d, pkt, len)
|
||||
ip->ip_len = htons(len);
|
||||
ip->ip_p = IPPROTO_UDP; /* char */
|
||||
ip->ip_ttl = IP_TTL; /* char */
|
||||
ip->ip_src.s_addr = htonl(d->myip);
|
||||
ip->ip_dst.s_addr = htonl(d->destip);
|
||||
ip->ip_src = d->myip;
|
||||
ip->ip_dst = d->destip;
|
||||
ip->ip_sum = in_cksum(ip, sizeof(*ip)); /* short, but special */
|
||||
|
||||
uh->uh_sport = htons(d->myport);
|
||||
uh->uh_dport = htons(d->destport);
|
||||
uh->uh_sport = d->myport;
|
||||
uh->uh_dport = d->destport;
|
||||
uh->uh_ulen = htons(len - sizeof(*ip));
|
||||
|
||||
/* Calculate checksum (must save and restore ip header) */
|
||||
@ -116,10 +113,10 @@ sendudp(d, pkt, len)
|
||||
*ip = tip;
|
||||
|
||||
if (ip->ip_dst.s_addr == INADDR_BROADCAST || ip->ip_src.s_addr == 0 ||
|
||||
mask == 0 || SAMENET(ip->ip_src.s_addr, ip->ip_dst.s_addr, mask))
|
||||
ea = arpwhohas(d, ip->ip_dst.s_addr);
|
||||
netmask == 0 || SAMENET(ip->ip_src, ip->ip_dst, netmask))
|
||||
ea = arpwhohas(d, ip->ip_dst);
|
||||
else
|
||||
ea = arpwhohas(d, htonl(gateip));
|
||||
ea = arpwhohas(d, gateip);
|
||||
|
||||
cc = sendether(d, ip, len, ea, ETHERTYPE_IP);
|
||||
if (cc == -1)
|
||||
@ -207,11 +204,11 @@ readudp(d, pkt, len, tleft)
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
if (d->myip && ntohl(ip->ip_dst.s_addr) != d->myip) {
|
||||
if (d->myip.s_addr && ip->ip_dst.s_addr != d->myip.s_addr) {
|
||||
#ifdef NET_DEBUG
|
||||
if (debug) {
|
||||
printf("readudp: bad saddr %s != ", intoa(d->myip));
|
||||
printf("%s\n", intoa(ntohl(ip->ip_dst.s_addr)));
|
||||
printf("readudp: bad saddr %s != ", inet_ntoa(d->myip));
|
||||
printf("%s\n", inet_ntoa(ip->ip_dst));
|
||||
}
|
||||
#endif
|
||||
return -1;
|
||||
@ -223,7 +220,7 @@ readudp(d, pkt, len, tleft)
|
||||
ip->ip_len = sizeof(*ip);
|
||||
n -= hlen - sizeof(*ip);
|
||||
}
|
||||
if (ntohs(uh->uh_dport) != d->myport) {
|
||||
if (uh->uh_dport != d->myport) {
|
||||
#ifdef NET_DEBUG
|
||||
if (debug)
|
||||
printf("readudp: bad dport %d != %d\n",
|
||||
@ -305,6 +302,10 @@ sendrecv(d, sproc, sbuf, ssize, rproc, rbuf, rsize)
|
||||
t = getsecs();
|
||||
for (;;) {
|
||||
if (tleft <= 0) {
|
||||
if (tmo == MAXTMO) {
|
||||
errno = ETIMEDOUT;
|
||||
return -1;
|
||||
}
|
||||
cc = (*sproc)(d, sbuf, ssize);
|
||||
if (cc == -1 || cc < ssize)
|
||||
panic("sendrecv: short write! (%d < %d)",
|
||||
@ -330,16 +331,24 @@ sendrecv(d, sproc, sbuf, ssize, rproc, rbuf, rsize)
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
inet_ntoa(ia)
|
||||
struct in_addr ia;
|
||||
{
|
||||
return (intoa(ia.s_addr));
|
||||
}
|
||||
|
||||
/* Similar to inet_ntoa() */
|
||||
char *
|
||||
intoa(addr)
|
||||
n_long addr;
|
||||
register n_long addr;
|
||||
{
|
||||
register char *cp;
|
||||
register u_int byte;
|
||||
register int n;
|
||||
static char buf[17]; /* strlen(".255.255.255.255") + 1 */
|
||||
|
||||
NTOHL(addr);
|
||||
cp = &buf[sizeof buf];
|
||||
*--cp = '\0';
|
||||
|
||||
@ -397,5 +406,5 @@ ip_convertaddr(p)
|
||||
if (*p != '\0')
|
||||
return IP_ANYADDR;
|
||||
|
||||
return ntohl(addr);
|
||||
return htonl(addr);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: net.h,v 1.6 1995/09/14 23:45:27 pk Exp $ */
|
||||
/* $NetBSD: net.h,v 1.7 1995/09/18 21:19:32 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1993 Adam Glass
|
||||
@ -38,12 +38,17 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _KERNEL /* XXX - see <netinet/in.h> */
|
||||
#undef __IPADDR
|
||||
#define __IPADDR(x) htonl((u_int32_t)(x))
|
||||
#endif
|
||||
|
||||
#include "iodesc.h"
|
||||
|
||||
#define BA { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
|
||||
|
||||
/* Returns true if n_long's on the same net */
|
||||
#define SAMENET(a1, a2, m) ((a1 & m) == (a2 & m))
|
||||
#define SAMENET(a1, a2, m) ((a1.s_addr & m) == (a2.s_addr & m))
|
||||
|
||||
#define MACPY(s, d) bcopy((char *)s, (char *)d, 6)
|
||||
|
||||
@ -68,25 +73,28 @@ extern u_char bcea[6];
|
||||
extern char rootpath[FNAME_SIZE];
|
||||
extern char bootfile[FNAME_SIZE];
|
||||
extern char hostname[FNAME_SIZE];
|
||||
extern int hostnamelen;
|
||||
extern char domainname[FNAME_SIZE];
|
||||
extern int domainnamelen;
|
||||
extern char ifname[IFNAME_SIZE];
|
||||
|
||||
extern n_long myip;
|
||||
extern n_long rootip;
|
||||
extern n_long swapip;
|
||||
extern n_long gateip;
|
||||
extern n_long nameip;
|
||||
extern n_long mask;
|
||||
extern struct in_addr myip;
|
||||
extern struct in_addr rootip;
|
||||
extern struct in_addr swapip;
|
||||
extern struct in_addr gateip;
|
||||
extern struct in_addr nameip;
|
||||
extern n_long netmask;
|
||||
|
||||
extern int debug; /* defined in the machdep sources */
|
||||
|
||||
extern struct iodesc sockets[SOPEN_MAX];
|
||||
|
||||
/* ARP functions: */
|
||||
|
||||
u_char *arpwhohas __P((struct iodesc *, n_long));
|
||||
/* ARP/RevARP functions: */
|
||||
u_char *arpwhohas __P((struct iodesc *, struct in_addr));
|
||||
void arp_reply __P((struct iodesc *, void *));
|
||||
int rarp_getipaddress __P((int));
|
||||
|
||||
/* Link functions: */
|
||||
ssize_t sendether __P((struct iodesc *d, void *pkt, size_t len,
|
||||
u_char *dea, int etype));
|
||||
ssize_t readether __P((struct iodesc *d, void *pkt, size_t len,
|
||||
@ -100,12 +108,11 @@ ssize_t sendrecv __P((struct iodesc *,
|
||||
ssize_t (*)(struct iodesc *, void *, size_t, time_t),
|
||||
void *, size_t));
|
||||
|
||||
/* utilities: */
|
||||
|
||||
/* Utilities: */
|
||||
char *ether_sprintf __P((u_char *));
|
||||
int in_cksum __P((void *, int));
|
||||
char *intoa __P((n_long)); /* similar to inet_ntoa */
|
||||
char *inet_ntoa __P((struct in_addr));
|
||||
char *intoa __P((n_long)); /* similar to inet_ntoa */
|
||||
|
||||
/* Machine-dependent functions: */
|
||||
|
||||
time_t getsecs __P((void));
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: netif.c,v 1.4 1995/09/14 23:45:28 pk Exp $ */
|
||||
/* $NetBSD: netif.c,v 1.5 1995/09/18 21:19:34 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1993 Adam Glass
|
||||
@ -281,7 +281,8 @@ socktodesc(sock)
|
||||
int sock;
|
||||
{
|
||||
if (sock >= SOPEN_MAX) {
|
||||
return(NULL);
|
||||
errno = EBADF;
|
||||
return (NULL);
|
||||
}
|
||||
return (&sockets[sock]);
|
||||
}
|
||||
@ -298,6 +299,7 @@ netif_open(machdep_hint)
|
||||
for (fd = 0, s = sockets; fd < SOPEN_MAX; fd++, s++)
|
||||
if (s->io_netif == (struct netif *)0)
|
||||
goto fnd;
|
||||
errno = EMFILE;
|
||||
return (-1);
|
||||
|
||||
fnd:
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: nfs.c,v 1.10 1995/09/17 00:49:42 pk Exp $ */
|
||||
/* $NetBSD: nfs.c,v 1.11 1995/09/18 21:19:36 pk Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993 John Brezak
|
||||
@ -271,7 +271,7 @@ nfs_readdata(d, off, addr, len)
|
||||
int
|
||||
nfs_mount(sock, ip, path)
|
||||
int sock;
|
||||
n_long ip;
|
||||
struct in_addr ip;
|
||||
char *path;
|
||||
{
|
||||
struct iodesc *desc;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: nfs.h,v 1.3 1995/09/14 23:45:32 pk Exp $ */
|
||||
/* $NetBSD: nfs.h,v 1.4 1995/09/18 21:19:39 pk Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
@ -41,3 +41,5 @@ ssize_t nfs_write __P((struct open_file *f, void *buf,
|
||||
size_t size, size_t *resid));
|
||||
off_t nfs_seek __P((struct open_file *f, off_t offset, int where));
|
||||
int nfs_stat __P((struct open_file *f, struct stat *sb));
|
||||
int nfs_mount __P((int, struct in_addr, char *));
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rarp.c,v 1.8 1995/09/14 23:45:34 pk Exp $ */
|
||||
/* $NetBSD: rarp.c,v 1.9 1995/09/18 21:19:40 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -58,7 +58,7 @@ static ssize_t rarprecv __P((struct iodesc *, void *, size_t, time_t));
|
||||
/*
|
||||
* Ethernet (Reverse) Address Resolution Protocol (see RFC 903, and 826).
|
||||
*/
|
||||
n_long
|
||||
int
|
||||
rarp_getipaddress(sock)
|
||||
int sock;
|
||||
{
|
||||
@ -85,7 +85,7 @@ rarp_getipaddress(sock)
|
||||
#endif
|
||||
if (!(d = socktodesc(sock))) {
|
||||
printf("rarp: bad socket. %d\n", sock);
|
||||
return(INADDR_ANY);
|
||||
return (-1);
|
||||
}
|
||||
#ifdef RARP_DEBUG
|
||||
if (debug)
|
||||
@ -106,10 +106,10 @@ rarp_getipaddress(sock)
|
||||
rarpsend, &wbuf.data, sizeof(wbuf.data),
|
||||
rarprecv, &rbuf.data, sizeof(rbuf.data)) < 0) {
|
||||
printf("No response for RARP request\n");
|
||||
return(INADDR_ANY);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
return (myip);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rpc.c,v 1.8 1995/09/17 00:49:44 pk Exp $ */
|
||||
/* $NetBSD: rpc.c,v 1.9 1995/09/18 21:19:42 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -101,6 +101,7 @@ struct rpc_reply {
|
||||
|
||||
/* Local forwards */
|
||||
static ssize_t recvrpc __P((struct iodesc *, void *, size_t, time_t));
|
||||
static int rpc_getport __P((struct iodesc *, n_long, n_long));
|
||||
|
||||
int rpc_xid;
|
||||
int rpc_port = 0x400; /* predecrement */
|
||||
@ -125,14 +126,19 @@ rpc_call(d, prog, vers, proc, sdata, slen, rdata, rlen)
|
||||
char *send_head, *send_tail;
|
||||
char *recv_head, *recv_tail;
|
||||
n_long x;
|
||||
int p;
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
if (debug)
|
||||
printf("rpc_call: prog=0x%x vers=%d proc=%d\n",
|
||||
prog, vers, proc);
|
||||
prog, vers, proc);
|
||||
#endif
|
||||
|
||||
d->destport = rpc_getport(d, prog, vers);
|
||||
p = rpc_getport(d, prog, vers);
|
||||
if (p == htonl(-1))
|
||||
return (-1);
|
||||
|
||||
d->destport = htons((short)ntohl(p));
|
||||
|
||||
/*
|
||||
* Prepend authorization stuff and headers.
|
||||
@ -182,6 +188,7 @@ rpc_call(d, prog, vers, proc, sdata, slen, rdata, rlen)
|
||||
cc = sendrecv(d,
|
||||
sendudp, send_head, ((int)send_tail - (int)send_head),
|
||||
recvrpc, recv_head, ((int)recv_tail - (int)recv_head));
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
if (debug)
|
||||
printf("callrpc: cc=%d rlen=%d\n", cc, rlen);
|
||||
@ -284,7 +291,10 @@ recvrpc(d, pkt, len, tleft)
|
||||
* dig out the IP address/port from the headers.
|
||||
*/
|
||||
void
|
||||
rpc_fromaddr(void *pkt, n_long *addr, u_short *port)
|
||||
rpc_fromaddr(pkt, addr, port)
|
||||
void *pkt;
|
||||
struct in_addr *addr;
|
||||
u_short *port;
|
||||
{
|
||||
struct hackhdr {
|
||||
/* Tail of IP header: just IP addresses */
|
||||
@ -300,46 +310,46 @@ rpc_fromaddr(void *pkt, n_long *addr, u_short *port)
|
||||
} *hhdr;
|
||||
|
||||
hhdr = ((struct hackhdr *)pkt) - 1;
|
||||
*addr = hhdr->ip_src;
|
||||
addr->s_addr = hhdr->ip_src;
|
||||
*port = hhdr->uh_sport;
|
||||
}
|
||||
|
||||
/*
|
||||
* RPC Portmapper cache
|
||||
*/
|
||||
|
||||
#define PMAP_NUM 8 /* need at most 5 pmap entries */
|
||||
|
||||
int rpc_pmap_num;
|
||||
struct pmap_list {
|
||||
u_long addr; /* server, net order */
|
||||
struct in_addr addr; /* server, net order */
|
||||
u_long prog; /* host order */
|
||||
u_long vers; /* host order */
|
||||
u_short port; /* net order */
|
||||
n_short port; /* net order */
|
||||
u_short _pad;
|
||||
} rpc_pmap_list[PMAP_NUM];
|
||||
|
||||
/* return port number in net order */
|
||||
int
|
||||
rpc_pmap_getcache(addr, prog, vers)
|
||||
u_long addr; /* server, net order */
|
||||
u_long prog; /* host order */
|
||||
u_long vers; /* host order */
|
||||
struct in_addr addr; /* server, net order */
|
||||
u_long prog; /* host order */
|
||||
u_long vers; /* host order */
|
||||
{
|
||||
struct pmap_list *pl;
|
||||
|
||||
for (pl = rpc_pmap_list; pl < &rpc_pmap_list[rpc_pmap_num]; pl++)
|
||||
if (pl->addr == addr && pl->prog == prog && pl->vers == vers)
|
||||
if (pl->addr.s_addr == addr.s_addr && pl->prog == prog &&
|
||||
pl->vers == vers)
|
||||
return ((int) pl->port);
|
||||
return (-1);
|
||||
return (htonl(-1));
|
||||
}
|
||||
|
||||
void
|
||||
rpc_pmap_putcache(addr, prog, vers, port)
|
||||
n_long addr; /* net order */
|
||||
n_long prog; /* host order */
|
||||
n_long vers; /* host order */
|
||||
int port; /* net order */
|
||||
struct in_addr addr; /* server, net order */
|
||||
u_long prog; /* host order */
|
||||
u_long vers; /* host order */
|
||||
n_long port; /* net order */
|
||||
{
|
||||
struct pmap_list *pl;
|
||||
|
||||
@ -374,13 +384,13 @@ rpc_getport(d, prog, vers)
|
||||
n_long vers; /* host order */
|
||||
{
|
||||
struct args {
|
||||
u_long prog; /* call program */
|
||||
u_long vers; /* call version */
|
||||
u_long proto; /* call protocol */
|
||||
u_long port; /* call port (unused) */
|
||||
n_long prog; /* call program */
|
||||
n_long vers; /* call version */
|
||||
n_long proto; /* call protocol */
|
||||
n_long port; /* call port (unused) */
|
||||
} *args;
|
||||
struct res {
|
||||
u_long port;
|
||||
n_long port;
|
||||
} *res;
|
||||
struct {
|
||||
n_long h[RPC_HEADER_WORDS];
|
||||
@ -391,20 +401,21 @@ rpc_getport(d, prog, vers)
|
||||
struct res d;
|
||||
n_long pad;
|
||||
} rdata;
|
||||
int cc, port;
|
||||
ssize_t cc;
|
||||
n_long port;
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
if (debug)
|
||||
printf("getport: prog=0x%x vers=%d\n", prog, vers);
|
||||
printf("getport: prog=0x%x vers=%d\n", prog, vers);
|
||||
#endif
|
||||
|
||||
/* This one is fixed forever. */
|
||||
if (prog == PMAPPROG)
|
||||
return PMAPPORT;
|
||||
return (htons(PMAPPORT));
|
||||
|
||||
/* Try for cached answer first */
|
||||
port = rpc_pmap_getcache(d->destip, prog, vers);
|
||||
if (port >= 0)
|
||||
if (port != htonl(-1))
|
||||
return (port);
|
||||
|
||||
args = &sdata.d;
|
||||
@ -418,9 +429,10 @@ rpc_getport(d, prog, vers)
|
||||
args, sizeof(*args), res, sizeof(*res));
|
||||
if (cc < sizeof(*res)) {
|
||||
printf("getport: %s", strerror(errno));
|
||||
return(-1);
|
||||
errno = EBADRPC;
|
||||
return (htonl(-1));
|
||||
}
|
||||
port = (u_short)res->port;
|
||||
port = res->port;
|
||||
|
||||
rpc_pmap_putcache(d->destip, prog, vers, port);
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rpc.h,v 1.5 1995/09/14 23:45:38 pk Exp $ */
|
||||
/* $NetBSD: rpc.h,v 1.6 1995/09/18 21:19:44 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992 Regents of the University of California.
|
||||
@ -49,13 +49,12 @@
|
||||
#define PMAPPROC_CALLIT 5
|
||||
|
||||
/* RPC functions: */
|
||||
ssize_t rpc_call __P((struct iodesc *d, n_long prog, n_long ver, n_long func,
|
||||
void *sdata, size_t slen, void *rdata, size_t rlen));
|
||||
int rpc_getport __P((struct iodesc *d, n_long prog, n_long vers));
|
||||
void rpc_fromaddr(void *pkt, n_long *addr, u_short *port);
|
||||
void rpc_pmap_putcache __P((n_long addr, n_long pr, n_long v, int port));
|
||||
ssize_t rpc_call __P((struct iodesc *, n_long, n_long, n_long,
|
||||
void *, size_t, void *, size_t));
|
||||
void rpc_fromaddr __P((void *, struct in_addr *, u_short *));
|
||||
int rpc_pmap_getcache __P((struct in_addr, u_long, u_long));
|
||||
void rpc_pmap_putcache __P((struct in_addr, u_long, u_long, n_long));
|
||||
|
||||
extern int rpc_xid; /* increment before call */
|
||||
extern int rpc_port; /* decrement before bind */
|
||||
|
||||
/*
|
||||
@ -67,4 +66,3 @@ extern int rpc_port; /* decrement before bind */
|
||||
* 2: Auth NULL
|
||||
*/
|
||||
#define RPC_HEADER_WORDS 28
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: saerrno.h,v 1.5 1995/09/14 23:45:39 pk Exp $ */
|
||||
/* $NetBSD: saerrno.h,v 1.6 1995/09/18 21:19:45 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1993
|
||||
@ -35,35 +35,19 @@
|
||||
* @(#)saerrno.h 8.1 (Berkeley) 6/11/93
|
||||
*/
|
||||
|
||||
extern int errno; /* just like unix */
|
||||
#include <sys/errno.h>
|
||||
|
||||
/* error codes */
|
||||
#define EADAPT 1 /* bad adaptor */
|
||||
#define ECTLR 2 /* bad controller */
|
||||
#define EUNIT 3 /* bad drive */
|
||||
#define EPART 4 /* bad partition */
|
||||
#define ERDLAB 5 /* can't read disk label */
|
||||
#define EUNLAB 6 /* unlabeled disk */
|
||||
#define ENXIO 7 /* Device not configured */
|
||||
#define EBADF 8 /* bad file descriptor */
|
||||
#define EOFFSET 9 /* relative seek not supported */
|
||||
#define ESRCH 10 /* directory search for file failed */
|
||||
#define EIO 11 /* generic error */
|
||||
#define ECMD 12 /* undefined driver command */
|
||||
#define EBSE 13 /* bad sector error */
|
||||
#define EWCK 14 /* write check error */
|
||||
#define EECC 15 /* uncorrectable ecc error */
|
||||
#define EHER 16 /* hard error */
|
||||
#define ENOEXEC 17 /* Exec format error */
|
||||
#define EPERM 18 /* Operation not permitted */
|
||||
#define ENOENT 19 /* No such file or directory */
|
||||
#define ESTALE 20 /* Stale NFS file handle */
|
||||
#define EINVAL 21 /* Invalid argument */
|
||||
#define EMFILE 22 /* Too many open files */
|
||||
#define EOPNOTSUPP 23 /* Operation not supported */
|
||||
#define EFBIG 24 /* File too large */
|
||||
#define ENOTDIR 25 /* Not a directory */
|
||||
#define EROFS 26 /* Read-only file system */
|
||||
#define ENODEV 27 /* Operation not supported by device */
|
||||
#define EFTYPE 28 /* Inappropriate file type or format */
|
||||
#define EBADRPC 29 /* RPC struct is bad */
|
||||
/* special stand error codes */
|
||||
#define EADAPT (ELAST+1) /* bad adaptor */
|
||||
#define ECTLR (ELAST+2) /* bad controller */
|
||||
#define EUNIT (ELAST+3) /* bad drive */
|
||||
#define EPART (ELAST+4) /* bad partition */
|
||||
#define ERDLAB (ELAST+5) /* can't read disk label */
|
||||
#define EUNLAB (ELAST+6) /* unlabeled disk */
|
||||
#define EOFFSET (ELAST+7) /* relative seek not supported */
|
||||
#define ECMD (ELAST+8) /* undefined driver command */
|
||||
#define EBSE (ELAST+9) /* bad sector error */
|
||||
#define EWCK (ELAST+10) /* write check error */
|
||||
#define EECC (ELAST+11) /* uncorrectable ecc error */
|
||||
#define EHER (ELAST+12) /* hard error */
|
||||
#define ESALAST (ELAST+12) /* */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: stand.h,v 1.11 1995/09/17 00:49:45 pk Exp $ */
|
||||
/* $NetBSD: stand.h,v 1.12 1995/09/18 21:19:47 pk Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
@ -116,8 +116,9 @@ void printf __P((const char *, ...));
|
||||
void sprintf __P((char *, const char *, ...));
|
||||
void twiddle __P((void));
|
||||
void gets __P((char *));
|
||||
__dead void panic __P((const char *, ...))
|
||||
__attribute__((noreturn));
|
||||
__dead void panic __P((const char *, ...)) __attribute__((noreturn));
|
||||
__dead void _rtt __P((void)) __attribute__((noreturn));
|
||||
void bcopy __P((const void *, void *, size_t));
|
||||
int getchar __P((void));
|
||||
void exec __P((char *, char *, int));
|
||||
int open __P((const char *, int));
|
||||
|
Loading…
Reference in New Issue
Block a user