blob: 45b4aa7cc1110a14d67f4757a38c94ee439ca683 [file] [log] [blame]
/*
* WARNING: Do *NOT* ever include this file, only for internal use!
* Use the set/get API in order to set/get the conntrack attributes
*/
#ifndef __LIBNETFILTER_CONNTRACK_INTERNAL__
#define __LIBNETFILTER_CONNTRACK_INTERNAL__
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <time.h>
#include <errno.h>
#include <netinet/in.h>
#include <libnfnetlink/libnfnetlink.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_tcp.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_sctp.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack_dccp.h>
#include "internal/object.h"
#include "internal/prototypes.h"
#include "internal/types.h"
#include "internal/extern.h"
#include "internal/bitops.h"
#ifndef IPPROTO_SCTP
#define IPPROTO_SCTP 132
#endif
#ifndef IPPROTO_UDPLITE
#define IPPROTO_UDPLITE 136
#endif
#ifndef IPPROTO_DCCP
#define IPPROTO_DCCP 33
#endif
#define BUFFER_SIZE(ret, size, len, offset) \
size += ret; \
if (ret > len) \
ret = len; \
offset += ret; \
len -= ret;
#define TS_ORIG \
({ \
((1 << ATTR_ORIG_IPV4_SRC) | (1 << ATTR_ORIG_IPV4_DST) | \
(1 << ATTR_ORIG_IPV6_SRC) | (1 << ATTR_ORIG_IPV6_DST) | \
(1 << ATTR_ORIG_PORT_SRC) | (1 << ATTR_ORIG_PORT_DST) | \
(1 << ATTR_ORIG_L3PROTO) | (1 << ATTR_ORIG_L4PROTO) | \
(1 << ATTR_ICMP_TYPE) | (1 << ATTR_ICMP_CODE) | \
(1 << ATTR_ICMP_ID)); \
})
#define TS_REPL \
({ \
((1 << ATTR_REPL_IPV4_SRC) | (1 << ATTR_REPL_IPV4_DST) | \
(1 << ATTR_REPL_IPV6_SRC) | (1 << ATTR_REPL_IPV6_DST) | \
(1 << ATTR_REPL_PORT_SRC) | (1 << ATTR_REPL_PORT_DST) | \
(1 << ATTR_REPL_L3PROTO) | (1 << ATTR_REPL_L4PROTO) | \
(1 << ATTR_ICMP_TYPE) | (1 << ATTR_ICMP_CODE) | \
(1 << ATTR_ICMP_ID)); \
})
#define TUPLE_SET(dir) (dir == __DIR_ORIG ? TS_ORIG : TS_REPL)
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
#ifndef NSEC_PER_SEC
#define NSEC_PER_SEC 1000000000L
#endif
/* extracted from include/linux/netfilter/nf_conntrack_tcp.h .*/
struct nf_ct_tcp_flags {
uint8_t flags;
uint8_t mask;
};
#define NFCT_BITMASK_AND 0
#define NFCT_BITMASK_OR 1
#endif