X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_socket.h;h=f73830ebecf4ff61210aa2914b8684b4cfe85b2b;hb=f23519733b314e4cbaf0b2f1e4ea317302680898;hp=bd8868272b559ec83c30075b110c1ab2fce16b22;hpb=9526410ca7474542623aa2e74b2ce001dd7ec55e;p=palacios.git diff --git a/palacios/include/palacios/vmm_socket.h b/palacios/include/palacios/vmm_socket.h index bd88682..f73830e 100644 --- a/palacios/include/palacios/vmm_socket.h +++ b/palacios/include/palacios/vmm_socket.h @@ -61,23 +61,33 @@ #define V3_Bind_Socket(sock, port) ({ \ extern struct v3_socket_hooks * sock_hooks; \ int ret = -1; \ - if ((sock_hooks) && (sock_hooks)->bind) { \ - ret = (sock_hooks)->bind(sock, port); \ + if ((sock_hooks) && (sock_hooks)->bind_socket) { \ + ret = (sock_hooks)->bind_socket(sock, port); \ } \ ret; \ }) -#define V3_Accept_Socket(sock, ip_ptr) ({ \ +#define V3_Listen_Socket(sock, backlog) ({ \ extern struct v3_socket_hooks * sock_hooks; \ int ret = -1; \ - if ((sock_hooks) && (sock_hooks)->accept) { \ - ret = (sock_hooks)->accept(sock, ip_ptr); \ + if ((sock_hooks) && (sock_hooks)->listen) { \ + ret = (sock_hooks)->listen(sock, backlog); \ } \ ret; \ }) +#define V3_Accept_Socket(sock, ip_ptr, port_ptr) ({ \ + extern struct v3_socket_hooks * sock_hooks; \ + V3_SOCK client_sock = 0; \ + if ((sock_hooks) && (sock_hooks)->accept) { \ + client_sock = (sock_hooks)->accept(sock, ip_ptr, port_ptr); \ + } \ + client_sock; \ + }) + + #define V3_Select_Socket(rset,wset,eset,tv) ({ \ extern struct v3_socket_hooks * sock_hooks; \ int ret = -1; \ @@ -211,8 +221,10 @@ struct v3_socket_hooks { // Network Server Calls int (*bind_socket)(const V3_SOCK sock, const int port); + + int (*listen)(const V3_SOCK sock, int backlog); - int (*accept)(const V3_SOCK const sock, unsigned int * remote_ip); + V3_SOCK (*accept)(const V3_SOCK sock, unsigned int * remote_ip, unsigned int * port); // This going to suck int (*select)(struct v3_sock_set * rset, \ struct v3_sock_set * wset, \ @@ -240,7 +252,7 @@ struct v3_socket_hooks { }; -void V3_Init_Socket(struct v3_socket_hooks * hooks); +extern void V3_Init_Sockets(struct v3_socket_hooks * hooks); #endif