]> p2p-next.cs.pub.ro Git - swifty.git/commitdiff
raw: Remove sw_shutdown "syscall".
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 14:32:59 +0000 (17:32 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 14:33:05 +0000 (17:33 +0300)
Shutdown is meaningless on connectionless sockets such as swift sockets.

src/raw/swift_list.c
src/raw/swift_list.h
src/raw/swift_raw.c
src/raw/swift_raw.h
src/raw/test/Makefile
src/raw/test/test.c
src/raw/test/test_sw.h
src/raw/test/test_sw_shutdown.c [deleted file]

index c177366b04371aafabb16a81e32f6ef9cdc6cdf9..1a46e6fa526aadb015a1e5354037e044928fcb7e 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "swift_types.h"
 #include "swift_list.h"
+
 /*
  * Add new socket to list. Called by sw_socket "syscall".
  */
index c6da104d7e4ce537f992c4be18651a8d31eff1da..62d547ca08541eb1fb74249e93eea488fb93a393 100644 (file)
@@ -2,13 +2,6 @@
 
 #define __SOCK_LIST
 
-enum sock_rw_state {
-       STATE_NO_SHUT,
-       STATE_SHUT_RD,
-       STATE_SHUT_WR,
-       STATE_SHUT_RDWR
-};
-
 enum sock_bind_state {
        STATE_NOTBOUND,
        STATE_BOUND
@@ -18,7 +11,6 @@ enum sock_bind_state {
 struct sock_list {
        int s;
        struct sockaddr_sw addr;
-       enum sock_rw_state rw_state;
        enum sock_bind_state bind_state;
        struct sock_list *next;
        struct sock_list *prev;
index def68bb2c8a2a42e66af3f7bcad2786396523d76..937c62d7d4928739264f63131ac0ff5ac3c07e37 100644 (file)
@@ -54,9 +54,6 @@ int sw_socket(int __domain, int __type, int __protocol)
                goto list_add_err;
        }
 
-       /* Socket is fully open. */
-       list->rw_state = STATE_NO_SHUT;
-
        /* Socket is not bound. */
        list->bind_state = STATE_NOTBOUND;
 
@@ -150,10 +147,6 @@ ssize_t sw_sendto(int __fd, __const void *__buf, size_t __n,
                goto sock_err;
        }
 
-       if (list->rw_state == STATE_SHUT_WR || list->rw_state == STATE_SHUT_RDWR) {
-               errno = ENOTCONN;
-               goto sock_err;  
-       }
 /*
        if (list->state == STATE_NOBOUND) {
                errno = EDESTADDRREQ;
@@ -248,7 +241,6 @@ int sw_getsockopt(int __fd, int __level, int __optname,
  * to *OPTVAL (which is OPTLEN bytes long).
  * Returns 0 on success, -1 for errors.
  */
-
 int sw_setsockopt(int __fd, int __level, int __optname,
                       __const void *__optval, socklen_t __optlen)
 {
@@ -256,64 +248,6 @@ int sw_setsockopt(int __fd, int __level, int __optname,
        return setsockopt(__fd, __level, __optname, __optval, __optlen);
 }
 
-/*
- * Shut down all or part of the connection open on socket FD.
- * HOW determines what to shut down:
- *   SHUT_RD   = No more receptions;
- *   SHUT_WR   = No more transmissions;
- *   SHUT_RDWR = No more receptions or transmissions.
- * Returns 0 on success, -1 for errors.
- */
-int sw_shutdown(int __fd, int __how)
-{
-       struct sock_list *list;
-       int rc;
-
-       /* Find socket in management structure. */
-       list = list_elem_from_socket(__fd);
-       if (list == NULL) {
-               errno = EBADF;
-               goto list_elem_err;
-       }
-
-       /* Check and update socket state. */
-       if (__how == STATE_SHUT_RDWR)
-               list->rw_state = STATE_SHUT_RDWR;
-       else if (__how == STATE_SHUT_WR) {
-               if (list->rw_state == STATE_SHUT_RD)
-                       list->rw_state = STATE_SHUT_RDWR;
-               else if (list->rw_state == STATE_SHUT_WR) {
-                       errno = ENOTCONN;
-                       goto not_conn_err;
-               }
-       }
-       else if (__how == STATE_SHUT_RD) {
-               if (list->rw_state == STATE_SHUT_WR)
-                       list->rw_state = STATE_SHUT_RDWR;
-               else if (list->rw_state == STATE_SHUT_RD) {
-                       errno = ENOTCONN;
-                       goto not_conn_err;
-               }
-       }
-
-       /* Remove socket from socket management structure. */
-       if (list->rw_state == STATE_SHUT_RDWR) {
-               rc = list_remove_socket(__fd);
-               if (rc < 0) {
-                       errno = EBADF;
-                       goto list_unlink_err;
-               }
-       }
-
-       /* Call classical interface of shutdown(2). */
-       return shutdown(__fd, __how);
-
-not_conn_err:
-list_elem_err:
-list_unlink_err:
-       return -1;
-}
-
 /*
  * Close file descriptor for socket FD.
  * Returns 0 on success, -1 for errors.
index fd83ac2ebff5417b8b08da556216cb6bc3b0a84b..7dd4b6fa57a749151a8e2159a8d0b8ceed9736cd 100644 (file)
@@ -106,16 +106,6 @@ extern int sw_getsockopt (int __fd, int __level, int __optname,
 extern int sw_setsockopt (int __fd, int __level, int __optname,
                       __const void *__optval, socklen_t __optlen) __THROW;
 
-/*
- * Shut down all or part of the connection open on socket FD.
- * HOW determines what to shut down:
- *   SHUT_RD   = No more receptions;
- *   SHUT_WR   = No more transmissions;
- *   SHUT_RDWR = No more receptions or transmissions.
- * Returns 0 on success, -1 for errors.
- */
-extern int sw_shutdown (int __fd, int __how) __THROW;
-
 /*
  * Close file descriptor for socket FD.
  * Returns 0 on success, -1 for errors.
index 6137f0ac1c9f3e1392d03d5345871849d22b03a8..03657b00cdea93a2abf63fb6811ced651249f870 100644 (file)
@@ -6,9 +6,10 @@ CFLAGS = -Wall -g
 all: test
 
 test: test.o test_sw_socket.o test_sw_bind.o test_sw_getsockname.o \
-       test_sw_getsockopt.o test_sw_sendto.o test_sw_recvfrom.o test_sw_sendmsg.o \
-       test_sw_recvmsg.o test_sw_setsockopt.o test_sw_getsockopt.o \
-       test_sw_shutdown.o test_sw_close.o test_dummy.o
+       test_sw_sendto.o test_sw_recvfrom.o \
+       test_sw_sendmsg.o test_sw_recvmsg.o \
+       test_sw_setsockopt.o test_sw_getsockopt.o \
+       test_sw_close.o test_dummy.o
 
 clean:
        -rm -f *~ *.o
index df5bafbab677d9525db5653a8e04583c161a7212..5676b236a7a711fb47fe1e67bd99bec9b2fa13c1 100644 (file)
@@ -22,7 +22,6 @@ static void (*test_fun_array[])(void) = {
        recvfrom_test_suite,
        sendmsg_test_suite,
        recvmsg_test_suite,
-       shutdown_test_suite,
        close_test_suite,
 };
 
index c47f2786ee3ac67a28c318d983124aacde37dd31..4ce1fb165a85fc6cfeaf99a2166a019da22b8270 100644 (file)
@@ -18,11 +18,8 @@ void sendto_test_suite(void);
 void recvfrom_test_suite(void);
 void sendmsg_test_suite(void);
 void recvmsg_test_suite(void);
-void shutdown_test_suite(void);
 void close_test_suite(void);
 
-/* TODO: fill with test function headers. */
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/raw/test/test_sw_shutdown.c b/src/raw/test/test_sw_shutdown.c
deleted file mode 100644 (file)
index 93df05a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Test sw_shutdown "syscall".
- */
-
-#include "test_sw.h"
-#include "test.h"
-
-static void shutdown_dummy(void);
-
-void shutdown_test_suite(void)
-{
-       start_suite();
-       shutdown_dummy();
-}
-
-static void shutdown_dummy(void) 
-{
-       test(1 == 1);
-}