1/* 2 * netlink/netfilter/queue.h Netfilter Queue 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation version 2.1 7 * of the License. 8 * 9 * Copyright (c) 2007, 2008 Patrick McHardy <kaber@trash.net> 10 */ 11 12#ifndef NETLINK_QUEUE_H_ 13#define NETLINK_QUEUE_H_ 14 15#include <netlink/netlink.h> 16 17#ifdef __cplusplus 18extern "C" { 19#endif 20 21struct nl_sock; 22struct nlmsghdr; 23struct nfnl_queue; 24 25extern struct nl_object_ops queue_obj_ops; 26 27enum nfnl_queue_copy_mode { 28 NFNL_QUEUE_COPY_NONE, 29 NFNL_QUEUE_COPY_META, 30 NFNL_QUEUE_COPY_PACKET, 31}; 32 33/* General */ 34extern struct nl_sock * nfnl_queue_socket_alloc(void); 35 36extern struct nfnl_queue * nfnl_queue_alloc(void); 37 38extern void nfnl_queue_get(struct nfnl_queue *); 39extern void nfnl_queue_put(struct nfnl_queue *); 40 41/* Attributes */ 42extern void nfnl_queue_set_group(struct nfnl_queue *, uint16_t); 43extern int nfnl_queue_test_group(const struct nfnl_queue *); 44extern uint16_t nfnl_queue_get_group(const struct nfnl_queue *); 45 46extern void nfnl_queue_set_maxlen(struct nfnl_queue *, uint32_t); 47extern int nfnl_queue_test_maxlen(const struct nfnl_queue *); 48extern uint32_t nfnl_queue_get_maxlen(const struct nfnl_queue *); 49 50extern void nfnl_queue_set_copy_mode(struct nfnl_queue *, 51 enum nfnl_queue_copy_mode); 52extern int nfnl_queue_test_copy_mode(const struct nfnl_queue *); 53extern enum nfnl_queue_copy_mode nfnl_queue_get_copy_mode(const struct nfnl_queue *); 54 55extern char * nfnl_queue_copy_mode2str(enum nfnl_queue_copy_mode, 56 char *, size_t); 57extern enum nfnl_queue_copy_mode nfnl_queue_str2copy_mode(const char *); 58 59extern void nfnl_queue_set_copy_range(struct nfnl_queue *, 60 uint32_t); 61extern int nfnl_queue_test_copy_range(const struct nfnl_queue *); 62extern uint32_t nfnl_queue_get_copy_range(const struct nfnl_queue *); 63 64extern int nfnl_queue_build_pf_bind(uint8_t, struct nl_msg **); 65extern int nfnl_queue_pf_bind(struct nl_sock *, uint8_t); 66 67extern int nfnl_queue_build_pf_unbind(uint8_t, struct nl_msg **); 68extern int nfnl_queue_pf_unbind(struct nl_sock *, uint8_t); 69 70extern int nfnl_queue_build_create_request(const struct nfnl_queue *, 71 struct nl_msg **); 72extern int nfnl_queue_create(struct nl_sock *, 73 const struct nfnl_queue *); 74 75extern int nfnl_queue_build_change_request(const struct nfnl_queue *, 76 struct nl_msg **); 77extern int nfnl_queue_change(struct nl_sock *, 78 const struct nfnl_queue *); 79 80extern int nfnl_queue_build_delete_request(const struct nfnl_queue *, 81 struct nl_msg **); 82extern int nfnl_queue_delete(struct nl_sock *, 83 const struct nfnl_queue *); 84 85#ifdef __cplusplus 86} 87#endif 88 89#endif 90 91