diff --git a/src/Makefile b/src/Makefile index 1f89354..6c581bc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -8,6 +8,7 @@ CFLAGS += -fPIC -I$(INCLUDE_PATH) LDFLAGS = HEADERS = pcapng.h +HEADERS_LOCAL = util.h OBJS = pcapng.o @@ -42,7 +43,7 @@ $(SONAME): $(SONAME_FULL) $(SONAME_SHORT): $(SONAME_FULL) $(LN) -s $< $@ -$(OBJS): %.o: %.c $(HEADERS_BUILD) +$(OBJS): %.o: %.c $(HEADERS_BUILD) $(HEADERS_LOCAL) $(CC) $(CFLAGS) -c $< install: $(SONAME_FULL) $(STATIC) diff --git a/src/util.h b/src/util.h new file mode 100644 index 0000000..693e155 --- /dev/null +++ b/src/util.h @@ -0,0 +1,43 @@ +#ifndef _UTIL_H +#define _UTIL_H + +#include +#include "config.h" + +#define bswap16(v) (((v & 0xff00) >> 8) | (v & 0x00ff) << 8) + +#define bswap32(v) \ + (((v & 0xff000000) >> 24) | \ + ((v & 0x00ff0000) >> 8) | \ + ((v & 0x0000ff00) << 8) | \ + ((v & 0x000000ff) << 24)) + +#define bswap64(v) \ + (((v & 0xff00000000000000) >> 56) | \ + ((v & 0x00ff000000000000) >> 40) | \ + ((v & 0x0000ff0000000000) >> 16) | \ + ((v & 0x000000ff00000000) >> 8) | \ + ((v & 0x00000000ff000000) << 8) | \ + ((v & 0x0000000000ff0000) << 16) | \ + ((v & 0x000000000000ff00) << 40) | \ + ((v & 0x00000000000000ff) << 64)) + +#ifndef _ENDIAN_H +#ifdef __DO_SWAP_BYTES +#define be16toh(v) ((uint16_t)bswap16((uint16_t)v)) +#define be32toh(v) ((uint32_t)bswap32((uint32_t)v)) +#define htobe16(v) ((uint16_t)bswap16((uint16_t)v)) +#define htobe32(v) ((uint32_t)bswap32((uint32_t)v)) +#define htole32(v) ((uint32_t)v) +#define htole64(v) ((uint64_t)v) +#else +#define be16toh(v) ((uint16_t)v) +#define be32toh(v) ((uint32_t)v) +#define htobe16(v) ((uint16_t)v) +#define htobe32(v) ((uint32_t)v) +#define htole32(v) ((uint32_t)bswap32((uint32_t)v)) +#define htole64(v) ((uint64_t)bswap64((uint64_t)v)) +#endif /* __DO_SWAP_BYTES */ +#endif /* !_ENDIAN_H */ + +#endif /* _UTIL_H */