changeset 398:a3b06a9328a7

Fix getsocknemt(), add <sys/uio.h>
author gthomas
date Sun, 03 Nov 2002 19:49:43 +0000
parents 9fc33f5be435
children e997e6708ee7
files packages/net/bsd_tcpip/current/ChangeLog packages/net/bsd_tcpip/current/include/sys/uio.h packages/net/bsd_tcpip/current/src/sys/kern/sockio.c
diffstat 3 files changed, 75 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/packages/net/bsd_tcpip/current/ChangeLog
+++ b/packages/net/bsd_tcpip/current/ChangeLog
@@ -1,3 +1,10 @@
+2002-11-03  Gary Thomas  <gthomas@ecoscentric.com>
+
+	* src/sys/kern/sockio.c (bsd_getname): Fix error where getsockname()
+	was actually performing getpeername().
+
+	* include/sys/uio.h: New file - compatability wrapper.
+
 2002-07-31  Gary Thomas  <gary@chez-thomas.org>
 
 	* src/sys/netinet/in_cksum.c: Fix problem on big endian machines.
new file mode 100644
--- /dev/null
+++ b/packages/net/bsd_tcpip/current/include/sys/uio.h
@@ -0,0 +1,67 @@
+//==========================================================================
+//
+//      net/sys/uio.h
+//
+//      Compatability wrapper for <sys/uio.h>
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2002 Gary Thomas
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2002-11-03
+// Purpose:      
+// Description:  
+//              
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#ifndef _CYGONCE_SYS_UIO_H_
+#define _CYGONCE_SYS_UIO_H_
+
+#include <pkgconf/io_fileio.h>   // IOVEC_MAX
+#include <cyg/io/file.h>         // Definition of 'struct iovec'
+
+#define UIO_MAXIOV	CYGNUM_FILEIO_IOVEC_MAX
+
+// Function prototypes
+__externC ssize_t readv(int fd, const struct iovec *iov, int iov_len);
+__externC ssize_t writev(int fd, const struct iovec *iov, int iov_len);
+
+#endif // _CYGONCE_SYS_UIO_H_
--- a/packages/net/bsd_tcpip/current/src/sys/kern/sockio.c
+++ b/packages/net/bsd_tcpip/current/src/sys/kern/sockio.c
@@ -467,7 +467,6 @@ bsd_getname(cyg_file *fp, sockaddr *asa,
     struct socket *so;
     socklen_t len = 0;
     int error;
-    int type = peer ? PRU_PEERADDR : PRU_SOCKADDR;
     sockaddr *sa;
     
     if( alen != NULL)
@@ -475,7 +474,7 @@ bsd_getname(cyg_file *fp, sockaddr *asa,
         
     so = (struct socket *)fp->f_data;
     sa = 0;
-    if (type) {
+    if (peer) {
         // getpeername()
 	if ((so->so_state & (SS_ISCONNECTED|SS_ISCONFIRMING)) == 0) {
             return (ENOTCONN);