raw: Fill sw_getsockname "syscall".
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 09:58:50 +0000 (12:58 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 10:28:19 +0000 (13:28 +0300)
src/raw/swift_raw.c

index 9e943f5..0bed1af 100644 (file)
@@ -206,9 +206,22 @@ list_elem_err:
 int sw_getsockname(int __fd, __SOCKADDR_ARG __addr,
                        socklen_t *__restrict __len)
 {
-       /* TODO */
+       struct sock_list *list;
+
+       /* Find socket in management structure. */
+       list = list_elem_from_socket(__fd);
+       if (list == NULL) {
+               errno = EBADF;
+               goto list_elem_err;
+       }
+
+       memcpy(__addr, &list->addr, sizeof(list->addr));
+       *__len = sizeof(list->addr);
 
        return 0;
+
+list_elem_err:
+       return -1;
 }
 
 /*