* SUCH DAMAGE.
*/
/*
- *
- * $Id$
+ * $Id: glue.h 4661 2010-01-04 11:56:12Z luigi $
*
* glue code to adapt the FreeBSD version to linux and windows,
* userland and kernel.
#include <sys/types.h> /* for size_t */
#include <sys/ioctl.h>
#include <time.h>
+#include <errno.h>
#include <netinet/ether.h>
int profhz; /* profiling clock frequency */
};
-/*
+/*
* linux does not have a reentrant version of qsort,
* so we the FreeBSD stdlib version.
*/
void
qsort_r(void *a, size_t n, size_t es, void *thunk,
int cmp_t(void *, const void *, const void *));
-#define heapsort(_a, _b, _c, _d) qsort(_a, _b, _c, _d)
+
+/* prototypes from libutil */
+/* humanize_number(3) */
+#define HN_DECIMAL 0x01
+#define HN_NOSPACE 0x02
+#define HN_B 0x04
+#define HN_DIVISOR_1000 0x08
+
+#define HN_GETSCALE 0x10
+#define HN_AUTOSCALE 0x20
+
+int humanize_number(char *_buf, size_t _len, int64_t _number,
+ const char *_suffix, int _scale, int _flags);
+int expand_number(const char *_buf, int64_t *_num);
#define setprogname(x) /* not present in linux */
sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp,
size_t newlen);
+#ifdef __linux__
+/* linux does not have sin_len in sockaddr, we only remap in userland */
+#define sin_len sin_zero[0]
+#endif /* __linux__ */
+
#else /* KERNEL_MODULE */
/* linux and windows kernel do not have bcopy ? */
#include <linux/in6.h>
#endif
+/* skb_dst() was introduced from linux 2.6.31 */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31) // or 2.4.x
+#define skb_dst(_dummy) skb->dst
+#endif
+
/* definitions useful for the kernel side */
struct route_in6 { };
#endif /* KERNEL_MODULE */
+/* missing in netinet/in.h */
+
+#define INET_ADDRSTRLEN 16
+
+
/*
* List of values used for set/getsockopt options.
* The base value on FreeBSD is defined as a macro,
IP_FW_TABLE_FLUSH,
IP_FW_TABLE_GETSIZE,
IP_FW_TABLE_LIST,
+ IP_FW_DYN_GET, /* new addition */
+
+ /* IP_FW3 and IP_DUMMYNET3 are the new API */
+ IP_FW3 = _IPFW_SOCKOPT_BASE + 8,
+ IP_DUMMYNET3,
IP_FW_ADD = _IPFW_SOCKOPT_BASE + 10,
IP_FW_DEL,
IP_FW_FLUSH,
IP_FW_ZERO,
IP_FW_GET,
- IP_FW_DYN_GET,
IP_FW_RESETLOG,
IP_FW_NAT_CFG,