before carry to arpavax
[unix-history] / usr / src / sys / kern / uipc_syscalls.c
index 592771a..dc86e9e 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_syscalls.c 4.5     81/11/20        */
+/*     uipc_syscalls.c 4.9     81/11/26        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -12,8 +12,8 @@
 #include "../h/protosw.h"
 #include "../h/socket.h"
 #include "../h/socketvar.h"
 #include "../h/protosw.h"
 #include "../h/socket.h"
 #include "../h/socketvar.h"
-#include "../net/inet.h"
-#include "../net/inet_systm.h"
+#include "../net/in.h"
+#include "../net/in_systm.h"
 
 /*
  * Socket system call interface.
 
 /*
  * Socket system call interface.
@@ -57,7 +57,7 @@ COUNT(SPIPE);
        wf->f_socket = wso;
        u.u_r.r_val2 = u.u_r.r_val1;
        u.u_r.r_val1 = r;
        wf->f_socket = wso;
        u.u_r.r_val2 = u.u_r.r_val1;
        u.u_r.r_val1 = r;
-       if (piconnect(rso, wso) == 0)
+       if (piconnect(wso, rso) == 0)
                goto free4;
        return;
 free4:
                goto free4;
        return;
 free4:
@@ -352,3 +352,29 @@ COUNT(SRECEIVE);
        if (uap->asa)
                (void) copyout((caddr_t)&sa, (caddr_t)uap->asa, sizeof (sa));
 }
        if (uap->asa)
                (void) copyout((caddr_t)&sa, (caddr_t)uap->asa, sizeof (sa));
 }
+
+/*
+ * Get socket address.
+ */
+ssocketaddr()
+{
+       register struct a {
+               int     fdes;
+               struct  sockaddr *asa;
+       } *uap = (struct a *)u.u_ap;
+       register struct file *fp;
+COUNT(SSOCKETADDR);
+
+       fp = getf(uap->fdes);
+       if (fp == 0)
+               return;
+       if ((fp->f_flag & FSOCKET) == 0) {
+               u.u_error = ENOTSOCK;
+               return;
+       }
+       if (copyout((caddr_t)&fp->f_socket->so_addr, (caddr_t)uap->asa, 
+           sizeof (struct sockaddr))) {
+               u.u_error = EFAULT;
+               return;
+       }
+}