/* * $Id: system.h,v 1.1 2005/07/20 13:44:13 mchapman Exp $ */ #ifndef _SYSTEM_H #define _SYSTEM_H #if HAVE_CONFIG_H # include #endif /* HAVE_CONFIG_H */ #include /* * These headers should exist. Even gnulib assumes they do... */ #include #include #ifndef errno extern int errno; #endif #include #include #include #include #include #include #include #if HAVE_PCAP_H # include #endif /* HAVE_PCAP_H */ #if HAVE_LIBNET_H # include #endif /* HAVE_LIBNET_H */ #define MALLOC(C, T) ((T *)xnmalloc((C), sizeof(T))) #define MALLOC_VOIDP(C) ((void *)xmalloc(C)) #define CALLOC(C, T) ((T *)xcalloc((C), sizeof(T))) static inline char * SALLOC(size_t c) { char *p; assert(c); p = MALLOC(c, char); *p = *(p + c - 1) = '\0'; return p; } #define NEW(DST, SRC, T) \ do { \ (DST) = MALLOC(1, T); \ *(DST) = (SRC); \ } while (0) #define DUP(DST, SRC, T) NEW(DST, *(SRC), T) #ifdef NDEBUG #define xfree(P) free(P) #else /* ! NDEBUG */ #define xfree(P) do { assert(P); free(P); (P) = NULL; } while (0) #endif /* ! NDEBUG */ #define FREE(P) xfree(P) #define VOIDP_DIFF(P, Q) ((ptrdiff_t)((char *)(P) - (char *)(Q))) #define VOIDP_OFFSET(P, O) ((void *)((char *)(P) + (ptrdiff_t)(O))) struct _cdp { pcap_t *pcap; libnet_t *libnet; int flags; char *port; uint8_t mac[6]; cdp_llist_t *addresses; uint8_t *duplex; const struct pcap_pkthdr *header; const void *data; }; #endif /* _SYSTEM_H */