home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / libipq.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-10-22  |  2.0 KB  |  84 lines

  1. /*
  2.  * libipq.h
  3.  *
  4.  * IPQ library for userspace.
  5.  *
  6.  * Author: James Morris <jmorris@intercode.com.au>
  7.  *
  8.  * Copyright (c) 2000-2001 Netfilter Core Team
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  */
  21. #ifndef _LIBIPQ_H
  22. #define _LIBIPQ_H
  23.  
  24. #include <errno.h>
  25. #include <unistd.h>
  26. #include <fcntl.h>
  27. #include <sys/types.h>
  28. #include <sys/socket.h>
  29. #include <sys/uio.h>
  30. #include <asm/types.h>
  31. #include <linux/netlink.h>
  32.  
  33. #include <linux/netfilter_ipv4/ip_queue.h>
  34. typedef unsigned long ipq_id_t;
  35.  
  36. #ifdef DEBUG_LIBIPQ
  37. #include <stdio.h>
  38. #define LDEBUG(x...) fprintf(stderr, ## x)
  39. #else
  40. #define LDEBUG(x...)
  41. #endif    /* DEBUG_LIBIPQ */
  42.  
  43. /* FIXME: glibc sucks */
  44. #ifndef MSG_TRUNC
  45. #define MSG_TRUNC 0x20
  46. #endif
  47.  
  48. struct ipq_handle
  49. {
  50.     int fd;
  51.     u_int8_t blocking;
  52.     struct sockaddr_nl local;
  53.     struct sockaddr_nl peer;
  54. };
  55.  
  56. struct ipq_handle *ipq_create_handle(u_int32_t flags, u_int32_t protocol);
  57.  
  58. int ipq_destroy_handle(struct ipq_handle *h);
  59.  
  60. ssize_t ipq_read(const struct ipq_handle *h,
  61.                 unsigned char *buf, size_t len, int timeout);
  62.  
  63. int ipq_set_mode(const struct ipq_handle *h, u_int8_t mode, size_t len);
  64.  
  65. ipq_packet_msg_t *ipq_get_packet(const unsigned char *buf);
  66.  
  67. int ipq_message_type(const unsigned char *buf);
  68.  
  69. int ipq_get_msgerr(const unsigned char *buf);
  70.  
  71. int ipq_set_verdict(const struct ipq_handle *h,
  72.                     ipq_id_t id,
  73.                     unsigned int verdict,
  74.                     size_t data_len,
  75.                     unsigned char *buf);
  76.  
  77. int ipq_ctl(const struct ipq_handle *h, int request, ...);
  78.  
  79. char *ipq_errstr(void);
  80. void ipq_perror(const char *s);
  81.  
  82. #endif    /* _LIBIPQ_H */
  83.  
  84.