Removes libbsd (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 4 Jun 2015 20:14:28 +0000 (16:14 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 4 Jun 2015 20:42:45 +0000 (16:42 -0400)
All the functionality should be in glibc or is not needed.

To be safe, remove your toolchain installation and rebuild.  Just removing
libbsd.a is probably enough.

26 files changed:
Makefile
tests/listener.c
user/bsd/Makefile [deleted file]
user/bsd/_sock_ingetaddr.c [deleted file]
user/bsd/_sock_ipattr.c [deleted file]
user/bsd/_sock_srv.c [deleted file]
user/bsd/accept.c [deleted file]
user/bsd/bind.c [deleted file]
user/bsd/connect.c [deleted file]
user/bsd/gethostbyaddr.c [deleted file]
user/bsd/gethostbyname.c [deleted file]
user/bsd/gethostname.c [deleted file]
user/bsd/getpeername.c [deleted file]
user/bsd/getprotobyname.c [deleted file]
user/bsd/getservbyaddr.c [deleted file]
user/bsd/getservbyname.c [deleted file]
user/bsd/getsockname.c [deleted file]
user/bsd/listen.c [deleted file]
user/bsd/nptohl.c [deleted file]
user/bsd/priv.h [deleted file]
user/bsd/send.c [deleted file]
user/bsd/sendto.c [deleted file]
user/bsd/shutdown.c [deleted file]
user/bsd/socket.c [deleted file]
user/bsd/socketpair.c [deleted file]
user/utest/Makefile

index ef48311..dd10cc1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -542,12 +542,11 @@ endif #ifeq ($(mixed-targets),1)
 # List all userspace directories here, and state any dependencies between them,
 # such as how pthread depends on parlib.
 
-user-dirs = parlib pthread benchutil iplib ndblib bsd
+user-dirs = parlib pthread benchutil iplib ndblib
 benchutil: parlib
 pthread: parlib benchutil
 iplib: parlib
 ndblib: iplib
-bsd: parlib iplib
 
 PHONY += install-libs $(user-dirs)
 install-libs: $(user-dirs) symlinks cc-exists
index fa5750b..c391b81 100644 (file)
@@ -1,11 +1,13 @@
 /* Echo server, runs on port 23.  Main purpose is low-level network debugging
- * and to show how networking commands in plan 9 correspond to BSD sockets. 
+ * and to show how networking commands in plan 9 correspond to BSD sockets
+ * (which are now a part of our sysdeps in glibc). 
  *
- * if you want to build the BSD version, you need to change the #define and link
- * with -lbsd instead of -liplib.  easiest way is to build manually:
+ * if you want to build the BSD sockets version, you need to change the #define
+ * and link with just glibc instead of -liplib.  easiest way is to build
+ * manually:
  *
  * $ x86_64-ros-gcc   -O2 -std=gnu99 -fno-stack-protector -fgnu89-inline -g 
- * -o obj/tests/listener tests/listener.c -lpthread -lbenchutil -lm -lbsd
+ * -o obj/tests/listener tests/listener.c -lpthread -lbenchutil -lm
  *
  * based off http://www2.informatik.hu-berlin.de/~apolze/LV/plan9.docs/net.V
  * and http://en.wikibooks.org/wiki/C_Programming/Networking_in_UNIX */
diff --git a/user/bsd/Makefile b/user/bsd/Makefile
deleted file mode 100644 (file)
index a9856d6..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-ARCH ?= none   # catch bugs
-CFLAGS_USER += $(CFLAGS_USER_LIBS)
-LIBNAME = bsd
-# DEPLIBS passed in from the top-level Makefile
-DEPLIBS := $(DEPLIBS)
-DEPLIBAS = $(patsubst %, $(XCC_TARGET_LIB)/lib%.a, $(DEPLIBS))
-
-SRCDIR := 
-OBJDIR := $(SRCDIR)obj
-INCDIR = .
-
-INCS = -I. -I$(INCDIR)
-FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
-FINALLIB-INSTALL = $(XCC_TARGET_LIB)/lib$(LIBNAME).a
-
-uc = $(shell echo $(1) | tr a-z A-Z)
-
-LIBUCNAME := $(call uc, $(LIBNAME))
-HEADERS := $(shell find $(INCDIR) -name "*.h")
-CFILES  := $(wildcard $(SRCDIR)*.c)
-CFILES  += $(wildcard $(SRCDIR)$(ARCH)/*.c)
-SFILES  := $(wildcard $(SRCDIR)$(ARCH)/*.S)
-OBJS    := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES)) \
-           $(patsubst %.S, $(OBJDIR)/%.o, $(SFILES))
-
-all: $(FINALLIB)
-       @:
-
-$(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
-       @echo + as [$(LIBUCNAME)] $<
-       @mkdir -p $(@D)
-       $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
-
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
-       @echo + cc [$(LIBUCNAME)] $<
-       @mkdir -p $(@D)
-       $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
-
-$(FINALLIB): $(OBJS)
-       @echo + ar [$(LIBUCNAME)] $@
-       @mkdir -p $(@D)
-       $(Q)$(AR) rc $@ $(OBJS)
-
-$(FINALLIB-INSTALL): $(FINALLIB)
-       @cp $(FINALLIB) $@
-
-install: $(FINALLIB-INSTALL)
-       @echo > /dev/null
-
-clean: 
-       @echo + clean [$(LIBUCNAME)]
-       $(Q)rm -rf $(FINALLIB)
-       $(Q)rm -rf $(OBJDIR)
-
diff --git a/user/bsd/_sock_ingetaddr.c b/user/bsd/_sock_ingetaddr.c
deleted file mode 100644 (file)
index 1b5abcd..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-void
-_sock_ingetaddr(Rock *r, struct sockaddr_in *ip, int *alen, char *a)
-{
-       int n, fd;
-       char *p;
-       char name[Ctlsize];
-
-       /* get remote address */
-       strcpy(name, r->ctl);
-       p = strrchr(name, '/');
-       strcpy(p+1, a);
-       fd = open(name, O_RDONLY);
-       if(fd >= 0){
-               n = read(fd, name, sizeof(name)-1);
-               if(n > 0){
-                       name[n] = 0;
-                       p = strchr(name, '!');
-                       if(p){
-                               *p++ = 0;
-                               ip->sin_family = AF_INET;
-                               ip->sin_port = htons(atoi(p));
-                               ip->sin_addr.s_addr = inet_addr(name);
-                               if(alen)
-                                       *alen = sizeof(struct sockaddr_in);
-                       }
-               }
-               close(fd);
-       }
-
-}
diff --git a/user/bsd/_sock_ipattr.c b/user/bsd/_sock_ipattr.c
deleted file mode 100644 (file)
index dc9675d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <ctype.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include "priv.h"
-
-/*
- *  return ndb attribute type of an ip name
- */
-int
-_sock_ipattr(const char *name)
-{
-       const char *p;
-       int dot = 0;
-       int alpha = 0;
-
-       for(p = name; *p; p++){
-               if(isdigit(*p))
-                       ;
-               else if(isalpha(*p) || *p == '-')
-                       alpha = 1;
-               else if(*p == '.')
-                       dot = 1;
-               else
-                       return Tsys;
-       }
-
-       if(alpha){
-               if(dot)
-                       return Tdom;
-               else
-                       return Tsys;
-       }
-
-       if(dot)
-               return Tip;
-       else
-               return Tsys;
-}
diff --git a/user/bsd/_sock_srv.c b/user/bsd/_sock_srv.c
deleted file mode 100644 (file)
index cd1f617..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-
-/* socket extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-/* we can't avoid overrunning npath because we don't know how big it is. */
-void
-_sock_srvname(char *npath, char *path)
-{
-       char *p;
-
-       strcpy(npath, "/srv/UD.");
-       p = strrchr(path, '/');
-       if(p == 0)
-               p = path;
-       else
-               p++;
-       strcat(npath, p);
-}
-
-int
-_sock_srv(char *path, int fd)
-{
-       int sfd;
-       char msg[8+256+1];
-
-       /* change the path to something in srv */
-       _sock_srvname(msg, path);
-
-       /* remove any previous instance */
-       unlink(msg);
-
-       /* put the fd in /srv and then close it */
-       sfd = creat(msg, 0666);
-       if(sfd < 0){
-               close(fd);
-               return -1;
-       }
-       snprintf(msg, sizeof msg, "%d", fd);
-       if(write(sfd, msg, strlen(msg)) < 0){
-               close(sfd);
-               close(fd);
-               return -1;
-       }
-       close(sfd);
-       close(fd);
-       return 0;
-}
diff --git a/user/bsd/accept.c b/user/bsd/accept.c
deleted file mode 100644 (file)
index aa0737d..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-/* they've made the delcarations hurl-inducing. */
-int
-accept(int fd, __SOCKADDR_ARG __addr,
-       socklen_t *__restrict alen)
-{
-       void *a = (void*)__addr;
-       int n, nfd, lcfd;
-       Rock *r, *nr;
-       struct sockaddr_in *ip;
-       char name[Ctlsize];
-       char file[8+Ctlsize+1];
-       char *p, *net;
-       char listen[Ctlsize];
-
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-
-       switch(r->domain){
-       case PF_INET:
-               switch(r->stype){
-               case SOCK_DGRAM:
-                       net = "udp";
-                       break;
-               case SOCK_STREAM:
-                       net = "tcp";
-                       break;
-               }
-               /* at this point, our FD is for the data file.  we need to open the
-                * listen file.  The line is stored in r->ctl (e.g. /net/tcp/666/ctl) */
-               strcpy(listen, r->ctl);
-               p = strrchr(listen, '/');
-               if (p == 0)
-                       return -1;
-               strcpy(p + 1, "listen");
-
-               lcfd = open(listen, O_RDWR);
-               if (lcfd < 0)
-                       return -1;
-               /* at this point, we have a new conversation, and lcfd is its ctl fd.
-                * nfd will be the FD for that conv's data file.  sock_data will trade
-                * our lcfd for the data file fd.  even if it fails, sock_data will
-                * close our lcfd for us.  when it succeeds, it'll open the data file
-                * before closing lcfd, which will keep the converstation alive. */
-               nfd = _sock_data(lcfd, net, r->domain, r->stype, r->protocol, &nr);
-               if (nfd < 0)
-                       return -1;
-
-               /* get remote address */
-               ip = (struct sockaddr_in*)&nr->raddr;
-               _sock_ingetaddr(nr, ip, &n, "remote");
-               if(a){
-                       memmove(a, ip, sizeof(struct sockaddr_in));
-                       *alen = sizeof(struct sockaddr_in);
-               }
-
-               return nfd;
-       case PF_UNIX:
-               if(r->other >= 0){
-                       errno = EINVAL; // was EGREG
-                       return -1;
-               }
-
-               for(;;){
-                       /* read path to new connection */
-                       n = read(fd, name, sizeof(name) - 1);
-                       if(n < 0)
-                               return -1;
-                       if(n == 0)
-                               continue;
-                       name[n] = 0;
-
-                       /* open new connection */
-                       _sock_srvname(file, name);
-                       nfd = open(file, O_RDWR);
-                       if(nfd < 0)
-                               continue;
-
-                       /* confirm opening on new connection */
-                       if(write(nfd, name, strlen(name)) > 0)
-                               break;
-
-                       close(nfd);
-               }
-
-               nr = _sock_newrock(nfd);
-               if(nr == 0){
-                       close(nfd);
-                       return -1;
-               }
-               nr->domain = r->domain;
-               nr->stype = r->stype;
-               nr->protocol = r->protocol;
-
-               return nfd;
-       default:
-               errno = EOPNOTSUPP;
-               return -1;
-       }
-}
diff --git a/user/bsd/bind.c b/user/bsd/bind.c
deleted file mode 100644 (file)
index abcb532..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <signal.h>
-
-/* socket extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-int bind (int fd, __CONST_SOCKADDR_ARG a, socklen_t alen)
-{
-       int n, len, cfd;
-       Rock *r;
-       char msg[128];
-       struct sockaddr_in *lip;
-
-       /* assign the address */
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-       if(alen > sizeof(r->addr)){
-               errno = ENAMETOOLONG;
-               return -1;
-       }
-       memmove(&r->addr, a, alen);
-
-       /* the rest is IP sepecific */
-       if (r->domain != PF_INET)
-               return 0;
-
-       cfd = open(r->ctl, O_RDWR);
-       if(cfd < 0){
-               errno = EBADF;
-               return -1;
-       }
-       lip = (struct sockaddr_in*)&r->addr;
-       if(lip->sin_port > 0)
-               snprintf(msg, sizeof msg, "bind %d", ntohs(lip->sin_port));
-       else
-               strcpy(msg, "bind *");
-       n = write(cfd, msg, strlen(msg));
-       if(n < 0){
-               errno = EOPNOTSUPP;     /* Improve error reporting!!! */
-               close(cfd);
-               return -1;
-       }
-       if(lip->sin_port <= 0)
-               _sock_ingetaddr(r, lip, &len, "local");
-       /* UDP sockets are in headers mode, and need to be announced.  This isn't a
-        * full announce, in that the kernel UDP stack doesn't expect someone to
-        * open the listen file or anything like that. */
-       if ((r->domain == PF_INET) && (r->stype == SOCK_DGRAM)) {
-               n = snprintf(msg, sizeof(msg), "announce *!%d", ntohs(lip->sin_port));
-               n = write(cfd, msg, n);
-               if (n < 0) {
-                       perror("bind-announce failed");
-                       return -1;
-               }
-       }
-       close(cfd);
-       return 0;
-}
diff --git a/user/bsd/connect.c b/user/bsd/connect.c
deleted file mode 100644 (file)
index d9032be..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-int connect (int fd, __CONST_SOCKADDR_ARG a, socklen_t alen)
-{
-       Rock *r;
-       int n, cfd, nfd;
-       char msg[8+256+1], file[8+256+1];
-       struct sockaddr_in *lip, *rip;
-       struct sockaddr_un *runix;
-       static int vers;
-
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-       if(alen > sizeof(r->raddr)){
-               errno = ENAMETOOLONG;
-               return -1;
-       }
-       memmove(&r->raddr, a, alen);
-
-       switch(r->domain){
-       case PF_INET:
-               /* UDP sockets are already announced (during bind), so we can't issue
-                * a connect message.  Either connect or announce, not both.  All sends
-                * will later do a sendto, based off the contents of r->raddr, so we're
-                * already done here */
-               if (r->stype == SOCK_DGRAM)
-                       return 0;
-               /* set up a tcp or udp connection */
-               cfd = open(r->ctl, O_RDWR);
-               if(cfd < 0){
-                       return -1;
-               }
-               /* whatever .. */
-               rip = (void *)a;
-               lip = (struct sockaddr_in*)&r->addr;
-               if(lip->sin_port)
-                       snprintf(msg, sizeof msg, "connect %s!%d%s %d",
-                               inet_ntoa(rip->sin_addr), ntohs(rip->sin_port),
-                               r->reserved ? "!r" : "",
-                               ntohs(lip->sin_port));
-               else
-                       snprintf(msg, sizeof msg, "connect %s!%d%s",
-                               inet_ntoa(rip->sin_addr), ntohs(rip->sin_port),
-                               r->reserved ? "!r" : "");
-               n = write(cfd, msg, strlen(msg));
-               if(n < 0){
-                       close(cfd);
-                       return -1;
-               }
-               close(cfd);
-               return 0;
-       case PF_UNIX:
-               /* null terminate the address */
-               if(alen == sizeof(r->raddr))
-                       alen--;
-               *(((char*)&r->raddr)+alen) = 0;
-
-               if(r->other < 0){
-                       errno = EINVAL; //EGREG;
-                       return -1;
-               }
-
-               /* put far end of our pipe in /srv */
-               snprintf(msg, sizeof msg, "UD.%d.%d", getpid(), vers++);
-               if(_sock_srv(msg, r->other) < 0){
-                       r->other = -1;
-                       return -1;
-               }
-               r->other = -1;
-
-               /* tell server the /srv file to open */
-               runix = (struct sockaddr_un*)&r->raddr;
-               _sock_srvname(file, runix->sun_path);
-               nfd = open(file, O_RDWR);
-               if(nfd < 0){
-                       unlink(msg);
-                       return -1;
-               }
-               if(write(nfd, msg, strlen(msg)) < 0){
-                       close(nfd);
-                       unlink(msg);
-                       return -1;
-               }
-               close(nfd);
-
-               /* wait for server to open it and then remove it */
-               read(fd, file, sizeof(file));
-               _sock_srvname(file, msg);
-               unlink(file);
-               return 0;
-       default:
-               errno = EAFNOSUPPORT;
-               return -1;
-       }
-}
diff --git a/user/bsd/gethostbyaddr.c b/user/bsd/gethostbyaddr.c
deleted file mode 100644 (file)
index 1bec661..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-int h_errno;
-
-struct hostent *gethostbyaddr (__const void *addr, __socklen_t len,
-                              int type)
-{
-       unsigned long a, y;
-       struct in_addr x;
-       __const unsigned char *p = addr;
-
-       if(type != AF_INET || len != 4){
-               h_errno = NO_RECOVERY;
-               return 0;
-       }
-
-       y = (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
-       x.s_addr = htonl(y);
-
-       return gethostbyname(inet_ntoa(x));
-}
diff --git a/user/bsd/gethostbyname.c b/user/bsd/gethostbyname.c
deleted file mode 100644 (file)
index 273bd45..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-int h_errno;
-
-enum
-{
-       Nname= 6,
-};
-
-/*
- *  for inet addresses only
- */
-struct hostent*
-gethostbyname(const char *name)
-{
-       int i, t, fd, m;
-       char *p, *bp;
-       int nn, na;
-       unsigned long x;
-       static struct hostent h;
-       static char buf[1024];
-       static char *nptr[Nname+1];
-       static char *aptr[Nname+1];
-       static char addr[Nname][4];
-
-       h.h_name = 0;
-       t = _sock_ipattr(name);
-
-       /* connect to server */
-       fd = open("/net/cs", O_RDWR);
-       if(fd < 0){
-               h_errno = NO_RECOVERY;
-               return 0;
-       }
-
-       /* construct the query, always expect an ip# back */
-       switch(t){
-       case Tsys:
-               snprintf(buf, sizeof buf, "!sys=%s ip=*", name);
-               break;
-       case Tdom:
-               snprintf(buf, sizeof buf, "!dom=%s ip=*", name);
-               break;
-       case Tip:
-               snprintf(buf, sizeof buf, "!ip=%s", name);
-               break;
-       }
-
-       /* query the server */
-       if(write(fd, buf, strlen(buf)) < 0){
-               h_errno = TRY_AGAIN;
-               return 0;
-       }
-       lseek(fd, 0, 0);
-       for(i = 0; i < sizeof(buf)-1; i += m){
-               m = read(fd, buf+i, sizeof(buf) - 1 - i);
-               if(m <= 0)
-                       break;
-               buf[i+m++] = ' ';
-       }
-       close(fd);
-       buf[i] = 0;
-
-       /* parse the reply */
-       nn = na = 0;
-       for(bp = buf;;){
-               p = strchr(bp, '=');
-               if(p == 0)
-                       break;
-               *p++ = 0;
-               if(strcmp(bp, "dom") == 0){
-                       if(h.h_name == 0)
-                               h.h_name = p;
-                       if(nn < Nname)
-                               nptr[nn++] = p;
-               } else if(strcmp(bp, "sys") == 0){
-                       if(nn < Nname)
-                               nptr[nn++] = p;
-               } else if(strcmp(bp, "ip") == 0){
-                       x = inet_addr(p);
-                       x = ntohl(x);
-                       if(na < Nname){
-                               addr[na][0] = x>>24;
-                               addr[na][1] = x>>16;
-                               addr[na][2] = x>>8;
-                               addr[na][3] = x;
-                               aptr[na] = addr[na];
-                               na++;
-                       }
-               }
-               while(*p && *p != ' ')
-                       p++;
-               if(*p)
-                       *p++ = 0;
-               bp = p;
-       }
-       if(nn+na == 0){
-               h_errno = HOST_NOT_FOUND;
-               return 0;
-       }
-
-       nptr[nn] = 0;
-       aptr[na] = 0;
-       h.h_aliases = nptr;
-       h.h_addr_list = aptr;
-       h.h_length = 4;
-       h.h_addrtype = AF_INET;
-       if(h.h_name == 0)
-               h.h_name = nptr[0];
-       if(h.h_name == 0)
-               h.h_name = aptr[0];
-
-       return &h;
-}
diff --git a/user/bsd/gethostname.c b/user/bsd/gethostname.c
deleted file mode 100644 (file)
index 75ec4ba..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-
-#include "priv.h"
-
-int
-gethostname(char *name, size_t namelen)
-{
-       int n, fd;
-       char buf[128];
-
-       fd = open("/dev/sysname", O_RDONLY);
-       if(fd < 0)
-               return -1;
-       n = read(fd, buf, sizeof(buf)-1);
-       close(fd);
-       if(n <= 0)
-               return -1;
-       buf[n] = 0;
-       strncpy(name, buf, namelen);
-       name[namelen-1] = 0;
-       return 0;
-}
diff --git a/user/bsd/getpeername.c b/user/bsd/getpeername.c
deleted file mode 100644 (file)
index 3e628bd..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-int getpeername (int fd, __SOCKADDR_ARG addr,
-                       socklen_t *__restrict alen)
-{
-       Rock *r;
-       int i;
-       struct sockaddr_in *rip;
-       struct sockaddr_un *runix;
-
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-
-       switch(r->domain){
-       case PF_INET:
-               rip = (struct sockaddr_in*)&r->raddr;
-               memmove(addr, rip, sizeof(struct sockaddr_in));
-               *alen = sizeof(struct sockaddr_in);
-               break;
-       case PF_UNIX:
-               runix = (struct sockaddr_un*)&r->raddr;
-               i = &runix->sun_path[strlen(runix->sun_path)] - (char*)runix;
-               memmove(addr, runix, i);
-               *alen = i;
-               break;
-       default:
-               errno = EAFNOSUPPORT;
-               return -1;
-       }
-       return 0;
-}
diff --git a/user/bsd/getprotobyname.c b/user/bsd/getprotobyname.c
deleted file mode 100644 (file)
index c208458..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#include "priv.h"
-
-extern int h_errno;
-
-enum
-{
-       Nname= 6,
-};
-
-static struct protoent r;
-
-struct protoent *getprotobyname(const char *name) {
-       int fd, i, m;
-       char *p, *bp;
-       int nn, na;
-       unsigned long x;
-       static char buf[1024], proto[1024];
-       static char *nptr[Nname+1];
-
-       /* connect to server */
-       fd = open("/net/cs", O_RDWR);
-       if(fd < 0){
-               h_errno = NO_RECOVERY;
-               return 0;
-       }
-
-       /* construct the query, always expect a protocol# back */
-       snprintf(buf, sizeof buf, "!protocol=%s ipv4proto=*", name);
-
-       /* query the server */
-       if(write(fd, buf, strlen(buf)) < 0){
-               h_errno = TRY_AGAIN;
-               return 0;
-       }
-       lseek(fd, 0, 0);
-       for(i = 0; i < sizeof(buf)-1; i += m){
-               m = read(fd, buf+i, sizeof(buf) - 1 - i);
-               if(m <= 0)
-                       break;
-               buf[i+m++] = ' ';
-       }
-       close(fd);
-       buf[i] = 0;
-
-       /* parse the reply */
-       nn = na = 0;
-       for(bp = buf;;){
-               p = strchr(bp, '=');
-               if(p == 0)
-                       break;
-               *p++ = 0;
-               if(strcmp(bp, "protocol") == 0){
-                       if(!nn)
-                               r.p_name = p;
-                       if(nn < Nname)
-                               nptr[nn++] = p;
-               } else if(strcmp(bp, "ipv4proto") == 0){
-                       r.p_proto = atoi(p);
-                       na++;
-               }
-               while(*p && *p != ' ')
-                       p++;
-               if(*p)
-                       *p++ = 0;
-               bp = p;
-       }
-       nptr[nn] = 0;
-       r.p_aliases = nptr;
-       if (nn+na == 0)
-               return 0;
-
-       return &r;
-}
diff --git a/user/bsd/getservbyaddr.c b/user/bsd/getservbyaddr.c
deleted file mode 100644 (file)
index d213e85..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <arpa/inet.h>
-
-#include "priv.h"
-
-struct servent *getservbyport (int port, __const char *proto)
-{
-       char buf[32];
-
-       snprintf(buf, sizeof buf, "%d", port);
-       return getservbyname(buf, proto);
-}
diff --git a/user/bsd/getservbyname.c b/user/bsd/getservbyname.c
deleted file mode 100644 (file)
index 6525486..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#include "priv.h"
-
-enum
-{
-       Nname= 6,
-};
-
-/*
- *  for inet addresses only
- */
-struct servent*
-getservbyname(const char *name, const char *proto)
-{
-       int i, fd, m, num;
-       char *p;
-       char *bp;
-       int nn, na;
-       static struct servent s;
-       static char buf[1024];
-       static char *nptr[Nname+1];
-
-       num = 1;
-       for(p = (char *)name; *p; p++)
-               if(!isdigit(*p))
-                       num = 0;
-
-       s.s_name = 0;
-
-       /* connect to server */
-       fd = open("/net/cs", O_RDWR);
-       if(fd < 0){
-               return 0;
-       }
-
-       /* construct the query, always expect an ip# back */
-       if(num)
-               snprintf(buf, sizeof buf, "!port=%s %s=*", name, proto);
-       else
-               snprintf(buf, sizeof buf, "!%s=%s port=*", proto, name);
-
-       /* query the server */
-       if(write(fd, buf, strlen(buf)) < 0){
-               return 0;
-       }
-       lseek(fd, 0, 0);
-       for(i = 0; i < sizeof(buf)-1; i += m){
-               m = read(fd, buf+i, sizeof(buf) - 1 - i);
-               if(m <= 0)
-                       break;
-               buf[i+m++] = ' ';
-       }
-       close(fd);
-       buf[i] = 0;
-
-       /* parse the reply */
-       nn = na = 0;
-       for(bp = buf;;){
-               p = strchr(bp, '=');
-               if(p == 0)
-                       break;
-               *p++ = 0;
-               if(strcmp(bp, proto) == 0){
-                       if(nn < Nname)
-                               nptr[nn++] = p;
-               } else if(strcmp(bp, "port") == 0){
-                       s.s_port = htons(atoi(p));
-               }
-               while(*p && *p != ' ')
-                       p++;
-               if(*p)
-                       *p++ = 0;
-               bp = p;
-       }
-       if(nn+na == 0)
-               return 0;
-
-       nptr[nn] = 0;
-       s.s_aliases = nptr;
-       if(s.s_name == 0)
-               s.s_name = nptr[0];
-
-       return &s;
-}
diff --git a/user/bsd/getsockname.c b/user/bsd/getsockname.c
deleted file mode 100644 (file)
index b067126..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-int getsockname (int fd, __SOCKADDR_ARG addr,
-                socklen_t *__restrict alen)
-{
-       Rock *r;
-       int i;
-       struct sockaddr_in *lip;
-       struct sockaddr_un *lunix;
-
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-
-       switch(r->domain){
-       case PF_INET:
-               lip = (struct sockaddr_in*)addr;
-               _sock_ingetaddr(r, lip, alen, "local");
-               break;
-       case PF_UNIX:
-               lunix = (struct sockaddr_un*)&r->addr;
-               i = &lunix->sun_path[strlen(lunix->sun_path)] - (char*)lunix;
-               memmove(addr, lunix, i);
-               *alen = i;
-               break;
-       default:
-               errno = EAFNOSUPPORT;
-               return -1;
-       }
-       return 0;
-}
diff --git a/user/bsd/listen.c b/user/bsd/listen.c
deleted file mode 100644 (file)
index f687446..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <signal.h>
-
-/* socket extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-
-#include "priv.h"
-
-int
-listen(fd, backlog)
-       int fd;
-       int backlog;
-{
-       Rock *r;
-       int n, cfd;
-       char msg[128];
-       struct sockaddr_in *lip;
-       struct sockaddr_un *lunix;
-
-       r = _sock_findrock(fd, 0);
-       if(r == 0){
-               errno = ENOTSOCK;
-               return -1;
-       }
-
-       switch(r->domain){
-       case PF_INET:
-               cfd = open(r->ctl, O_RDWR);
-               if(cfd < 0){
-                       errno = EBADF;
-                       return -1;
-               }
-               lip = (struct sockaddr_in*)&r->addr;
-               if(lip->sin_port >= 0) {
-                       if(write(cfd, "bind 0", 6) < 0) {
-                               errno = EINVAL; //EGREG;
-                               close(cfd);
-                               return -1;
-                       }
-                       snprintf(msg, sizeof msg, "announce %d",
-                               ntohs(lip->sin_port));
-               }
-               else
-                       strcpy(msg, "announce *");
-               n = write(cfd, msg, strlen(msg));
-               if(n < 0){
-                       errno = EOPNOTSUPP;     /* Improve error reporting!!! */
-                       close(cfd);
-                       return -1;
-               }
-               close(cfd);
-
-               return 0;
-
-       case PF_UNIX:
-               if(r->other < 0){
-                       errno = EINVAL;//EGREG;
-                       return -1;
-               }
-               lunix = (struct sockaddr_un*)&r->addr;
-               if(_sock_srv(lunix->sun_path, r->other) < 0){
-                       r->other = -1;
-                       return -1;
-               }
-               r->other = -1;
-               return 0;
-       default:
-               errno = EAFNOSUPPORT;
-               return -1;
-       }
-}
diff --git a/user/bsd/nptohl.c b/user/bsd/nptohl.c
deleted file mode 100644 (file)
index 08b3fa8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#include "priv.h"
-
-unsigned long
-nptohl(void *p)
-{
-       unsigned char *up;
-       unsigned long x;
-
-       up = p;
-       x = (up[0]<<24)|(up[1]<<16)|(up[2]<<8)|up[3];
-       return x;
-}
diff --git a/user/bsd/priv.h b/user/bsd/priv.h
deleted file mode 100644 (file)
index f4cef3a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#ifndef BSD_PRIV_H
-#define BSD_PRIV_H
-
-#include <parlib.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netdb.h>
-
-__BEGIN_DECLS
-
-typedef struct Rock Rock;
-
-enum
-{
-       Ctlsize=        128,
-
-       /* states */
-       Sopen=  0,
-       Sbound,
-       Sconnected,
-
-       /* types of name */
-       Tsys=   0,
-       Tip,
-       Tdom,
-};
-
-/*
- *  since BSD programs expect to perform both control and data functions
- *  through a single fd, we need to hide enough info under a rock to
- *  be able to open the control file when we need it.
- */
-struct Rock
-{
-       Rock            *next;
-       unsigned long   dev;            /* inode & dev of data file */
-       unsigned long   inode;          /* ... */
-       int             domain;         /* from socket call */
-       int             stype;          /* ... */
-       int             protocol;       /* ... */
-       struct sockaddr addr;           /* address from bind */
-       int             reserved;       /* use a priveledged port # (< 1024) */
-       struct sockaddr raddr;          /* peer address */
-       char            ctl[Ctlsize];   /* name of control file (if any) */
-       int             other;          /* fd of the remote end for Unix domain */
-};
-
-extern Rock*   _sock_findrock(int, struct stat*);
-extern Rock*   _sock_newrock(int);
-extern void    _sock_srvname(char*, char*);
-extern int     _sock_srv(char*, int);
-extern int     _sock_data(int, char*, int, int, int, Rock**);
-extern int     _sock_ipattr(const char*);
-extern void    _sock_ingetaddr(Rock*, struct sockaddr_in*, int*, char*);
-
-extern void    _syserrno(void);
-
-__END_DECLS
-
-#endif /* BSD_PRIV_H */
diff --git a/user/bsd/send.c b/user/bsd/send.c
deleted file mode 100644 (file)
index 62f766f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include<arpa/inet.h>
-
-#include "priv.h"
-
-ssize_t send (int fd, __const void *a, size_t n, int flags)
-{
-       return sendto(fd, a, n, flags, 0, 0);
-}
-
-ssize_t recv(int fd, void *a, size_t n, int flags)
-{
-       socklen_t dummy;
-       return recvfrom(fd, a, n, flags, 0, &dummy);
-}
diff --git a/user/bsd/sendto.c b/user/bsd/sendto.c
deleted file mode 100644 (file)
index ab0fab2..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include "priv.h"
-
-/* The plan9 UDP header looks like:
- *
- * 52 bytes
- *             raddr (16 b)
- *             laddr (16 b)
- *             IFC addr (ignored if user says it)  (16 b)
- *             rport (2 b) (network ordering)
- *             lport (ignored if user says it) (2b)
- *
- * The v4 addr format is 10 bytes of 0s, then two 0xff, then 4 bytes of addr. */
-
-#define P9_UDP_HDR_SZ 52
-/* Takes network-byte ordered IPv4 addr and writes it into buf, in the plan 9 IP
- * addr format */
-static void naddr_to_plan9addr(uint32_t sin_addr, uint8_t *buf)
-{
-       uint8_t *sin_bytes = (uint8_t*)&sin_addr;
-       memset(buf, 0, 10);
-       buf += 10;
-       buf[0] = 0xff;
-       buf[1] = 0xff;
-       buf += 2;
-       buf[0] = sin_bytes[0];  /* e.g. 192 */
-       buf[1] = sin_bytes[1];  /* e.g. 168 */
-       buf[2] = sin_bytes[2];  /* e.g.   0 */
-       buf[3] = sin_bytes[3];  /* e.g.   1 */
-}
-
-/* does v4 only */
-static uint32_t plan9addr_to_naddr(uint8_t *buf)
-{
-       buf += 12;
-       return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | (buf[0] << 0);
-}
-
-/* Returns a rock* if the socket exists and is UDP */
-static Rock *udp_sock_get_rock(int fd)
-{
-       Rock *r = _sock_findrock(fd, 0);
-       if (!r) {
-               errno = ENOTSOCK;
-               return 0;
-       }
-       if ((r->domain == PF_INET) && (r->stype == SOCK_DGRAM))
-               return r;
-       else
-               return 0;
-}
-
-ssize_t sendto (int fd, __const void *a, size_t n,
-                       int flags, __CONST_SOCKADDR_ARG to,
-                       socklen_t tolen)
-{
-       Rock *r;
-       if (flags & MSG_OOB) {
-               errno = EOPNOTSUPP;
-               return -1;
-       }
-       /* UDP sockets need to have headers added to the payload for all packets,
-        * since we're supporting blind sendto/recvfrom. */
-       if ((r = udp_sock_get_rock(fd))) {
-               int ret;
-               uint32_t remote_addr;
-               uint16_t remote_port;
-               char *p, *newbuf;
-               /* Might not have a to if we were called from send() */
-               if (!to) {
-                       /* if they didn't connect yet, then there's no telling what raddr
-                        * will be.  TODO: check a state flag or something? */
-                       to = (struct sockaddr*)(&r->raddr);
-               }
-               remote_addr = ((struct sockaddr_in*)to)->sin_addr.s_addr;
-               remote_port = ((struct sockaddr_in*)to)->sin_port;
-               newbuf = malloc(n + P9_UDP_HDR_SZ);
-               if (!newbuf) {
-                       errno = ENOMEM;
-                       return -1;
-               }
-               p = newbuf;
-               naddr_to_plan9addr(remote_addr, p);
-               p += 16;
-               /* we don't need to specify an address.  if we don't specify a valid
-                * local IP addr, the kernel will pick the one closest to dest */
-               p += 16;
-               p += 16; /* skip ipifc */
-               *(uint16_t*)p = remote_port;
-               p += 2;
-               p += 2; /* skip local port */
-               memcpy(p, a, n);
-               ret = write(fd, newbuf, n + P9_UDP_HDR_SZ);
-               free(newbuf);
-               if (ret < 0)
-                       return -1;
-               return ret - P9_UDP_HDR_SZ;
-       }
-       return write(fd, a, n);
-}
-
-ssize_t recvfrom (int fd, void *__restrict a, size_t n,
-                         int flags, __SOCKADDR_ARG from,
-                         socklen_t *__restrict fromlen)
-{
-       Rock *r;
-       if (flags & MSG_OOB) {
-               errno = EOPNOTSUPP;
-               return -1;
-       }
-       if (from && getsockname(fd, from, fromlen) < 0)
-               return -1;
-       /* UDP sockets need to have headers added to the payload for all packets,
-        * since we're supporting blind sendto/recvfrom. */
-       if ((r = udp_sock_get_rock(fd))) {
-               int ret;
-               struct sockaddr_in *remote = (struct sockaddr_in*)from;
-               char *p, *newbuf = malloc(n + P9_UDP_HDR_SZ);
-               if (!newbuf) {
-                       errno = ENOMEM;
-                       return -1;
-               }
-               ret = read(fd, newbuf, n + P9_UDP_HDR_SZ);
-               /* subtracting before, so that we error out if we got less than the
-                * headers needed */
-               ret -= P9_UDP_HDR_SZ;
-               if (ret < 0) {
-                       free(newbuf);
-                       return -1;
-               }
-               memcpy(a, newbuf + P9_UDP_HDR_SZ, n);
-               /* Might not have a remote, if we were called via recv().  Could assert
-                * that it's the same remote that we think we connected to, and that we
-                * were already connected. (TODO) */
-               if (remote) {
-                       p = newbuf;
-                       remote->sin_addr.s_addr = plan9addr_to_naddr(p);
-                       p += 16;
-                       p += 16;        /* skip local addr */
-                       p += 16;        /* skip ipifc */
-                       remote->sin_port = (p[0] << 0) | (p[1] << 8);
-                       remote->sin_port = *(uint16_t*)p;
-                       *fromlen = sizeof(struct sockaddr_in);
-               }
-               free(newbuf);
-               return ret;
-       }
-       return read(fd, a, n);
-}
diff --git a/user/bsd/shutdown.c b/user/bsd/shutdown.c
deleted file mode 100644 (file)
index ecb9f31..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "priv.h"
-
-int
-shutdown(int fd, int how)
-{
-       /* plan 9 doesn't do a shutdown.  if you shut it down, it's now closed. */
-       close(fd);
-       return 0;
-}
diff --git a/user/bsd/socket.c b/user/bsd/socket.c
deleted file mode 100644 (file)
index dd6e4bd..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include "priv.h"
-
-Rock *_sock_rock;
-
-Rock*
-_sock_findrock(int fd, struct stat *dp)
-{
-       Rock *r;
-       struct stat d;
-
-       if(dp == 0)
-               dp = &d;
-       fstat(fd, dp);
-       for(r = _sock_rock; r; r = r->next){
-               if(r->inode == dp->st_ino
-               && r->dev == dp->st_dev)
-                       break;
-       }
-       return r;
-}
-
-Rock*
-_sock_newrock(int fd)
-{
-       Rock *r;
-       struct stat d;
-
-       r = _sock_findrock(fd, &d);
-       if(r == 0){
-               r = malloc(sizeof(Rock));
-               if(r == 0)
-                       return 0;
-               r->dev = d.st_dev;
-               r->inode = d.st_ino;
-               r->other = -1;
-               /* TODO: this is not thread-safe! */
-               r->next = _sock_rock;
-               _sock_rock = r;
-       }
-       memset(&r->raddr, 0, sizeof(r->raddr));
-       memset(&r->addr, 0, sizeof(r->addr));
-       r->reserved = 0;
-       r->dev = d.st_dev;
-       r->inode = d.st_ino;
-       r->other = -1;
-       return r;
-}
-
-/* For a ctlfd and a few other settings, it opens and returns the corresponding
- * datafd.  This will close cfd for you. */
-int
-_sock_data(int cfd, char *net, int domain, int stype, int protocol, Rock **rp)
-{
-       int n, fd;
-       Rock *r;
-       char name[Ctlsize];
-
-       /* get the data file name */
-       n = read(cfd, name, sizeof(name)-1);
-       if(n < 0){
-               close(cfd);
-               errno = ENOBUFS;
-               return -1;
-       }
-       name[n] = 0;
-       n = strtoul(name, 0, 0);
-       snprintf(name, sizeof name, "/net/%s/%d/data", net, n);
-
-       /* open data file */
-       fd = open(name, O_RDWR);
-       close(cfd); /* close this no matter what */
-       if(fd < 0){
-               errno = ENOBUFS;
-               return -1;
-       }
-
-       /* hide stuff under the rock */
-       snprintf(name, sizeof name, "/net/%s/%d/ctl", net, n);
-       r = _sock_newrock(fd);
-       if(r == 0){
-               errno = ENOBUFS;
-               close(fd);
-               return -1;
-       }
-       if(rp)
-               *rp = r;
-       memset(&r->raddr, 0, sizeof(r->raddr));
-       memset(&r->addr, 0, sizeof(r->addr));
-       r->domain = domain;
-       r->stype = stype;
-       r->protocol = protocol;
-       strcpy(r->ctl, name);
-       return fd;
-}
-
-int
-socket(int domain, int stype, int protocol)
-{
-       Rock *r;
-       int cfd, fd, n;
-       int pfd[2];
-       char *net;
-       char msg[128];
-
-       switch(domain){
-       case PF_INET:
-               /* get a free network directory */
-               switch(stype){
-               case SOCK_DGRAM:
-                       net = "udp";
-                       cfd = open("/net/udp/clone", O_RDWR);
-                       /* All BSD UDP sockets are in 'headers' mode, where each packet has
-                        * the remote addr:port, local addr:port and other info. */
-                       if (!(cfd < 0)) {
-                               n = snprintf(msg, sizeof(msg), "headers");
-                               n = write(cfd, msg, n);
-                               if (n < 0) {
-                                       perror("UDP socket headers failed");
-                                       return -1;
-                               }
-                       }
-                       break;
-               case SOCK_STREAM:
-                       net = "tcp";
-                       cfd = open("/net/tcp/clone", O_RDWR);
-                       break;
-               default:
-                       errno = EPROTONOSUPPORT;
-                       return -1;
-               }
-               if(cfd < 0){
-                       return -1;
-               }
-               return _sock_data(cfd, net, domain, stype, protocol, 0);
-       case PF_UNIX:
-               if(pipe(pfd) < 0){
-                       return -1;
-               }
-               r = _sock_newrock(pfd[0]);
-               r->domain = domain;
-               r->stype = stype;
-               r->protocol = protocol;
-               r->other = pfd[1];
-               return pfd[0];
-       default:
-               errno = EPROTONOSUPPORT;
-               return -1;
-       }
-}
-
-int
-issocket(int fd)
-{
-       Rock *r;
-
-       r = _sock_findrock(fd, 0);
-       return (r != 0);
-}
-
-/*
- * probably should do better than this
- */
-int getsockopt (int __fd, int __level, int __optname,
-                      void *__restrict __optval,
-                      socklen_t *__restrict __optlen)
-{
-       return -1;
-}
-
-int setsockopt (int __fd, int __level, int __optname,
-                      __const void *__optval, socklen_t __optlen)
-{
-       return 0;
-}
-
diff --git a/user/bsd/socketpair.c b/user/bsd/socketpair.c
deleted file mode 100644 (file)
index 946c9f5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-/* posix */
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-
-/* bsd extensions */
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include "priv.h"
-
-int
-socketpair(int domain, int type, int protocol, int *sv)
-{
-       switch(domain){
-       case PF_UNIX:
-               return pipe(sv);
-       default:
-               errno = EOPNOTSUPP;
-               return -1;
-       }
-}
index dff6902..2663ab1 100644 (file)
@@ -10,7 +10,7 @@ SRCDIR :=
 OBJDIR := $(SRCDIR)obj
 INCDIR = $(SRCDIR)include
 
-LDLIBS := -lpthread -lbenchutil -lm -liplib -lndb -lbsd
+LDLIBS := -lpthread -lbenchutil -lm -liplib -lndb
 
 uc = $(shell echo $(1) | tr a-z A-Z)