1/* 2 * WARNING: Do *NOT* ever include this file, only for internal use! 3 * Use the set/get API in order to set/get the conntrack attributes 4 */ 5 6#ifndef __LIBNETFILTER_CONNTRACK_INTERNAL__ 7#define __LIBNETFILTER_CONNTRACK_INTERNAL__ 8 9#include <stdio.h> 10#include <stdlib.h> 11#include <stdarg.h> 12#include <string.h> 13#include <sys/types.h> 14#include <arpa/inet.h> 15#include <time.h> 16#include <errno.h> 17#include <netinet/in.h> 18 19#include <libnfnetlink/libnfnetlink.h> 20#include <libnetfilter_conntrack/libnetfilter_conntrack.h> 21#include <libnetfilter_conntrack/libnetfilter_conntrack_tcp.h> 22#include <libnetfilter_conntrack/libnetfilter_conntrack_sctp.h> 23#include <libnetfilter_conntrack/libnetfilter_conntrack_dccp.h> 24 25#include "internal/object.h" 26#include "internal/prototypes.h" 27#include "internal/types.h" 28#include "internal/extern.h" 29#include "internal/bitops.h" 30 31#ifndef IPPROTO_SCTP 32#define IPPROTO_SCTP 132 33#endif 34 35#ifndef IPPROTO_UDPLITE 36#define IPPROTO_UDPLITE 136 37#endif 38 39#ifndef IPPROTO_DCCP 40#define IPPROTO_DCCP 33 41#endif 42 43#define BUFFER_SIZE(ret, size, len, offset) \ 44 size += ret; \ 45 if (ret > len) \ 46 ret = len; \ 47 offset += ret; \ 48 len -= ret; 49 50#define TS_ORIG \ 51({ \ 52 ((1 << ATTR_ORIG_IPV4_SRC) | (1 << ATTR_ORIG_IPV4_DST) | \ 53 (1 << ATTR_ORIG_IPV6_SRC) | (1 << ATTR_ORIG_IPV6_DST) | \ 54 (1 << ATTR_ORIG_PORT_SRC) | (1 << ATTR_ORIG_PORT_DST) | \ 55 (1 << ATTR_ORIG_L3PROTO) | (1 << ATTR_ORIG_L4PROTO) | \ 56 (1 << ATTR_ICMP_TYPE) | (1 << ATTR_ICMP_CODE) | \ 57 (1 << ATTR_ICMP_ID)); \ 58}) 59 60#define TS_REPL \ 61({ \ 62 ((1 << ATTR_REPL_IPV4_SRC) | (1 << ATTR_REPL_IPV4_DST) | \ 63 (1 << ATTR_REPL_IPV6_SRC) | (1 << ATTR_REPL_IPV6_DST) | \ 64 (1 << ATTR_REPL_PORT_SRC) | (1 << ATTR_REPL_PORT_DST) | \ 65 (1 << ATTR_REPL_L3PROTO) | (1 << ATTR_REPL_L4PROTO) | \ 66 (1 << ATTR_ICMP_TYPE) | (1 << ATTR_ICMP_CODE) | \ 67 (1 << ATTR_ICMP_ID)); \ 68}) 69 70#define TUPLE_SET(dir) (dir == __DIR_ORIG ? TS_ORIG : TS_REPL) 71 72#define likely(x) __builtin_expect((x),1) 73#define unlikely(x) __builtin_expect((x),0) 74 75#ifndef NSEC_PER_SEC 76#define NSEC_PER_SEC 1000000000L 77#endif 78 79/* extracted from include/linux/netfilter/nf_conntrack_tcp.h .*/ 80struct nf_ct_tcp_flags { 81 uint8_t flags; 82 uint8_t mask; 83}; 84 85#define NFCT_BITMASK_AND 0 86#define NFCT_BITMASK_OR 1 87 88#endif 89