+#if defined(svr4) || defined(__svr4__) /* SVR4, including SunOS 5.x */
+# include <sys/kmem.h>
+# define ALLOCATE(n) kmem_alloc((n), KM_NOSLEEP)
+# define FREE(p, n) kmem_free((p), (n))
+#else /* SunOS 4.x */
+# if defined(sun) || defined(__sun__)
+# include <sys/kmem_alloc.h>
+# define ALLOCATE(n) kmem_alloc((n), KMEM_NOSLEEP)
+# define FREE(p, n) kmem_free((p), (n))
+# endif
+#endif
+
+#if defined(osf) || defined(__osf__)
+#include <kern/kalloc.h>
+#ifdef FIRST
+#undef FIRST
+#undef LAST
+#endif
+#ifdef FREE
+#undef FREE
+#endif
+#define ALLOCATE(n) kalloc((n))
+#define FREE(p, n) kfree((p), (n))
+#define BSD_LITTLE_ENDIAN
+#endif
+
+#if defined(aix4) || defined(__aix4__)
+#define ALLOCATE(n) xmalloc((n), 0, pinned_heap)
+#define FREE(p, n) xmfree((p), pinned_heap)
+#endif
+
+#define PACKETPTR mblk_t *