From 09cb77aa9356219c7b6b2f9e5115b1ae4d35496c Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu Date: Sat, 21 May 2011 11:48:55 +0300 Subject: [PATCH] raw: Add list function for finding an element. --- src/raw/swift_raw.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/raw/swift_raw.c b/src/raw/swift_raw.c index 7a5da0d..441181a 100644 --- a/src/raw/swift_raw.c +++ b/src/raw/swift_raw.c @@ -36,6 +36,10 @@ static struct sock_list sock_list_head = { .prev = &sock_list_head }; +/* + * Add new socket to list. Called by sw_socket "syscall". + */ + static struct sock_list *list_add_socket(int s) { struct sock_list *ptr = malloc(sizeof(*ptr)); @@ -50,6 +54,10 @@ static struct sock_list *list_add_socket(int s) return ptr; } +/* + * Bind socket to given address. Called by sw_bind "syscall". + */ + static struct sock_list *list_update_socket_address(int s, struct sockaddr_sw *addr) { struct sock_list *ptr; @@ -63,6 +71,26 @@ static struct sock_list *list_update_socket_address(int s, struct sockaddr_sw *a return NULL; } +/* + * Get list element containing socket s. Called by sw_send* "syscalls". + */ + +static struct sock_list *list_elem_from_socket(int s) +{ + struct sock_list *ptr; + + for (ptr = sock_list_head.next; ptr != &sock_list_head; ptr = ptr->next) + if (ptr->s == s) { + return ptr; + } + + return NULL; +} + +/* + * Remove socket from list. Called by sw_close "syscall". + */ + static struct sock_list *list_unlink_socket(int s) { struct sock_list *ptr; -- 2.20.1