]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/lib/fwp/fwp_msgb.h
merge martin-devel
[frescor/fwp.git] / fwp / lib / fwp / fwp_msgb.h
1 #ifndef _FWP_MSGB_H
2 #define _FWP_MSGB_H
3
4 #include <sys/types.h>
5 #include <sys/socket.h>
6 #include <string.h>
7
8 #define ADDRLEN_MAX 30
9
10 typedef
11 struct fwp_sockaddr{
12         char            addr[ADDRLEN_MAX];
13         socklen_t       addrlen;
14 } fwp_sockaddr_t;
15
16 /**
17  * Message buffer structure
18  */
19 typedef
20 struct fwp_msgb {
21         size_t                  buffer_size;
22         size_t                  len;            /**< msg data length*/
23         unsigned char           *data;          /**< msg data */
24         unsigned char           *tail;          /**< msg data end*/
25         struct fwp_sockaddr     *peer;          /**< peer address*/
26         /*int flags;  MSG_DONTWAIT for async*/
27 } fwp_msgb_t;
28
29 struct fwp_msgb* fwp_msgb_alloc(size_t buf_size);
30 void fwp_msgb_free(struct fwp_msgb* msgb);
31
32 inline unsigned char* fwp_msgb_put(struct fwp_msgb *msgb, unsigned int len);
33 inline unsigned char* fwp_msgb_pull(struct fwp_msgb *msgb, unsigned int len);
34 inline unsigned char* fwp_msgb_push(struct fwp_msgb* msgb, unsigned int len);
35 inline void fwp_msgb_reset_data_pointer(struct fwp_msgb* msgb);
36 inline void fwp_msgb_reset_data(struct fwp_msgb* msgb);
37 inline unsigned char* fwp_msgb_shift(struct fwp_msgb* msgb, unsigned int len);
38 inline void fwp_msgb_reserve(fwp_msgb_t *msgb, unsigned int len);
39
40 /*struct fwp_socketaddr* fwp_socket_create(struct sockaddr *_addr, socklen_t _addrlen);
41 inline void fwp_socket_set(struct fwp_socketaddr *fwpsock, struct sockaddr *_addr, 
42                                   socklen_t _addrlen);
43 */
44 #endif /* _FWP_MSGB_H */