1dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#ifndef _IPTABLES_COMMON_H
2dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define _IPTABLES_COMMON_H
3dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* Shared definitions between ipv4 and ipv6. */
4dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
5dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatenum exittype {
6dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	OTHER_PROBLEM = 1,
7dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	PARAMETER_PROBLEM,
8dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	VERSION_PROBLEM,
9dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	RESOURCE_PROBLEM
10dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
11dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
12dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* this is a special 64bit data type that is 8-byte aligned */
13dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define aligned_u64 unsigned long long __attribute__((aligned(8)))
14dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
15dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern void exit_printhelp(void) __attribute__((noreturn));
16dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern void exit_tryhelp(int) __attribute__((noreturn));
17dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatint check_inverse(const char option[], int *invert, int *optind, int argc);
18dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern int string_to_number(const char *,
19dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned int,
20dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned int,
21dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned int *);
22dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern int string_to_number_l(const char *,
23dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long int,
24dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long int,
25dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long *);
26dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern int string_to_number_ll(const char *,
27dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long long int,
28dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long long int,
29dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat			    unsigned long long *);
30dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern int iptables_insmod(const char *modname, const char *modprobe);
31dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern int load_iptables_ko(const char *modprobe);
32dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatvoid exit_error(enum exittype, char *, ...)__attribute__((noreturn,
33dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat							  format(printf,2,3)));
34dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern const char *program_name, *program_version;
35dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatextern char *lib_dir;
36dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
37dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define _init __attribute__((constructor)) my_init
38dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#ifdef NO_SHARED_LIBS
39dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# ifdef _INIT
40dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  undef _init
41dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define _init _INIT
42dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# endif
43dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  extern void init_extensions(void);
44dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#endif
45dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
46dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define __be32	u_int32_t
47dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define __le32	u_int32_t
48dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define __be16	u_int16_t
49dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define __le16	u_int16_t
50dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
51dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#endif /*_IPTABLES_COMMON_H*/
52