tftpclient: converting to net sockets
[barrelfish] / include / net_sockets / net_sockets.h
1 #ifndef NET_SOCKETS_H
2 #define NET_SOCKETS_H
3
4 #include <net_sockets/net_sockets_types.h>
5
6 void * net_alloc(size_t size);
7 void net_free(void *buffer);
8
9 struct net_socket {
10     uint32_t descriptor;
11     net_received_callback_t received;
12     net_sent_callback_t sent;
13     net_connected_callback_t connected;
14     net_accepted_callback_t accepted;
15     void *user_state;
16
17     struct in_addr bound_address;
18     uint16_t bound_port;
19     struct in_addr connected_address;
20     uint16_t connected_port;
21
22     struct net_socket *prev, *next;
23 };
24
25 // synchronous calls
26 struct net_socket * net_udp_socket(void);
27 struct net_socket * net_tcp_socket(void);
28 void net_set_user_state(struct net_socket *socket, void *user_state);
29 void net_close(struct net_socket *socket);
30
31 errval_t net_bind(struct net_socket *socket, struct in_addr ip_address, uint16_t port);
32 errval_t net_listen(struct net_socket *socket, uint8_t backlog);
33
34 errval_t net_send(struct net_socket *socket, void *data, size_t size);
35 errval_t net_send_to(struct net_socket *socket, void *data, size_t size, struct in_addr ip_address, uint16_t port);
36
37 void net_recv(struct net_socket *socket, net_received_callback_t cb);
38 void net_set_sent(struct net_socket *socket, net_sent_callback_t cb);
39 errval_t net_connect(struct net_socket *socket, struct in_addr ip_address, uint16_t port, net_connected_callback_t cb);
40 void net_accept(struct net_socket *socket, net_accepted_callback_t cb);
41
42
43 errval_t net_sockets_init(void);
44
45 #endif