1/*
2 * Copyright 2007 Oliver Ruiz Dorantes, oliver.ruiz.dorantes_at_gmail.com
3 * All rights reserved. Distributed under the terms of the MIT License.
4 */
5#ifndef _H2UTIL_H_
6#define _H2UTIL_H_
7
8
9#include <util/list.h>
10
11#include "h2generic.h"
12
13
14/* net buffer utils for ACL, to be reviewed */
15#define DEVICEFIELD type
16#define SET_DEVICE(nbuf, hid) \
17	(nbuf->DEVICEFIELD=(nbuf->DEVICEFIELD & 0xFFFFFF00) | (hid & 0xFF))
18#define GET_DEVICE(nbuf) fetch_device(NULL, (nbuf->DEVICEFIELD&0xFF))
19
20
21#define COOKIEFIELD flags
22void* nb_get_whole_buffer(net_buffer* nbuf);
23void nb_destroy(net_buffer* nbuf);
24size_t get_expected_size(net_buffer* nbuf);
25
26/* Room utils */
27void init_room(struct list* l);
28void* alloc_room(struct list* l, size_t size);
29void reuse_room(struct list* l, void* room);
30void purge_room(struct list* l);
31
32/* list utils */
33#define list_purge(x) purge_room(x)
34
35#endif
36