- refresh libevent + add libpcap libraries
This commit is contained in:
parent
00a370b393
commit
6fbbfdb57c
|
|
@ -726,7 +726,8 @@ int evbuffer_write_atmost(struct evbuffer *buffer, evutil_socket_t fd,
|
||||||
|
|
||||||
@param buffer the evbuffer to store the result
|
@param buffer the evbuffer to store the result
|
||||||
@param fd the file descriptor to read from
|
@param fd the file descriptor to read from
|
||||||
@param howmuch the number of bytes to be read
|
@param howmuch the number of bytes to be read. If the given number is negative
|
||||||
|
or out of maximum bytes per one read, as many bytes as we can will be read.
|
||||||
@return the number of bytes read, or -1 if an error occurred
|
@return the number of bytes read, or -1 if an error occurred
|
||||||
@see evbuffer_write()
|
@see evbuffer_write()
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,16 @@
|
||||||
/* event2/event-config.h
|
/* event2/event-config.h
|
||||||
*
|
*
|
||||||
* This file was generated by autoconf when libevent was built, and post-
|
* This file was generated by autoconf when libevent was built, and post-
|
||||||
* processed by Libevent so that its macros would have a uniform prefix.
|
* processed by Libevent so that its macros would have a uniform prefix.
|
||||||
*
|
*
|
||||||
* DO NOT EDIT THIS FILE.
|
* DO NOT EDIT THIS FILE.
|
||||||
*
|
*
|
||||||
* Do not rely on macros in this file existing in later versions.
|
* Do not rely on macros in this file existing in later versions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_
|
#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_
|
||||||
#define EVENT2_EVENT_CONFIG_H_INCLUDED_
|
#define EVENT2_EVENT_CONFIG_H_INCLUDED_
|
||||||
|
|
||||||
/* config.h. Generated from config.h.in by configure. */
|
/* config.h. Generated from config.h.in by configure. */
|
||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
|
@ -23,13 +24,19 @@
|
||||||
/* #undef EVENT__DISABLE_THREAD_SUPPORT */
|
/* #undef EVENT__DISABLE_THREAD_SUPPORT */
|
||||||
|
|
||||||
/* Define to 1 if you have the `accept4' function. */
|
/* Define to 1 if you have the `accept4' function. */
|
||||||
/* #undef EVENT__HAVE_ACCEPT4 */
|
#define EVENT__HAVE_ACCEPT4 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <afunix.h> header file. */
|
||||||
|
/* #undef EVENT__HAVE_AFUNIX_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the `arc4random' function. */
|
/* Define to 1 if you have the `arc4random' function. */
|
||||||
#define EVENT__HAVE_ARC4RANDOM 1
|
/* #undef EVENT__HAVE_ARC4RANDOM */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `arc4random_addrandom' function. */
|
||||||
|
/* #undef EVENT__HAVE_ARC4RANDOM_ADDRANDOM */
|
||||||
|
|
||||||
/* Define to 1 if you have the `arc4random_buf' function. */
|
/* Define to 1 if you have the `arc4random_buf' function. */
|
||||||
#define EVENT__HAVE_ARC4RANDOM_BUF 1
|
/* #undef EVENT__HAVE_ARC4RANDOM_BUF */
|
||||||
|
|
||||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
#define EVENT__HAVE_ARPA_INET_H 1
|
#define EVENT__HAVE_ARPA_INET_H 1
|
||||||
|
|
@ -39,19 +46,11 @@
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `CTL_KERN', and to 0 if you
|
/* Define to 1 if you have the declaration of `CTL_KERN', and to 0 if you
|
||||||
don't. */
|
don't. */
|
||||||
#define EVENT__HAVE_DECL_CTL_KERN 1
|
/* #undef EVENT__HAVE_DECL_CTL_KERN */
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `KERN_ARND', and to 0 if you
|
/* Define to 1 if you have the declaration of `KERN_ARND', and to 0 if you
|
||||||
don't. */
|
don't. */
|
||||||
#define EVENT__HAVE_DECL_KERN_ARND 0
|
/* #undef EVENT__HAVE_DECL_KERN_ARND */
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `KERN_RANDOM', and to 0 if you
|
|
||||||
don't. */
|
|
||||||
#define EVENT__HAVE_DECL_KERN_RANDOM 0
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `RANDOM_UUID', and to 0 if you
|
|
||||||
don't. */
|
|
||||||
#define EVENT__HAVE_DECL_RANDOM_UUID 0
|
|
||||||
|
|
||||||
/* Define if /dev/poll is available */
|
/* Define if /dev/poll is available */
|
||||||
/* #undef EVENT__HAVE_DEVPOLL */
|
/* #undef EVENT__HAVE_DEVPOLL */
|
||||||
|
|
@ -60,22 +59,19 @@
|
||||||
#define EVENT__HAVE_DLFCN_H 1
|
#define EVENT__HAVE_DLFCN_H 1
|
||||||
|
|
||||||
/* Define if your system supports the epoll system calls */
|
/* Define if your system supports the epoll system calls */
|
||||||
/* #undef EVENT__HAVE_EPOLL */
|
#define EVENT__HAVE_EPOLL 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `epoll_create1' function. */
|
/* Define to 1 if you have the `epoll_create1' function. */
|
||||||
/* #undef EVENT__HAVE_EPOLL_CREATE1 */
|
#define EVENT__HAVE_EPOLL_CREATE1 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `epoll_ctl' function. */
|
/* Define to 1 if you have the `epoll_ctl' function. */
|
||||||
/* #undef EVENT__HAVE_EPOLL_CTL */
|
#define EVENT__HAVE_EPOLL_CTL 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <errno.h> header file. */
|
/* Define to 1 if you have the <errno.h> header file. */
|
||||||
#define EVENT__HAVE_ERRNO_H 1
|
#define EVENT__HAVE_ERRNO_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have ERR_remove_thread_stat(). */
|
|
||||||
/* #undef EVENT__HAVE_ERR_REMOVE_THREAD_STATE */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `eventfd' function. */
|
/* Define to 1 if you have the `eventfd' function. */
|
||||||
/* #undef EVENT__HAVE_EVENTFD */
|
#define EVENT__HAVE_EVENTFD 1
|
||||||
|
|
||||||
/* Define if your system supports event ports */
|
/* Define if your system supports event ports */
|
||||||
/* #undef EVENT__HAVE_EVENT_PORTS */
|
/* #undef EVENT__HAVE_EVENT_PORTS */
|
||||||
|
|
@ -119,6 +115,9 @@
|
||||||
/* Define to 1 if you have the `getprotobynumber' function. */
|
/* Define to 1 if you have the `getprotobynumber' function. */
|
||||||
#define EVENT__HAVE_GETPROTOBYNUMBER 1
|
#define EVENT__HAVE_GETPROTOBYNUMBER 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getrandom' function. */
|
||||||
|
#define EVENT__HAVE_GETRANDOM 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `getservbyname' function. */
|
/* Define to 1 if you have the `getservbyname' function. */
|
||||||
#define EVENT__HAVE_GETSERVBYNAME 1
|
#define EVENT__HAVE_GETSERVBYNAME 1
|
||||||
|
|
||||||
|
|
@ -138,19 +137,25 @@
|
||||||
#define EVENT__HAVE_INTTYPES_H 1
|
#define EVENT__HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `issetugid' function. */
|
/* Define to 1 if you have the `issetugid' function. */
|
||||||
#define EVENT__HAVE_ISSETUGID 1
|
/* #undef EVENT__HAVE_ISSETUGID */
|
||||||
|
|
||||||
/* Define to 1 if you have the `kqueue' function. */
|
/* Define to 1 if you have the `kqueue' function. */
|
||||||
#define EVENT__HAVE_KQUEUE 1
|
/* #undef EVENT__HAVE_KQUEUE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
|
||||||
|
/* #undef EVENT__HAVE_LIBWS2_32 */
|
||||||
|
|
||||||
/* Define if the system has zlib */
|
/* Define if the system has zlib */
|
||||||
#define EVENT__HAVE_LIBZ 1
|
#define EVENT__HAVE_LIBZ 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `mach_absolute_time' function. */
|
/* Define to 1 if you have the `mach_absolute_time' function. */
|
||||||
#define EVENT__HAVE_MACH_ABSOLUTE_TIME 1
|
/* #undef EVENT__HAVE_MACH_ABSOLUTE_TIME */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <mach/mach.h> header file. */
|
||||||
|
/* #undef EVENT__HAVE_MACH_MACH_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <mach/mach_time.h> header file. */
|
/* Define to 1 if you have the <mach/mach_time.h> header file. */
|
||||||
#define EVENT__HAVE_MACH_MACH_TIME_H 1
|
/* #undef EVENT__HAVE_MACH_MACH_TIME_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
#define EVENT__HAVE_MEMORY_H 1
|
#define EVENT__HAVE_MEMORY_H 1
|
||||||
|
|
@ -174,13 +179,16 @@
|
||||||
#define EVENT__HAVE_NETINET_TCP_H 1
|
#define EVENT__HAVE_NETINET_TCP_H 1
|
||||||
|
|
||||||
/* Define if the system has openssl */
|
/* Define if the system has openssl */
|
||||||
/* #undef EVENT__HAVE_OPENSSL */
|
#define EVENT__HAVE_OPENSSL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <openssl/ssl.h> header file. */
|
||||||
|
#define EVENT__HAVE_OPENSSL_SSL_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `pipe' function. */
|
/* Define to 1 if you have the `pipe' function. */
|
||||||
#define EVENT__HAVE_PIPE 1
|
#define EVENT__HAVE_PIPE 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `pipe2' function. */
|
/* Define to 1 if you have the `pipe2' function. */
|
||||||
/* #undef EVENT__HAVE_PIPE2 */
|
#define EVENT__HAVE_PIPE2 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `poll' function. */
|
/* Define to 1 if you have the `poll' function. */
|
||||||
#define EVENT__HAVE_POLL 1
|
#define EVENT__HAVE_POLL 1
|
||||||
|
|
@ -228,7 +236,7 @@
|
||||||
#define EVENT__HAVE_SIGNAL 1
|
#define EVENT__HAVE_SIGNAL 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `splice' function. */
|
/* Define to 1 if you have the `splice' function. */
|
||||||
/* #undef EVENT__HAVE_SPLICE */
|
#define EVENT__HAVE_SPLICE 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdarg.h> header file. */
|
/* Define to 1 if you have the <stdarg.h> header file. */
|
||||||
#define EVENT__HAVE_STDARG_H 1
|
#define EVENT__HAVE_STDARG_H 1
|
||||||
|
|
@ -249,7 +257,7 @@
|
||||||
#define EVENT__HAVE_STRING_H 1
|
#define EVENT__HAVE_STRING_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `strlcpy' function. */
|
/* Define to 1 if you have the `strlcpy' function. */
|
||||||
#define EVENT__HAVE_STRLCPY 1
|
/* #undef EVENT__HAVE_STRLCPY */
|
||||||
|
|
||||||
/* Define to 1 if you have the `strsep' function. */
|
/* Define to 1 if you have the `strsep' function. */
|
||||||
#define EVENT__HAVE_STRSEP 1
|
#define EVENT__HAVE_STRSEP 1
|
||||||
|
|
@ -267,19 +275,22 @@
|
||||||
#define EVENT__HAVE_STRUCT_IN6_ADDR 1
|
#define EVENT__HAVE_STRUCT_IN6_ADDR 1
|
||||||
|
|
||||||
/* Define to 1 if `s6_addr16' is a member of `struct in6_addr'. */
|
/* Define to 1 if `s6_addr16' is a member of `struct in6_addr'. */
|
||||||
/* #undef EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16 */
|
#define EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16 1
|
||||||
|
|
||||||
/* Define to 1 if `s6_addr32' is a member of `struct in6_addr'. */
|
/* Define to 1 if `s6_addr32' is a member of `struct in6_addr'. */
|
||||||
/* #undef EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32 */
|
#define EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32 1
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `struct linger'. */
|
||||||
|
#define EVENT__HAVE_STRUCT_LINGER 1
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `struct sockaddr_in6'. */
|
/* Define to 1 if the system has the type `struct sockaddr_in6'. */
|
||||||
#define EVENT__HAVE_STRUCT_SOCKADDR_IN6 1
|
#define EVENT__HAVE_STRUCT_SOCKADDR_IN6 1
|
||||||
|
|
||||||
/* Define to 1 if `sin6_len' is a member of `struct sockaddr_in6'. */
|
/* Define to 1 if `sin6_len' is a member of `struct sockaddr_in6'. */
|
||||||
#define EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1
|
/* #undef EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN */
|
||||||
|
|
||||||
/* Define to 1 if `sin_len' is a member of `struct sockaddr_in'. */
|
/* Define to 1 if `sin_len' is a member of `struct sockaddr_in'. */
|
||||||
#define EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1
|
/* #undef EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `struct sockaddr_storage'. */
|
/* Define to 1 if the system has the type `struct sockaddr_storage'. */
|
||||||
#define EVENT__HAVE_STRUCT_SOCKADDR_STORAGE 1
|
#define EVENT__HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||||
|
|
@ -290,23 +301,23 @@
|
||||||
/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
|
/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
|
||||||
/* #undef EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */
|
/* #undef EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `struct so_linger'. */
|
/* Define to 1 if the system has the type `struct sockaddr_un'. */
|
||||||
/* #undef EVENT__HAVE_STRUCT_SO_LINGER */
|
#define EVENT__HAVE_STRUCT_SOCKADDR_UN 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `sysctl' function. */
|
/* Define to 1 if you have the `sysctl' function. */
|
||||||
#define EVENT__HAVE_SYSCTL 1
|
/* #undef EVENT__HAVE_SYSCTL */
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/devpoll.h> header file. */
|
/* Define to 1 if you have the <sys/devpoll.h> header file. */
|
||||||
/* #undef EVENT__HAVE_SYS_DEVPOLL_H */
|
/* #undef EVENT__HAVE_SYS_DEVPOLL_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/epoll.h> header file. */
|
/* Define to 1 if you have the <sys/epoll.h> header file. */
|
||||||
/* #undef EVENT__HAVE_SYS_EPOLL_H */
|
#define EVENT__HAVE_SYS_EPOLL_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/eventfd.h> header file. */
|
/* Define to 1 if you have the <sys/eventfd.h> header file. */
|
||||||
/* #undef EVENT__HAVE_SYS_EVENTFD_H */
|
#define EVENT__HAVE_SYS_EVENTFD_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/event.h> header file. */
|
/* Define to 1 if you have the <sys/event.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_EVENT_H 1
|
/* #undef EVENT__HAVE_SYS_EVENT_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_IOCTL_H 1
|
#define EVENT__HAVE_SYS_IOCTL_H 1
|
||||||
|
|
@ -320,6 +331,9 @@
|
||||||
/* Define to 1 if you have the <sys/queue.h> header file. */
|
/* Define to 1 if you have the <sys/queue.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_QUEUE_H 1
|
#define EVENT__HAVE_SYS_QUEUE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/random.h> header file. */
|
||||||
|
#define EVENT__HAVE_SYS_RANDOM_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/resource.h> header file. */
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_RESOURCE_H 1
|
#define EVENT__HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
|
@ -327,7 +341,7 @@
|
||||||
#define EVENT__HAVE_SYS_SELECT_H 1
|
#define EVENT__HAVE_SYS_SELECT_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/sendfile.h> header file. */
|
/* Define to 1 if you have the <sys/sendfile.h> header file. */
|
||||||
/* #undef EVENT__HAVE_SYS_SENDFILE_H */
|
#define EVENT__HAVE_SYS_SENDFILE_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_SOCKET_H 1
|
#define EVENT__HAVE_SYS_SOCKET_H 1
|
||||||
|
|
@ -336,10 +350,10 @@
|
||||||
#define EVENT__HAVE_SYS_STAT_H 1
|
#define EVENT__HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_SYSCTL_H 1
|
/* #undef EVENT__HAVE_SYS_SYSCTL_H */
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/timerfd.h> header file. */
|
/* Define to 1 if you have the <sys/timerfd.h> header file. */
|
||||||
/* #undef EVENT__HAVE_SYS_TIMERFD_H */
|
#define EVENT__HAVE_SYS_TIMERFD_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_TIME_H 1
|
#define EVENT__HAVE_SYS_TIME_H 1
|
||||||
|
|
@ -350,6 +364,9 @@
|
||||||
/* Define to 1 if you have the <sys/uio.h> header file. */
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_UIO_H 1
|
#define EVENT__HAVE_SYS_UIO_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/un.h> header file. */
|
||||||
|
#define EVENT__HAVE_SYS_UN_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||||
#define EVENT__HAVE_SYS_WAIT_H 1
|
#define EVENT__HAVE_SYS_WAIT_H 1
|
||||||
|
|
||||||
|
|
@ -366,7 +383,7 @@
|
||||||
#define EVENT__HAVE_TIMERCMP 1
|
#define EVENT__HAVE_TIMERCMP 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `timerfd_create' function. */
|
/* Define to 1 if you have the `timerfd_create' function. */
|
||||||
/* #undef EVENT__HAVE_TIMERFD_CREATE */
|
#define EVENT__HAVE_TIMERFD_CREATE 1
|
||||||
|
|
||||||
/* Define if timerisset is defined in <sys/time.h> */
|
/* Define if timerisset is defined in <sys/time.h> */
|
||||||
#define EVENT__HAVE_TIMERISSET 1
|
#define EVENT__HAVE_TIMERISSET 1
|
||||||
|
|
@ -401,20 +418,29 @@
|
||||||
/* Define to 1 if you have the `vasprintf' function. */
|
/* Define to 1 if you have the `vasprintf' function. */
|
||||||
#define EVENT__HAVE_VASPRINTF 1
|
#define EVENT__HAVE_VASPRINTF 1
|
||||||
|
|
||||||
/* Define if waitpid() supports WNOWAIT */
|
|
||||||
/* #undef EVENT__HAVE_WAITPID_WITH_WNOWAIT */
|
|
||||||
|
|
||||||
/* Define if kqueue works correctly with pipes */
|
/* Define if kqueue works correctly with pipes */
|
||||||
#define EVENT__HAVE_WORKING_KQUEUE 1
|
/* #undef EVENT__HAVE_WORKING_KQUEUE */
|
||||||
|
|
||||||
/* Define to 1 if you have the <zlib.h> header file. */
|
/* Define to 1 if you have the <zlib.h> header file. */
|
||||||
#define EVENT__HAVE_ZLIB_H 1
|
#define EVENT__HAVE_ZLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_gmtime64' function. */
|
||||||
|
/* #undef EVENT__HAVE__GMTIME64 */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_gmtime64_s' function. */
|
||||||
|
/* #undef EVENT__HAVE__GMTIME64_S */
|
||||||
|
|
||||||
|
/* Define to 1 if compiler have __FUNCTION__ */
|
||||||
|
#define EVENT__HAVE___FUNCTION__ 1
|
||||||
|
|
||||||
|
/* Define to 1 if compiler have __func__ */
|
||||||
|
#define EVENT__HAVE___func__ 1
|
||||||
|
|
||||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||||
#define EVENT__LT_OBJDIR ".libs/"
|
#define EVENT__LT_OBJDIR ".libs/"
|
||||||
|
|
||||||
/* Numeric representation of the version */
|
/* Numeric representation of the version */
|
||||||
#define EVENT__NUMERIC_VERSION 0x02010800
|
#define EVENT__NUMERIC_VERSION 0x02010c00
|
||||||
|
|
||||||
/* Name of package */
|
/* Name of package */
|
||||||
#define EVENT__PACKAGE "libevent"
|
#define EVENT__PACKAGE "libevent"
|
||||||
|
|
@ -426,7 +452,7 @@
|
||||||
#define EVENT__PACKAGE_NAME "libevent"
|
#define EVENT__PACKAGE_NAME "libevent"
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
/* Define to the full name and version of this package. */
|
||||||
#define EVENT__PACKAGE_STRING "libevent 2.1.8-stable"
|
#define EVENT__PACKAGE_STRING "libevent 2.1.12-stable"
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#define EVENT__PACKAGE_TARNAME "libevent"
|
#define EVENT__PACKAGE_TARNAME "libevent"
|
||||||
|
|
@ -435,7 +461,7 @@
|
||||||
#define EVENT__PACKAGE_URL ""
|
#define EVENT__PACKAGE_URL ""
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#define EVENT__PACKAGE_VERSION "2.1.8-stable"
|
#define EVENT__PACKAGE_VERSION "2.1.12-stable"
|
||||||
|
|
||||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||||
your system. */
|
your system. */
|
||||||
|
|
@ -462,83 +488,83 @@
|
||||||
/* The size of `size_t', as computed by sizeof. */
|
/* The size of `size_t', as computed by sizeof. */
|
||||||
#define EVENT__SIZEOF_SIZE_T 8
|
#define EVENT__SIZEOF_SIZE_T 8
|
||||||
|
|
||||||
|
/* The size of `time_t', as computed by sizeof. */
|
||||||
|
#define EVENT__SIZEOF_TIME_T 8
|
||||||
|
|
||||||
/* The size of `void *', as computed by sizeof. */
|
/* The size of `void *', as computed by sizeof. */
|
||||||
#define EVENT__SIZEOF_VOID_P 8
|
#define EVENT__SIZEOF_VOID_P 8
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
#define EVENT__STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
#define EVENT__TIME_WITH_SYS_TIME 1
|
#define EVENT__TIME_WITH_SYS_TIME 1
|
||||||
|
|
||||||
/* Enable extensions on AIX 3, Interix. */
|
/* Enable extensions on AIX 3, Interix. */
|
||||||
#ifndef EVENT___ALL_SOURCE
|
#ifndef _ALL_SOURCE
|
||||||
# define EVENT___ALL_SOURCE 1
|
# define _ALL_SOURCE 1
|
||||||
#endif
|
#endif
|
||||||
/* Enable GNU extensions on systems that have them. */
|
/* Enable GNU extensions on systems that have them. */
|
||||||
#ifndef EVENT___GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
# define EVENT___GNU_SOURCE 1
|
# define _GNU_SOURCE 1
|
||||||
#endif
|
#endif
|
||||||
/* Enable threading extensions on Solaris. */
|
/* Enable threading extensions on Solaris. */
|
||||||
#ifndef EVENT___POSIX_PTHREAD_SEMANTICS
|
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||||
# define EVENT___POSIX_PTHREAD_SEMANTICS 1
|
# define _POSIX_PTHREAD_SEMANTICS 1
|
||||||
#endif
|
#endif
|
||||||
/* Enable extensions on HP NonStop. */
|
/* Enable extensions on HP NonStop. */
|
||||||
#ifndef EVENT___TANDEM_SOURCE
|
#ifndef _TANDEM_SOURCE
|
||||||
# define EVENT___TANDEM_SOURCE 1
|
# define _TANDEM_SOURCE 1
|
||||||
#endif
|
#endif
|
||||||
/* Enable general extensions on Solaris. */
|
/* Enable general extensions on Solaris. */
|
||||||
#ifndef EVENT____EXTENSIONS__
|
#ifndef __EXTENSIONS__
|
||||||
# define EVENT____EXTENSIONS__ 1
|
# define __EXTENSIONS__ 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Version number of package */
|
/* Version number of package */
|
||||||
#define EVENT__VERSION "2.1.8-stable"
|
#define EVENT__VERSION "2.1.12-stable"
|
||||||
|
|
||||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||||
#ifndef EVENT___DARWIN_USE_64_BIT_INODE
|
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||||
# define EVENT___DARWIN_USE_64_BIT_INODE 1
|
# define _DARWIN_USE_64_BIT_INODE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
/* #undef EVENT___FILE_OFFSET_BITS */
|
/* #undef _FILE_OFFSET_BITS */
|
||||||
|
|
||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
/* #undef EVENT___LARGE_FILES */
|
/* #undef _LARGE_FILES */
|
||||||
|
|
||||||
/* Define to 1 if on MINIX. */
|
/* Define to 1 if on MINIX. */
|
||||||
/* #undef EVENT___MINIX */
|
/* #undef _MINIX */
|
||||||
|
|
||||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||||
this defined. */
|
this defined. */
|
||||||
/* #undef EVENT___POSIX_1_SOURCE */
|
/* #undef _POSIX_1_SOURCE */
|
||||||
|
|
||||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||||
/* #undef EVENT___POSIX_SOURCE */
|
/* #undef _POSIX_SOURCE */
|
||||||
|
|
||||||
/* Define to appropriate substitue if compiler doesnt have __func__ */
|
|
||||||
/* #undef EVENT____func__ */
|
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef EVENT__const */
|
/* #undef const */
|
||||||
|
|
||||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||||
#ifndef EVENT____cplusplus
|
#ifndef __cplusplus
|
||||||
/* #undef EVENT__inline */
|
/* #undef inline */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> does not define. */
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
/* #undef EVENT__pid_t */
|
/* #undef pid_t */
|
||||||
|
|
||||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
/* #undef EVENT__size_t */
|
/* #undef size_t */
|
||||||
|
|
||||||
/* Define to unsigned int if you dont have it */
|
/* Define to unsigned int if you dont have it */
|
||||||
/* #undef EVENT__socklen_t */
|
/* #undef socklen_t */
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> does not define. */
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
/* #undef EVENT__ssize_t */
|
/* #undef ssize_t */
|
||||||
|
|
||||||
#endif /* event2/event-config.h */
|
#endif /* event2/event-config.h */
|
||||||
|
|
|
||||||
|
|
@ -612,6 +612,12 @@ int evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap)
|
||||||
/** Replacement for inet_ntop for platforms which lack it. */
|
/** Replacement for inet_ntop for platforms which lack it. */
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
const char *evutil_inet_ntop(int af, const void *src, char *dst, size_t len);
|
const char *evutil_inet_ntop(int af, const void *src, char *dst, size_t len);
|
||||||
|
/** Variation of inet_pton that also parses IPv6 scopes. Public for
|
||||||
|
unit tests. No reason to call this directly.
|
||||||
|
*/
|
||||||
|
EVENT2_EXPORT_SYMBOL
|
||||||
|
int evutil_inet_pton_scope(int af, const char *src, void *dst,
|
||||||
|
unsigned *indexp);
|
||||||
/** Replacement for inet_pton for platforms which lack it. */
|
/** Replacement for inet_pton for platforms which lack it. */
|
||||||
EVENT2_EXPORT_SYMBOL
|
EVENT2_EXPORT_SYMBOL
|
||||||
int evutil_inet_pton(int af, const char *src, void *dst);
|
int evutil_inet_pton(int af, const char *src, void *dst);
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,2 @@
|
||||||
|
We use custom libpcap build as starting from Ubuntu 22.04 libpcap references d-bus related packages.
|
||||||
|
Customized version does not reference D-Bus support libraries.
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Paolo Abeni (Italy)
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
|
* products derived from this software without specific prior written
|
||||||
|
* permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* bluetooth data struct
|
||||||
|
* By Paolo Abeni <paolo.abeni@email.it>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_bluetooth_h
|
||||||
|
#define lib_pcap_bluetooth_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header prepended libpcap to each bluetooth h4 frame,
|
||||||
|
* fields are in network byte order
|
||||||
|
*/
|
||||||
|
typedef struct _pcap_bluetooth_h4_header {
|
||||||
|
uint32_t direction; /* if first bit is set direction is incoming */
|
||||||
|
} pcap_bluetooth_h4_header;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header prepended libpcap to each bluetooth linux monitor frame,
|
||||||
|
* fields are in network byte order
|
||||||
|
*/
|
||||||
|
typedef struct _pcap_bluetooth_linux_monitor_header {
|
||||||
|
uint16_t adapter_id;
|
||||||
|
uint16_t opcode;
|
||||||
|
} pcap_bluetooth_linux_monitor_header;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,291 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from the Stanford/CMU enet packet filter,
|
||||||
|
* (net/enet.c) distributed as part of 4.3BSD, and code contributed
|
||||||
|
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
|
||||||
|
* Berkeley Laboratory.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* @(#)bpf.h 7.1 (Berkeley) 5/7/91
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is libpcap's cut-down version of bpf.h; it includes only
|
||||||
|
* the stuff needed for the code generator and the userland BPF
|
||||||
|
* interpreter, and the libpcap APIs for setting filters, etc..
|
||||||
|
*
|
||||||
|
* "pcap-bpf.c" will include the native OS version, as it deals with
|
||||||
|
* the OS's BPF implementation.
|
||||||
|
*
|
||||||
|
* At least two programs found by Google Code Search explicitly includes
|
||||||
|
* <pcap/bpf.h> (even though <pcap.h>/<pcap/pcap.h> includes it for you),
|
||||||
|
* so moving that stuff to <pcap/pcap.h> would break the build for some
|
||||||
|
* programs.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we've already included <net/bpf.h>, don't re-define this stuff.
|
||||||
|
* We assume BSD-style multiple-include protection in <net/bpf.h>,
|
||||||
|
* which is true of all but the oldest versions of FreeBSD and NetBSD,
|
||||||
|
* or Tru64 UNIX-style multiple-include protection (or, at least,
|
||||||
|
* Tru64 UNIX 5.x-style; I don't have earlier versions available to check),
|
||||||
|
* or AIX-style multiple-include protection (or, at least, AIX 5.x-style;
|
||||||
|
* I don't have earlier versions available to check), or QNX-style
|
||||||
|
* multiple-include protection (as per GitHub pull request #394).
|
||||||
|
*
|
||||||
|
* We trust that they will define structures and macros and types in
|
||||||
|
* a fashion that's source-compatible and binary-compatible with our
|
||||||
|
* definitions.
|
||||||
|
*
|
||||||
|
* We do not check for BPF_MAJOR_VERSION, as that's defined by
|
||||||
|
* <linux/filter.h>, which is directly or indirectly included in some
|
||||||
|
* programs that also include pcap.h, and <linux/filter.h> doesn't
|
||||||
|
* define stuff we need. We *do* protect against <linux/filter.h>
|
||||||
|
* defining various macros for BPF code itself; <linux/filter.h> says
|
||||||
|
*
|
||||||
|
* Try and keep these values and structures similar to BSD, especially
|
||||||
|
* the BPF code definitions which need to match so you can share filters
|
||||||
|
*
|
||||||
|
* so we trust that it will define them in a fashion that's source-compatible
|
||||||
|
* and binary-compatible with our definitions.
|
||||||
|
*
|
||||||
|
* This also provides our own multiple-include protection.
|
||||||
|
*/
|
||||||
|
#if !defined(_NET_BPF_H_) && !defined(_NET_BPF_H_INCLUDED) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h)
|
||||||
|
#define lib_pcap_bpf_h
|
||||||
|
|
||||||
|
#include <pcap/funcattrs.h>
|
||||||
|
#include <pcap/dlt.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* BSD style release date */
|
||||||
|
#define BPF_RELEASE 199606
|
||||||
|
|
||||||
|
#ifdef MSDOS /* must be 32-bit */
|
||||||
|
typedef long bpf_int32;
|
||||||
|
typedef unsigned long bpf_u_int32;
|
||||||
|
#else
|
||||||
|
typedef int bpf_int32;
|
||||||
|
typedef u_int bpf_u_int32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Alignment macros. BPF_WORDALIGN rounds up to the next
|
||||||
|
* even multiple of BPF_ALIGNMENT.
|
||||||
|
*
|
||||||
|
* Tcpdump's print-pflog.c uses this, so we define it here.
|
||||||
|
*/
|
||||||
|
#ifndef __NetBSD__
|
||||||
|
#define BPF_ALIGNMENT sizeof(bpf_int32)
|
||||||
|
#else
|
||||||
|
#define BPF_ALIGNMENT sizeof(long)
|
||||||
|
#endif
|
||||||
|
#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structure for "pcap_compile()", "pcap_setfilter()", etc..
|
||||||
|
*/
|
||||||
|
struct bpf_program {
|
||||||
|
u_int bf_len;
|
||||||
|
struct bpf_insn *bf_insns;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The instruction encodings.
|
||||||
|
*
|
||||||
|
* Please inform tcpdump-workers@lists.tcpdump.org if you use any
|
||||||
|
* of the reserved values, so that we can note that they're used
|
||||||
|
* (and perhaps implement it in the reference BPF implementation
|
||||||
|
* and encourage its implementation elsewhere).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The upper 8 bits of the opcode aren't used. BSD/OS used 0x8000.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* instruction classes */
|
||||||
|
#define BPF_CLASS(code) ((code) & 0x07)
|
||||||
|
#define BPF_LD 0x00
|
||||||
|
#define BPF_LDX 0x01
|
||||||
|
#define BPF_ST 0x02
|
||||||
|
#define BPF_STX 0x03
|
||||||
|
#define BPF_ALU 0x04
|
||||||
|
#define BPF_JMP 0x05
|
||||||
|
#define BPF_RET 0x06
|
||||||
|
#define BPF_MISC 0x07
|
||||||
|
|
||||||
|
/* ld/ldx fields */
|
||||||
|
#define BPF_SIZE(code) ((code) & 0x18)
|
||||||
|
#define BPF_W 0x00
|
||||||
|
#define BPF_H 0x08
|
||||||
|
#define BPF_B 0x10
|
||||||
|
/* 0x18 reserved; used by BSD/OS */
|
||||||
|
#define BPF_MODE(code) ((code) & 0xe0)
|
||||||
|
#define BPF_IMM 0x00
|
||||||
|
#define BPF_ABS 0x20
|
||||||
|
#define BPF_IND 0x40
|
||||||
|
#define BPF_MEM 0x60
|
||||||
|
#define BPF_LEN 0x80
|
||||||
|
#define BPF_MSH 0xa0
|
||||||
|
/* 0xc0 reserved; used by BSD/OS */
|
||||||
|
/* 0xe0 reserved; used by BSD/OS */
|
||||||
|
|
||||||
|
/* alu/jmp fields */
|
||||||
|
#define BPF_OP(code) ((code) & 0xf0)
|
||||||
|
#define BPF_ADD 0x00
|
||||||
|
#define BPF_SUB 0x10
|
||||||
|
#define BPF_MUL 0x20
|
||||||
|
#define BPF_DIV 0x30
|
||||||
|
#define BPF_OR 0x40
|
||||||
|
#define BPF_AND 0x50
|
||||||
|
#define BPF_LSH 0x60
|
||||||
|
#define BPF_RSH 0x70
|
||||||
|
#define BPF_NEG 0x80
|
||||||
|
#define BPF_MOD 0x90
|
||||||
|
#define BPF_XOR 0xa0
|
||||||
|
/* 0xb0 reserved */
|
||||||
|
/* 0xc0 reserved */
|
||||||
|
/* 0xd0 reserved */
|
||||||
|
/* 0xe0 reserved */
|
||||||
|
/* 0xf0 reserved */
|
||||||
|
|
||||||
|
#define BPF_JA 0x00
|
||||||
|
#define BPF_JEQ 0x10
|
||||||
|
#define BPF_JGT 0x20
|
||||||
|
#define BPF_JGE 0x30
|
||||||
|
#define BPF_JSET 0x40
|
||||||
|
/* 0x50 reserved; used on BSD/OS */
|
||||||
|
/* 0x60 reserved */
|
||||||
|
/* 0x70 reserved */
|
||||||
|
/* 0x80 reserved */
|
||||||
|
/* 0x90 reserved */
|
||||||
|
/* 0xa0 reserved */
|
||||||
|
/* 0xb0 reserved */
|
||||||
|
/* 0xc0 reserved */
|
||||||
|
/* 0xd0 reserved */
|
||||||
|
/* 0xe0 reserved */
|
||||||
|
/* 0xf0 reserved */
|
||||||
|
#define BPF_SRC(code) ((code) & 0x08)
|
||||||
|
#define BPF_K 0x00
|
||||||
|
#define BPF_X 0x08
|
||||||
|
|
||||||
|
/* ret - BPF_K and BPF_X also apply */
|
||||||
|
#define BPF_RVAL(code) ((code) & 0x18)
|
||||||
|
#define BPF_A 0x10
|
||||||
|
/* 0x18 reserved */
|
||||||
|
|
||||||
|
/* misc */
|
||||||
|
#define BPF_MISCOP(code) ((code) & 0xf8)
|
||||||
|
#define BPF_TAX 0x00
|
||||||
|
/* 0x08 reserved */
|
||||||
|
/* 0x10 reserved */
|
||||||
|
/* 0x18 reserved */
|
||||||
|
/* #define BPF_COP 0x20 NetBSD "coprocessor" extensions */
|
||||||
|
/* 0x28 reserved */
|
||||||
|
/* 0x30 reserved */
|
||||||
|
/* 0x38 reserved */
|
||||||
|
/* #define BPF_COPX 0x40 NetBSD "coprocessor" extensions */
|
||||||
|
/* also used on BSD/OS */
|
||||||
|
/* 0x48 reserved */
|
||||||
|
/* 0x50 reserved */
|
||||||
|
/* 0x58 reserved */
|
||||||
|
/* 0x60 reserved */
|
||||||
|
/* 0x68 reserved */
|
||||||
|
/* 0x70 reserved */
|
||||||
|
/* 0x78 reserved */
|
||||||
|
#define BPF_TXA 0x80
|
||||||
|
/* 0x88 reserved */
|
||||||
|
/* 0x90 reserved */
|
||||||
|
/* 0x98 reserved */
|
||||||
|
/* 0xa0 reserved */
|
||||||
|
/* 0xa8 reserved */
|
||||||
|
/* 0xb0 reserved */
|
||||||
|
/* 0xb8 reserved */
|
||||||
|
/* 0xc0 reserved; used on BSD/OS */
|
||||||
|
/* 0xc8 reserved */
|
||||||
|
/* 0xd0 reserved */
|
||||||
|
/* 0xd8 reserved */
|
||||||
|
/* 0xe0 reserved */
|
||||||
|
/* 0xe8 reserved */
|
||||||
|
/* 0xf0 reserved */
|
||||||
|
/* 0xf8 reserved */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The instruction data structure.
|
||||||
|
*/
|
||||||
|
struct bpf_insn {
|
||||||
|
u_short code;
|
||||||
|
u_char jt;
|
||||||
|
u_char jf;
|
||||||
|
bpf_u_int32 k;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macros for insn array initializers.
|
||||||
|
*
|
||||||
|
* In case somebody's included <linux/filter.h>, or something else that
|
||||||
|
* gives the kernel's definitions of BPF statements, get rid of its
|
||||||
|
* definitions, so we can supply ours instead. If some kernel's
|
||||||
|
* definitions aren't *binary-compatible* with what BPF has had
|
||||||
|
* since it first sprung from the brows of Van Jacobson and Steve
|
||||||
|
* McCanne, that kernel should be fixed.
|
||||||
|
*/
|
||||||
|
#ifdef BPF_STMT
|
||||||
|
#undef BPF_STMT
|
||||||
|
#endif
|
||||||
|
#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
|
||||||
|
#ifdef BPF_JUMP
|
||||||
|
#undef BPF_JUMP
|
||||||
|
#endif
|
||||||
|
#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
|
||||||
|
|
||||||
|
PCAP_AVAILABLE_0_4
|
||||||
|
PCAP_API u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
|
||||||
|
|
||||||
|
PCAP_AVAILABLE_0_6
|
||||||
|
PCAP_API int bpf_validate(const struct bpf_insn *f, int len);
|
||||||
|
|
||||||
|
PCAP_AVAILABLE_0_4
|
||||||
|
PCAP_API char *bpf_image(const struct bpf_insn *, int);
|
||||||
|
|
||||||
|
PCAP_AVAILABLE_0_6
|
||||||
|
PCAP_API void bpf_dump(const struct bpf_program *, int);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
|
||||||
|
*/
|
||||||
|
#define BPF_MEMWORDS 16
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) && !defined(lib_pcap_bpf_h) */
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from the Stanford/CMU enet packet filter,
|
||||||
|
* (net/enet.c) distributed as part of 4.3BSD, and code contributed
|
||||||
|
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
|
||||||
|
* Berkeley Laboratory.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_can_socketcan_h
|
||||||
|
#define lib_pcap_can_socketcan_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SocketCAN header, as per Documentation/networking/can.txt in the
|
||||||
|
* Linux source.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
uint32_t can_id;
|
||||||
|
uint8_t payload_length;
|
||||||
|
uint8_t fd_flags;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
} pcap_can_socketcan_hdr;
|
||||||
|
|
||||||
|
/* Bits in the fd_flags field */
|
||||||
|
#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */
|
||||||
|
#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */
|
||||||
|
#define CANFD_FDF 0x04 /* mark CAN FD for dual use of CAN format */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,189 @@
|
||||||
|
/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the Computer Systems
|
||||||
|
* Engineering Group at Lawrence Berkeley Laboratory.
|
||||||
|
* 4. Neither the name of the University nor of the Laboratory may be used
|
||||||
|
* to endorse or promote products derived from this software without
|
||||||
|
* specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_compiler_tests_h
|
||||||
|
#define lib_pcap_compiler_tests_h
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This was introduced by Clang:
|
||||||
|
*
|
||||||
|
* https://clang.llvm.org/docs/LanguageExtensions.html#has-attribute
|
||||||
|
*
|
||||||
|
* in some version (which version?); it has been picked up by GCC 5.0.
|
||||||
|
*/
|
||||||
|
#ifndef __has_attribute
|
||||||
|
/*
|
||||||
|
* It's a macro, so you can check whether it's defined to check
|
||||||
|
* whether it's supported.
|
||||||
|
*
|
||||||
|
* If it's not, define it to always return 0, so that we move on to
|
||||||
|
* the fallback checks.
|
||||||
|
*/
|
||||||
|
#define __has_attribute(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that the C90 spec's "6.8.1 Conditional inclusion" and the
|
||||||
|
* C99 spec's and C11 spec's "6.10.1 Conditional inclusion" say:
|
||||||
|
*
|
||||||
|
* Prior to evaluation, macro invocations in the list of preprocessing
|
||||||
|
* tokens that will become the controlling constant expression are
|
||||||
|
* replaced (except for those macro names modified by the defined unary
|
||||||
|
* operator), just as in normal text. If the token "defined" is
|
||||||
|
* generated as a result of this replacement process or use of the
|
||||||
|
* "defined" unary operator does not match one of the two specified
|
||||||
|
* forms prior to macro replacement, the behavior is undefined.
|
||||||
|
*
|
||||||
|
* so you shouldn't use defined() in a #define that's used in #if or
|
||||||
|
* #elif. Some versions of Clang, for example, will warn about this.
|
||||||
|
*
|
||||||
|
* Instead, we check whether the pre-defined macros for particular
|
||||||
|
* compilers are defined and, if not, define the "is this version XXX
|
||||||
|
* or a later version of this compiler" macros as 0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether this is GCC major.minor or a later release, or some
|
||||||
|
* compiler that claims to be "just like GCC" of that version or a
|
||||||
|
* later release.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ! defined(__GNUC__)
|
||||||
|
/* Not GCC and not "just like GCC" */
|
||||||
|
#define PCAP_IS_AT_LEAST_GNUC_VERSION(major, minor) 0
|
||||||
|
#else
|
||||||
|
/* GCC or "just like GCC" */
|
||||||
|
#define PCAP_IS_AT_LEAST_GNUC_VERSION(major, minor) \
|
||||||
|
(__GNUC__ > (major) || \
|
||||||
|
(__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether this is Clang major.minor or a later release.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(__clang__)
|
||||||
|
/* Not Clang */
|
||||||
|
#define PCAP_IS_AT_LEAST_CLANG_VERSION(major, minor) 0
|
||||||
|
#else
|
||||||
|
/* Clang */
|
||||||
|
#define PCAP_IS_AT_LEAST_CLANG_VERSION(major, minor) \
|
||||||
|
(__clang_major__ > (major) || \
|
||||||
|
(__clang_major__ == (major) && __clang_minor__ >= (minor)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether this is Sun C/SunPro C/Oracle Studio major.minor
|
||||||
|
* or a later release.
|
||||||
|
*
|
||||||
|
* The version number in __SUNPRO_C is encoded in hex BCD, with the
|
||||||
|
* uppermost hex digit being the major version number, the next
|
||||||
|
* one or two hex digits being the minor version number, and
|
||||||
|
* the last digit being the patch version.
|
||||||
|
*
|
||||||
|
* It represents the *compiler* version, not the product version;
|
||||||
|
* see
|
||||||
|
*
|
||||||
|
* https://sourceforge.net/p/predef/wiki/Compilers/
|
||||||
|
*
|
||||||
|
* for a partial mapping, which we assume continues for later
|
||||||
|
* 12.x product releases.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ! defined(__SUNPRO_C)
|
||||||
|
/* Not Sun/Oracle C */
|
||||||
|
#define PCAP_IS_AT_LEAST_SUNC_VERSION(major,minor) 0
|
||||||
|
#else
|
||||||
|
/* Sun/Oracle C */
|
||||||
|
#define PCAP_SUNPRO_VERSION_TO_BCD(major, minor) \
|
||||||
|
(((minor) >= 10) ? \
|
||||||
|
(((major) << 12) | (((minor)/10) << 8) | (((minor)%10) << 4)) : \
|
||||||
|
(((major) << 8) | ((minor) << 4)))
|
||||||
|
#define PCAP_IS_AT_LEAST_SUNC_VERSION(major,minor) \
|
||||||
|
(__SUNPRO_C >= PCAP_SUNPRO_VERSION_TO_BCD((major), (minor)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether this is IBM XL C major.minor or a later release.
|
||||||
|
*
|
||||||
|
* The version number in __xlC__ has the major version in the
|
||||||
|
* upper 8 bits and the minor version in the lower 8 bits.
|
||||||
|
* On AIX __xlC__ is always defined, __ibmxl__ becomes defined in XL C 16.1.
|
||||||
|
* On Linux since XL C 13.1.6 __xlC__ is not defined by default anymore, but
|
||||||
|
* __ibmxl__ is defined since at least XL C 13.1.1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ! defined(__xlC__) && ! defined(__ibmxl__)
|
||||||
|
/* Not XL C */
|
||||||
|
#define PCAP_IS_AT_LEAST_XL_C_VERSION(major,minor) 0
|
||||||
|
#else
|
||||||
|
/* XL C */
|
||||||
|
#if defined(__ibmxl__)
|
||||||
|
/*
|
||||||
|
* Later Linux version of XL C; use __ibmxl_version__ to test
|
||||||
|
* the version.
|
||||||
|
*/
|
||||||
|
#define PCAP_IS_AT_LEAST_XL_C_VERSION(major, minor) \
|
||||||
|
(__ibmxl_version__ > (major) || \
|
||||||
|
(__ibmxl_version__ == (major) && __ibmxl_release__ >= (minor)))
|
||||||
|
#else /* __ibmxl__ */
|
||||||
|
/*
|
||||||
|
* __ibmxl__ not defined; use __xlC__ to test the version.
|
||||||
|
*/
|
||||||
|
#define PCAP_IS_AT_LEAST_XL_C_VERSION(major, minor) \
|
||||||
|
(__xlC__ >= (((major) << 8) | (minor)))
|
||||||
|
#endif /* __ibmxl__ */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether this is HP aC++/HP C major.minor or a later release.
|
||||||
|
*
|
||||||
|
* The version number in __HP_aCC is encoded in zero-padded decimal BCD,
|
||||||
|
* with the "A." stripped off, the uppermost two decimal digits being
|
||||||
|
* the major version number, the next two decimal digits being the minor
|
||||||
|
* version number, and the last two decimal digits being the patch version.
|
||||||
|
* (Strip off the A., remove the . between the major and minor version
|
||||||
|
* number, and add two digits of patch.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if ! defined(__HP_aCC)
|
||||||
|
/* Not HP C */
|
||||||
|
#define PCAP_IS_AT_LEAST_HP_C_VERSION(major,minor) 0
|
||||||
|
#else
|
||||||
|
/* HP C */
|
||||||
|
#define PCAP_IS_AT_LEAST_HP_C_VERSION(major,minor) \
|
||||||
|
(__HP_aCC >= ((major)*10000 + (minor)*100))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* lib_pcap_compiler_tests_h */
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,339 @@
|
||||||
|
/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the Computer Systems
|
||||||
|
* Engineering Group at Lawrence Berkeley Laboratory.
|
||||||
|
* 4. Neither the name of the University nor of the Laboratory may be used
|
||||||
|
* to endorse or promote products derived from this software without
|
||||||
|
* specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_funcattrs_h
|
||||||
|
#define lib_pcap_funcattrs_h
|
||||||
|
|
||||||
|
#include <pcap/compiler-tests.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Attributes to apply to functions and their arguments, using various
|
||||||
|
* compiler-specific extensions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PCAP_API_DEF must be used when defining *data* exported from
|
||||||
|
* libpcap. It can be used when defining *functions* exported
|
||||||
|
* from libpcap, but it doesn't have to be used there. It
|
||||||
|
* should not be used in declarations in headers.
|
||||||
|
*
|
||||||
|
* PCAP_API must be used when *declaring* data or functions
|
||||||
|
* exported from libpcap; PCAP_API_DEF won't work on all platforms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
/*
|
||||||
|
* For Windows:
|
||||||
|
*
|
||||||
|
* when building libpcap:
|
||||||
|
*
|
||||||
|
* if we're building it as a DLL, we have to declare API
|
||||||
|
* functions with __declspec(dllexport);
|
||||||
|
*
|
||||||
|
* if we're building it as a static library, we don't want
|
||||||
|
* to do so.
|
||||||
|
*
|
||||||
|
* when using libpcap:
|
||||||
|
*
|
||||||
|
* if we're using the DLL, calls to its functions are a
|
||||||
|
* little more efficient if they're declared with
|
||||||
|
* __declspec(dllimport);
|
||||||
|
*
|
||||||
|
* if we're not using the dll, we don't want to declare
|
||||||
|
* them that way.
|
||||||
|
*
|
||||||
|
* So:
|
||||||
|
*
|
||||||
|
* if pcap_EXPORTS is defined, we define PCAP_API_DEF as
|
||||||
|
* __declspec(dllexport);
|
||||||
|
*
|
||||||
|
* if PCAP_DLL is defined, we define PCAP_API_DEF as
|
||||||
|
* __declspec(dllimport);
|
||||||
|
*
|
||||||
|
* otherwise, we define PCAP_API_DEF as nothing.
|
||||||
|
*/
|
||||||
|
#if defined(pcap_EXPORTS)
|
||||||
|
/*
|
||||||
|
* We're compiling libpcap as a DLL, so we should export functions
|
||||||
|
* in our API.
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF __declspec(dllexport)
|
||||||
|
#elif defined(PCAP_DLL)
|
||||||
|
/*
|
||||||
|
* We're using libpcap as a DLL, so the calls will be a little more
|
||||||
|
* efficient if we explicitly import the functions.
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF __declspec(dllimport)
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* Either we're building libpcap as a static library, or we're using
|
||||||
|
* it as a static library, or we don't know for certain that we're
|
||||||
|
* using it as a dynamic library, so neither import nor export the
|
||||||
|
* functions explicitly.
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF
|
||||||
|
#endif
|
||||||
|
#elif defined(MSDOS)
|
||||||
|
/* XXX - does this need special treatment? */
|
||||||
|
#define PCAP_API_DEF
|
||||||
|
#else /* UN*X */
|
||||||
|
#ifdef pcap_EXPORTS
|
||||||
|
/*
|
||||||
|
* We're compiling libpcap as a (dynamic) shared library, so we should
|
||||||
|
* export functions in our API. The compiler might be configured not
|
||||||
|
* to export functions from a shared library by default, so we might
|
||||||
|
* have to explicitly mark functions as exported.
|
||||||
|
*/
|
||||||
|
#if PCAP_IS_AT_LEAST_GNUC_VERSION(3,4) \
|
||||||
|
|| PCAP_IS_AT_LEAST_XL_C_VERSION(12,0)
|
||||||
|
/*
|
||||||
|
* GCC 3.4 and later, or some compiler asserting compatibility with
|
||||||
|
* GCC 3.4 and later, or XL C 13.0 and later, so we have
|
||||||
|
* __attribute__((visibility()).
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF __attribute__((visibility("default")))
|
||||||
|
#elif PCAP_IS_AT_LEAST_SUNC_VERSION(5,5)
|
||||||
|
/*
|
||||||
|
* Sun C 5.5 and later, so we have __global.
|
||||||
|
* (Sun C 5.9 and later also have __attribute__((visibility()),
|
||||||
|
* but there's no reason to prefer it with Sun C.)
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF __global
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* We don't have anything to say.
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* We're not building libpcap.
|
||||||
|
*/
|
||||||
|
#define PCAP_API_DEF
|
||||||
|
#endif
|
||||||
|
#endif /* _WIN32/MSDOS/UN*X */
|
||||||
|
|
||||||
|
#define PCAP_API PCAP_API_DEF extern
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Definitions to 1) indicate what version of libpcap first had a given
|
||||||
|
* API and 2) allow upstream providers whose build environments allow
|
||||||
|
* APIs to be designated as "first available in this release" to do so
|
||||||
|
* by appropriately defining them.
|
||||||
|
*
|
||||||
|
* Yes, that's you, Apple. :-) Please define PCAP_AVAILABLE_MACOS()
|
||||||
|
* as necessary to make various APIs "weak exports" to make it easier
|
||||||
|
* for software that's distributed in binary form and that uses libpcap
|
||||||
|
* to run on multiple macOS versions and use new APIs when available.
|
||||||
|
* (Yes, such third-party software exists - Wireshark provides binary
|
||||||
|
* packages for macOS, for example. tcpdump doesn't count, as that's
|
||||||
|
* provided by Apple, so each release can come with a version compiled
|
||||||
|
* to use the APIs present in that release.)
|
||||||
|
*
|
||||||
|
* The non-macOS versioning is based on
|
||||||
|
*
|
||||||
|
* https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
|
||||||
|
*
|
||||||
|
* If there are any corrections, please submit it upstream to the
|
||||||
|
* libpcap maintainers, preferably as a pull request on
|
||||||
|
*
|
||||||
|
* https://github.com/the-tcpdump-group/libpcap
|
||||||
|
*
|
||||||
|
* We don't define it ourselves because, if you're building and
|
||||||
|
* installing libpcap on macOS yourself, the APIs will be available
|
||||||
|
* no matter what OS version you're installing it on.
|
||||||
|
*
|
||||||
|
* For other platforms, we don't define them, leaving it up to
|
||||||
|
* others to do so based on their OS versions, if appropriate.
|
||||||
|
*
|
||||||
|
* We start with libpcap 0.4, as that was the last LBL release, and
|
||||||
|
* I've never seen earlier releases.
|
||||||
|
*/
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#include <Availability.h>
|
||||||
|
/*
|
||||||
|
* When building as part of macOS, define this as __API_AVAILABLE(__VA_ARGS__).
|
||||||
|
*
|
||||||
|
* XXX - if there's some #define to indicate that this is being built
|
||||||
|
* as part of the macOS build process, we could make that Just Work.
|
||||||
|
*/
|
||||||
|
#define PCAP_AVAILABLE(...)
|
||||||
|
#define PCAP_AVAILABLE_0_4 PCAP_AVAILABLE(macos(10.0)) /* Did any version of Mac OS X ship with this? */
|
||||||
|
#define PCAP_AVAILABLE_0_5 PCAP_AVAILABLE(macos(10.0)) /* Did any version of Mac OS X ship with this? */
|
||||||
|
#define PCAP_AVAILABLE_0_6 PCAP_AVAILABLE(macos(10.1))
|
||||||
|
#define PCAP_AVAILABLE_0_7 PCAP_AVAILABLE(macos(10.4))
|
||||||
|
#define PCAP_AVAILABLE_0_8 PCAP_AVAILABLE(macos(10.4))
|
||||||
|
#define PCAP_AVAILABLE_0_9 PCAP_AVAILABLE(macos(10.5), ios(1.0))
|
||||||
|
#define PCAP_AVAILABLE_1_0 PCAP_AVAILABLE(macos(10.6), ios(4.0))
|
||||||
|
/* #define PCAP_AVAILABLE_1_1 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_2 PCAP_AVAILABLE(macos(10.9), ios(6.0))
|
||||||
|
/* #define PCAP_AVAILABLE_1_3 no routines added to the API */
|
||||||
|
/* #define PCAP_AVAILABLE_1_4 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_5 PCAP_AVAILABLE(macos(10.10), ios(7.0), watchos(1.0))
|
||||||
|
/* #define PCAP_AVAILABLE_1_6 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_7 PCAP_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
|
||||||
|
#define PCAP_AVAILABLE_1_8 PCAP_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0)) /* only Windows adds routines to the API; XXX - what version first had it? */
|
||||||
|
#define PCAP_AVAILABLE_1_9 PCAP_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
|
||||||
|
#define PCAP_AVAILABLE_1_10 /* not in macOS yet */
|
||||||
|
#define PCAP_AVAILABLE_1_11 /* not released yet, so not in macOS yet */
|
||||||
|
#else /* __APPLE__ */
|
||||||
|
#define PCAP_AVAILABLE_0_4
|
||||||
|
#define PCAP_AVAILABLE_0_5
|
||||||
|
#define PCAP_AVAILABLE_0_6
|
||||||
|
#define PCAP_AVAILABLE_0_7
|
||||||
|
#define PCAP_AVAILABLE_0_8
|
||||||
|
#define PCAP_AVAILABLE_0_9
|
||||||
|
#define PCAP_AVAILABLE_1_0
|
||||||
|
/* #define PCAP_AVAILABLE_1_1 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_2
|
||||||
|
/* #define PCAP_AVAILABLE_1_3 no routines added to the API */
|
||||||
|
/* #define PCAP_AVAILABLE_1_4 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_5
|
||||||
|
/* #define PCAP_AVAILABLE_1_6 no routines added to the API */
|
||||||
|
#define PCAP_AVAILABLE_1_7
|
||||||
|
#define PCAP_AVAILABLE_1_8
|
||||||
|
#define PCAP_AVAILABLE_1_9
|
||||||
|
#define PCAP_AVAILABLE_1_10
|
||||||
|
#define PCAP_AVAILABLE_1_11
|
||||||
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PCAP_NORETURN, before a function declaration, means "this function
|
||||||
|
* never returns". (It must go before the function declaration, e.g.
|
||||||
|
* "extern PCAP_NORETURN func(...)" rather than after the function
|
||||||
|
* declaration, as the MSVC version has to go before the declaration.)
|
||||||
|
*
|
||||||
|
* PCAP_NORETURN_DEF, before a function *definition*, means "this
|
||||||
|
* function never returns"; it would be used only for static functions
|
||||||
|
* that are defined before any use, and thus have no declaration.
|
||||||
|
* (MSVC doesn't support that; I guess the "decl" in "__declspec"
|
||||||
|
* means "declaration", and __declspec doesn't work with definitions.)
|
||||||
|
*/
|
||||||
|
#if __has_attribute(noreturn) \
|
||||||
|
|| PCAP_IS_AT_LEAST_GNUC_VERSION(2,5) \
|
||||||
|
|| PCAP_IS_AT_LEAST_SUNC_VERSION(5,9) \
|
||||||
|
|| PCAP_IS_AT_LEAST_XL_C_VERSION(10,1) \
|
||||||
|
|| PCAP_IS_AT_LEAST_HP_C_VERSION(6,10)
|
||||||
|
/*
|
||||||
|
* Compiler with support for __attribute((noreturn)), or GCC 2.5 and
|
||||||
|
* later, or some compiler asserting compatibility with GCC 2.5 and
|
||||||
|
* later, or Solaris Studio 12 (Sun C 5.9) and later, or IBM XL C 10.1
|
||||||
|
* and later (do any earlier versions of XL C support this?), or HP aCC
|
||||||
|
* A.06.10 and later.
|
||||||
|
*/
|
||||||
|
#define PCAP_NORETURN __attribute((noreturn))
|
||||||
|
#define PCAP_NORETURN_DEF __attribute((noreturn))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
/*
|
||||||
|
* MSVC.
|
||||||
|
*/
|
||||||
|
#define PCAP_NORETURN __declspec(noreturn)
|
||||||
|
#define PCAP_NORETURN_DEF
|
||||||
|
#else
|
||||||
|
#define PCAP_NORETURN
|
||||||
|
#define PCAP_NORETURN_DEF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PCAP_PRINTFLIKE(x,y), after a function declaration, means "this function
|
||||||
|
* does printf-style formatting, with the xth argument being the format
|
||||||
|
* string and the yth argument being the first argument for the format
|
||||||
|
* string".
|
||||||
|
*/
|
||||||
|
#if __has_attribute(__format__) \
|
||||||
|
|| PCAP_IS_AT_LEAST_GNUC_VERSION(2,3) \
|
||||||
|
|| PCAP_IS_AT_LEAST_XL_C_VERSION(10,1) \
|
||||||
|
|| PCAP_IS_AT_LEAST_HP_C_VERSION(6,10)
|
||||||
|
/*
|
||||||
|
* Compiler with support for it, or GCC 2.3 and later, or some compiler
|
||||||
|
* asserting compatibility with GCC 2.3 and later, or IBM XL C 10.1
|
||||||
|
* and later (do any earlier versions of XL C support this?),
|
||||||
|
* or HP aCC A.06.10 and later.
|
||||||
|
*/
|
||||||
|
#define PCAP_PRINTFLIKE(x,y) __attribute__((__format__(__printf__,x,y)))
|
||||||
|
#else
|
||||||
|
#define PCAP_PRINTFLIKE(x,y)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PCAP_DEPRECATED(func, msg), after a function declaration, marks the
|
||||||
|
* function as deprecated.
|
||||||
|
*
|
||||||
|
* The argument is a string giving the warning message to use if the
|
||||||
|
* compiler supports that.
|
||||||
|
*/
|
||||||
|
#if __has_attribute(deprecated) \
|
||||||
|
|| PCAP_IS_AT_LEAST_GNUC_VERSION(4,5) \
|
||||||
|
|| PCAP_IS_AT_LEAST_SUNC_VERSION(5,13)
|
||||||
|
/*
|
||||||
|
* Compiler that supports __has_attribute and __attribute__((deprecated)),
|
||||||
|
* or GCC 4.5 and later, or Sun/Oracle C 12.4 (Sun C 5.13) and later.
|
||||||
|
*
|
||||||
|
* Those support __attribute__((deprecated(msg))) (we assume, perhaps
|
||||||
|
* incorrectly, that anything that supports __has_attribute() is
|
||||||
|
* recent enough to support __attribute__((deprecated(msg)))).
|
||||||
|
*/
|
||||||
|
#define PCAP_DEPRECATED(msg) __attribute__((deprecated(msg)))
|
||||||
|
#elif PCAP_IS_AT_LEAST_GNUC_VERSION(3,1)
|
||||||
|
/*
|
||||||
|
* GCC 3.1 through 4.4.
|
||||||
|
*
|
||||||
|
* Those support __attribute__((deprecated)) but not
|
||||||
|
* __attribute__((deprecated(msg))).
|
||||||
|
*/
|
||||||
|
#define PCAP_DEPRECATED(msg) __attribute__((deprecated))
|
||||||
|
#elif defined(_MSC_VER) && !defined(BUILDING_PCAP)
|
||||||
|
/*
|
||||||
|
* MSVC, and we're not building libpcap itself; it's VS 2015
|
||||||
|
* and later, so we have __declspec(deprecated(...)).
|
||||||
|
*
|
||||||
|
* If we *are* building libpcap, we don't want this, as it'll warn
|
||||||
|
* us even if we *define* the function.
|
||||||
|
*/
|
||||||
|
#define PCAP_DEPRECATED(msg) _declspec(deprecated(msg))
|
||||||
|
#else
|
||||||
|
#define PCAP_DEPRECATED(msg)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For flagging arguments as format strings in MSVC.
|
||||||
|
*/
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <sal.h>
|
||||||
|
#define PCAP_FORMAT_STRING(p) _Printf_format_string_ p
|
||||||
|
#else
|
||||||
|
#define PCAP_FORMAT_STRING(p) p
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* lib_pcap_funcattrs_h */
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from the Stanford/CMU enet packet filter,
|
||||||
|
* (net/enet.c) distributed as part of 4.3BSD, and code contributed
|
||||||
|
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
|
||||||
|
* Berkeley Laboratory.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define IPH_AF_INET 2 /* Matches Solaris's AF_INET */
|
||||||
|
#define IPH_AF_INET6 26 /* Matches Solaris's AF_INET6 */
|
||||||
|
|
||||||
|
#define IPNET_OUTBOUND 1
|
||||||
|
#define IPNET_INBOUND 2
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1994, 1996
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the Computer Systems
|
||||||
|
* Engineering Group at Lawrence Berkeley Laboratory.
|
||||||
|
* 4. Neither the name of the University nor of the Laboratory may be used
|
||||||
|
* to endorse or promote products derived from this software without
|
||||||
|
* specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_namedb_h
|
||||||
|
#define lib_pcap_namedb_h
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* As returned by the pcap_next_etherent()
|
||||||
|
* XXX this stuff doesn't belong in this interface, but this
|
||||||
|
* library already must do name to address translation, so
|
||||||
|
* on systems that don't have support for /etc/ethers, we
|
||||||
|
* export these hooks since they're already being used by
|
||||||
|
* some applications (such as tcpdump) and already being
|
||||||
|
* marked as exported in some OSes offering libpcap (such
|
||||||
|
* as Debian).
|
||||||
|
*/
|
||||||
|
struct pcap_etherent {
|
||||||
|
u_char addr[6];
|
||||||
|
char name[122];
|
||||||
|
};
|
||||||
|
#ifndef PCAP_ETHERS_FILE
|
||||||
|
#define PCAP_ETHERS_FILE "/etc/ethers"
|
||||||
|
#endif
|
||||||
|
PCAP_API struct pcap_etherent *pcap_next_etherent(FILE *);
|
||||||
|
PCAP_API u_char *pcap_ether_hostton(const char*);
|
||||||
|
PCAP_API u_char *pcap_ether_aton(const char *);
|
||||||
|
|
||||||
|
PCAP_API
|
||||||
|
PCAP_DEPRECATED("this is not reentrant; use 'pcap_nametoaddrinfo' instead")
|
||||||
|
bpf_u_int32 **pcap_nametoaddr(const char *);
|
||||||
|
PCAP_API struct addrinfo *pcap_nametoaddrinfo(const char *);
|
||||||
|
PCAP_API bpf_u_int32 pcap_nametonetaddr(const char *);
|
||||||
|
|
||||||
|
PCAP_API int pcap_nametoport(const char *, int *, int *);
|
||||||
|
PCAP_API int pcap_nametoportrange(const char *, int *, int *, int *);
|
||||||
|
PCAP_API int pcap_nametoproto(const char *);
|
||||||
|
PCAP_API int pcap_nametoeproto(const char *);
|
||||||
|
PCAP_API int pcap_nametollc(const char *);
|
||||||
|
/*
|
||||||
|
* If a protocol is unknown, PROTO_UNDEF is returned.
|
||||||
|
* Also, pcap_nametoport() returns the protocol along with the port number.
|
||||||
|
* If there are ambiguous entried in /etc/services (i.e. domain
|
||||||
|
* can be either tcp or udp) PROTO_UNDEF is returned.
|
||||||
|
*/
|
||||||
|
#define PROTO_UNDEF -1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, Petar Alilovic,
|
||||||
|
* Faculty of Electrical Engineering and Computing, University of Zagreb
|
||||||
|
* All rights reserved
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
* DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_nflog_h
|
||||||
|
#define lib_pcap_nflog_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structure of an NFLOG header and TLV parts, as described at
|
||||||
|
* https://www.tcpdump.org/linktypes/LINKTYPE_NFLOG.html
|
||||||
|
*
|
||||||
|
* The NFLOG header is big-endian.
|
||||||
|
*
|
||||||
|
* The TLV length and type are in host byte order. The value is either
|
||||||
|
* big-endian or is an array of bytes in some externally-specified byte
|
||||||
|
* order (text string, link-layer address, link-layer header, packet
|
||||||
|
* data, etc.).
|
||||||
|
*/
|
||||||
|
typedef struct nflog_hdr {
|
||||||
|
uint8_t nflog_family; /* address family */
|
||||||
|
uint8_t nflog_version; /* version */
|
||||||
|
uint16_t nflog_rid; /* resource ID */
|
||||||
|
} nflog_hdr_t;
|
||||||
|
|
||||||
|
typedef struct nflog_tlv {
|
||||||
|
uint16_t tlv_length; /* tlv length */
|
||||||
|
uint16_t tlv_type; /* tlv type */
|
||||||
|
/* value follows this */
|
||||||
|
} nflog_tlv_t;
|
||||||
|
|
||||||
|
typedef struct nflog_packet_hdr {
|
||||||
|
uint16_t hw_protocol; /* hw protocol */
|
||||||
|
uint8_t hook; /* netfilter hook */
|
||||||
|
uint8_t pad; /* padding to 32 bits */
|
||||||
|
} nflog_packet_hdr_t;
|
||||||
|
|
||||||
|
typedef struct nflog_hwaddr {
|
||||||
|
uint16_t hw_addrlen; /* address length */
|
||||||
|
uint16_t pad; /* padding to 32-bit boundary */
|
||||||
|
uint8_t hw_addr[8]; /* address, up to 8 bytes */
|
||||||
|
} nflog_hwaddr_t;
|
||||||
|
|
||||||
|
typedef struct nflog_timestamp {
|
||||||
|
uint64_t sec;
|
||||||
|
uint64_t usec;
|
||||||
|
} nflog_timestamp_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TLV types.
|
||||||
|
*/
|
||||||
|
#define NFULA_PACKET_HDR 1 /* nflog_packet_hdr_t */
|
||||||
|
#define NFULA_MARK 2 /* packet mark from skbuff */
|
||||||
|
#define NFULA_TIMESTAMP 3 /* nflog_timestamp_t for skbuff's time stamp */
|
||||||
|
#define NFULA_IFINDEX_INDEV 4 /* ifindex of device on which packet received (possibly bridge group) */
|
||||||
|
#define NFULA_IFINDEX_OUTDEV 5 /* ifindex of device on which packet transmitted (possibly bridge group) */
|
||||||
|
#define NFULA_IFINDEX_PHYSINDEV 6 /* ifindex of physical device on which packet received (not bridge group) */
|
||||||
|
#define NFULA_IFINDEX_PHYSOUTDEV 7 /* ifindex of physical device on which packet transmitted (not bridge group) */
|
||||||
|
#define NFULA_HWADDR 8 /* nflog_hwaddr_t for hardware address */
|
||||||
|
#define NFULA_PAYLOAD 9 /* packet payload */
|
||||||
|
#define NFULA_PREFIX 10 /* text string - null-terminated, count includes NUL */
|
||||||
|
#define NFULA_UID 11 /* UID owning socket on which packet was sent/received */
|
||||||
|
#define NFULA_SEQ 12 /* sequence number of packets on this NFLOG socket */
|
||||||
|
#define NFULA_SEQ_GLOBAL 13 /* sequence number of pakets on all NFLOG sockets */
|
||||||
|
#define NFULA_GID 14 /* GID owning socket on which packet was sent/received */
|
||||||
|
#define NFULA_HWTYPE 15 /* ARPHRD_ type of skbuff's device */
|
||||||
|
#define NFULA_HWHEADER 16 /* skbuff's MAC-layer header */
|
||||||
|
#define NFULA_HWLEN 17 /* length of skbuff's MAC-layer header */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002 - 2005 NetGroup, Politecnico di Torino (Italy)
|
||||||
|
* Copyright (c) 2005 - 2009 CACE Technologies, Inc. Davis (California)
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the Politecnico di Torino nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
#ifndef pcap_pcap_inttypes_h
|
||||||
|
#define pcap_pcap_inttypes_h
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we're compiling with Visual Studio, make sure the C99 integer
|
||||||
|
* types are defined, by hook or by crook.
|
||||||
|
*
|
||||||
|
* XXX - verify that we have at least C99 support on UN*Xes?
|
||||||
|
*
|
||||||
|
* What about MinGW or various DOS toolchains? We're currently assuming
|
||||||
|
* sufficient C99 support there.
|
||||||
|
*/
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
/*
|
||||||
|
* Compiler is MSVC.
|
||||||
|
*/
|
||||||
|
#if _MSC_VER >= 1800
|
||||||
|
/*
|
||||||
|
* VS 2013 or newer; we have <inttypes.h>.
|
||||||
|
*/
|
||||||
|
#include <inttypes.h>
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* Earlier VS; we have to define this stuff ourselves.
|
||||||
|
* We don't support building libpcap with earlier versions of VS,
|
||||||
|
* but SDKs for Npcap have to support building applications using
|
||||||
|
* earlier versions of VS, so we work around this by defining
|
||||||
|
* those types ourselves, as some files use them.
|
||||||
|
*/
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef signed char int8_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef signed short int16_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
typedef signed int int32_t;
|
||||||
|
#ifdef _MSC_EXTENSIONS
|
||||||
|
typedef unsigned _int64 uint64_t;
|
||||||
|
typedef _int64 int64_t;
|
||||||
|
#else /* _MSC_EXTENSIONS */
|
||||||
|
typedef unsigned long long uint64_t;
|
||||||
|
typedef long long int64_t;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else /* defined(_MSC_VER) */
|
||||||
|
/*
|
||||||
|
* Not Visual Studio.
|
||||||
|
* Include <inttypes.h> to get the integer types and PRi[doux]64 values
|
||||||
|
* defined.
|
||||||
|
*
|
||||||
|
* If the compiler is MinGW, we assume we have <inttypes.h> - and
|
||||||
|
* support for %zu in the formatted printing functions.
|
||||||
|
*
|
||||||
|
* If the target is UN*X, we assume we have a C99-or-later development
|
||||||
|
* environment, and thus have <inttypes.h> - and support for %zu in
|
||||||
|
* the formatted printing functions.
|
||||||
|
*
|
||||||
|
* If the target is MS-DOS, we assume we have <inttypes.h> - and support
|
||||||
|
* for %zu in the formatted printing functions.
|
||||||
|
*
|
||||||
|
* I.e., assume we have <inttypes.h> and that it suffices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX - somehow make sure we have enough C99 support with other
|
||||||
|
* compilers and support libraries?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif /* defined(_MSC_VER) */
|
||||||
|
|
||||||
|
#endif /* pcap/pcap-inttypes.h */
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,149 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from the Stanford/CMU enet packet filter,
|
||||||
|
* (net/enet.c) distributed as part of 4.3BSD, and code contributed
|
||||||
|
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
|
||||||
|
* Berkeley Laboratory.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For captures on Linux cooked sockets, we construct a fake header
|
||||||
|
* that includes:
|
||||||
|
*
|
||||||
|
* a 2-byte "packet type" which is one of:
|
||||||
|
*
|
||||||
|
* LINUX_SLL_HOST packet was sent to us
|
||||||
|
* LINUX_SLL_BROADCAST packet was broadcast
|
||||||
|
* LINUX_SLL_MULTICAST packet was multicast
|
||||||
|
* LINUX_SLL_OTHERHOST packet was sent to somebody else
|
||||||
|
* LINUX_SLL_OUTGOING packet was sent *by* us;
|
||||||
|
*
|
||||||
|
* a 2-byte Ethernet protocol field;
|
||||||
|
*
|
||||||
|
* a 2-byte link-layer type;
|
||||||
|
*
|
||||||
|
* a 2-byte link-layer address length;
|
||||||
|
*
|
||||||
|
* an 8-byte source link-layer address, whose actual length is
|
||||||
|
* specified by the previous value.
|
||||||
|
*
|
||||||
|
* All fields except for the link-layer address are in network byte order.
|
||||||
|
*
|
||||||
|
* DO NOT change the layout of this structure, or change any of the
|
||||||
|
* LINUX_SLL_ values below. If you must change the link-layer header
|
||||||
|
* for a "cooked" Linux capture, introduce a new DLT_ type (ask
|
||||||
|
* "tcpdump-workers@lists.tcpdump.org" for one, so that you don't give it
|
||||||
|
* a value that collides with a value already being used), and use the
|
||||||
|
* new header in captures of that type, so that programs that can
|
||||||
|
* handle DLT_LINUX_SLL captures will continue to handle them correctly
|
||||||
|
* without any change, and so that capture files with different headers
|
||||||
|
* can be told apart and programs that read them can dissect the
|
||||||
|
* packets in them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_sll_h
|
||||||
|
#define lib_pcap_sll_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A DLT_LINUX_SLL fake link-layer header.
|
||||||
|
*/
|
||||||
|
#define SLL_HDR_LEN 16 /* total header length */
|
||||||
|
#define SLL_ADDRLEN 8 /* length of address field */
|
||||||
|
|
||||||
|
struct sll_header {
|
||||||
|
uint16_t sll_pkttype; /* packet type */
|
||||||
|
uint16_t sll_hatype; /* link-layer address type */
|
||||||
|
uint16_t sll_halen; /* link-layer address length */
|
||||||
|
uint8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */
|
||||||
|
uint16_t sll_protocol; /* protocol */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A DLT_LINUX_SLL2 fake link-layer header.
|
||||||
|
*/
|
||||||
|
#define SLL2_HDR_LEN 20 /* total header length */
|
||||||
|
|
||||||
|
struct sll2_header {
|
||||||
|
uint16_t sll2_protocol; /* protocol */
|
||||||
|
uint16_t sll2_reserved_mbz; /* reserved - must be zero */
|
||||||
|
uint32_t sll2_if_index; /* 1-based interface index */
|
||||||
|
uint16_t sll2_hatype; /* link-layer address type */
|
||||||
|
uint8_t sll2_pkttype; /* packet type */
|
||||||
|
uint8_t sll2_halen; /* link-layer address length */
|
||||||
|
uint8_t sll2_addr[SLL_ADDRLEN]; /* link-layer address */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The LINUX_SLL_ values for "sll_pkttype" and LINUX_SLL2_ values for
|
||||||
|
* "sll2_pkttype"; these correspond to the PACKET_ values on Linux,
|
||||||
|
* which are defined by a header under include/uapi in the current
|
||||||
|
* kernel source, and are thus not going to change on Linux. We
|
||||||
|
* define them here so that they're available even on systems other
|
||||||
|
* than Linux.
|
||||||
|
*/
|
||||||
|
#define LINUX_SLL_HOST 0
|
||||||
|
#define LINUX_SLL_BROADCAST 1
|
||||||
|
#define LINUX_SLL_MULTICAST 2
|
||||||
|
#define LINUX_SLL_OTHERHOST 3
|
||||||
|
#define LINUX_SLL_OUTGOING 4
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The LINUX_SLL_ values for "sll_protocol" and LINUX_SLL2_ values for
|
||||||
|
* "sll2_protocol"; these correspond to the ETH_P_ values on Linux, but
|
||||||
|
* are defined here so that they're available even on systems other than
|
||||||
|
* Linux. We assume, for now, that the ETH_P_ values won't change in
|
||||||
|
* Linux; if they do, then:
|
||||||
|
*
|
||||||
|
* if we don't translate them in "pcap-linux.c", capture files
|
||||||
|
* won't necessarily be readable if captured on a system that
|
||||||
|
* defines ETH_P_ values that don't match these values;
|
||||||
|
*
|
||||||
|
* if we do translate them in "pcap-linux.c", that makes life
|
||||||
|
* unpleasant for the BPF code generator, as the values you test
|
||||||
|
* for in the kernel aren't the values that you test for when
|
||||||
|
* reading a capture file, so the fixup code run on BPF programs
|
||||||
|
* handed to the kernel ends up having to do more work.
|
||||||
|
*
|
||||||
|
* Add other values here as necessary, for handling packet types that
|
||||||
|
* might show up on non-Ethernet, non-802.x networks. (Not all the ones
|
||||||
|
* in the Linux "if_ether.h" will, I suspect, actually show up in
|
||||||
|
* captures.)
|
||||||
|
*/
|
||||||
|
#define LINUX_SLL_P_802_3 0x0001 /* Novell 802.3 frames without 802.2 LLC header */
|
||||||
|
#define LINUX_SLL_P_802_2 0x0004 /* 802.2 frames (not D/I/X Ethernet) */
|
||||||
|
#define LINUX_SLL_P_CAN 0x000C /* CAN frames, with SocketCAN pseudo-headers */
|
||||||
|
#define LINUX_SLL_P_CANFD 0x000D /* CAN FD frames, with SocketCAN pseudo-headers */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the Computer Systems
|
||||||
|
* Engineering Group at Lawrence Berkeley Laboratory.
|
||||||
|
* 4. Neither the name of the University nor of the Laboratory may be used
|
||||||
|
* to endorse or promote products derived from this software without
|
||||||
|
* specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_socket_h
|
||||||
|
#define lib_pcap_socket_h
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some minor differences between sockets on various platforms.
|
||||||
|
* We include whatever sockets are needed for Internet-protocol
|
||||||
|
* socket access on UN*X and Windows.
|
||||||
|
*/
|
||||||
|
#ifdef _WIN32
|
||||||
|
/* Need windef.h for defines used in winsock2.h under MingW32 */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#include <windef.h>
|
||||||
|
#endif
|
||||||
|
#include <winsock2.h>
|
||||||
|
#include <ws2tcpip.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Winsock doesn't have this POSIX type; it's used for the
|
||||||
|
* tv_usec value of struct timeval.
|
||||||
|
*/
|
||||||
|
typedef long suseconds_t;
|
||||||
|
#else /* _WIN32 */
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netdb.h> /* for struct addrinfo/getaddrinfo() */
|
||||||
|
#include <netinet/in.h> /* for sockaddr_in, in BSD at least */
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief In Winsock, a socket handle is of type SOCKET; in UN*X, it's
|
||||||
|
* a file descriptor, and therefore a signed integer.
|
||||||
|
* We define SOCKET to be a signed integer on UN*X, so that it can
|
||||||
|
* be used on both platforms.
|
||||||
|
*/
|
||||||
|
#ifndef SOCKET
|
||||||
|
#define SOCKET int
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief In Winsock, the error return if socket() fails is INVALID_SOCKET;
|
||||||
|
* in UN*X, it's -1.
|
||||||
|
* We define INVALID_SOCKET to be -1 on UN*X, so that it can be used on
|
||||||
|
* both platforms.
|
||||||
|
*/
|
||||||
|
#ifndef INVALID_SOCKET
|
||||||
|
#define INVALID_SOCKET -1
|
||||||
|
#endif
|
||||||
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
|
#endif /* lib_pcap_socket_h */
|
||||||
|
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Paolo Abeni (Italy)
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
|
* products derived from this software without specific prior written
|
||||||
|
* permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* Basic USB data struct
|
||||||
|
* By Paolo Abeni <paolo.abeni@email.it>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_usb_h
|
||||||
|
#define lib_pcap_usb_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* possible transfer mode
|
||||||
|
*/
|
||||||
|
#define URB_TRANSFER_IN 0x80
|
||||||
|
#define URB_ISOCHRONOUS 0x0
|
||||||
|
#define URB_INTERRUPT 0x1
|
||||||
|
#define URB_CONTROL 0x2
|
||||||
|
#define URB_BULK 0x3
|
||||||
|
|
||||||
|
/*
|
||||||
|
* possible event type
|
||||||
|
*/
|
||||||
|
#define URB_SUBMIT 'S'
|
||||||
|
#define URB_COMPLETE 'C'
|
||||||
|
#define URB_ERROR 'E'
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USB setup header as defined in USB specification.
|
||||||
|
* Appears at the front of each Control S-type packet in DLT_USB captures.
|
||||||
|
*/
|
||||||
|
typedef struct _usb_setup {
|
||||||
|
uint8_t bmRequestType;
|
||||||
|
uint8_t bRequest;
|
||||||
|
uint16_t wValue;
|
||||||
|
uint16_t wIndex;
|
||||||
|
uint16_t wLength;
|
||||||
|
} pcap_usb_setup;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Information from the URB for Isochronous transfers.
|
||||||
|
*/
|
||||||
|
typedef struct _iso_rec {
|
||||||
|
int32_t error_count;
|
||||||
|
int32_t numdesc;
|
||||||
|
} iso_rec;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header prepended by linux kernel to each event.
|
||||||
|
* Appears at the front of each packet in DLT_USB_LINUX captures.
|
||||||
|
*/
|
||||||
|
typedef struct _usb_header {
|
||||||
|
uint64_t id;
|
||||||
|
uint8_t event_type;
|
||||||
|
uint8_t transfer_type;
|
||||||
|
uint8_t endpoint_number;
|
||||||
|
uint8_t device_address;
|
||||||
|
uint16_t bus_id;
|
||||||
|
char setup_flag;/*if !=0 the urb setup header is not present*/
|
||||||
|
char data_flag; /*if !=0 no urb data is present*/
|
||||||
|
int64_t ts_sec;
|
||||||
|
int32_t ts_usec;
|
||||||
|
int32_t status;
|
||||||
|
uint32_t urb_len;
|
||||||
|
uint32_t data_len; /* amount of urb data really present in this event*/
|
||||||
|
pcap_usb_setup setup;
|
||||||
|
} pcap_usb_header;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header prepended by linux kernel to each event for the 2.6.31
|
||||||
|
* and later kernels; for the 2.6.21 through 2.6.30 kernels, the
|
||||||
|
* "iso_rec" information, and the fields starting with "interval"
|
||||||
|
* are zeroed-out padding fields.
|
||||||
|
*
|
||||||
|
* Appears at the front of each packet in DLT_USB_LINUX_MMAPPED captures.
|
||||||
|
*/
|
||||||
|
typedef struct _usb_header_mmapped {
|
||||||
|
uint64_t id;
|
||||||
|
uint8_t event_type;
|
||||||
|
uint8_t transfer_type;
|
||||||
|
uint8_t endpoint_number;
|
||||||
|
uint8_t device_address;
|
||||||
|
uint16_t bus_id;
|
||||||
|
char setup_flag;/*if !=0 the urb setup header is not present*/
|
||||||
|
char data_flag; /*if !=0 no urb data is present*/
|
||||||
|
int64_t ts_sec;
|
||||||
|
int32_t ts_usec;
|
||||||
|
int32_t status;
|
||||||
|
uint32_t urb_len;
|
||||||
|
uint32_t data_len; /* amount of urb data really present in this event*/
|
||||||
|
union {
|
||||||
|
pcap_usb_setup setup;
|
||||||
|
iso_rec iso;
|
||||||
|
} s;
|
||||||
|
int32_t interval; /* for Interrupt and Isochronous events */
|
||||||
|
int32_t start_frame; /* for Isochronous events */
|
||||||
|
uint32_t xfer_flags; /* copy of URB's transfer flags */
|
||||||
|
uint32_t ndesc; /* number of isochronous descriptors */
|
||||||
|
} pcap_usb_header_mmapped;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Isochronous descriptors; for isochronous transfers there might be
|
||||||
|
* one or more of these at the beginning of the packet data. The
|
||||||
|
* number of descriptors is given by the "ndesc" field in the header;
|
||||||
|
* as indicated, in older kernels that don't put the descriptors at
|
||||||
|
* the beginning of the packet, that field is zeroed out, so that field
|
||||||
|
* can be trusted even in captures from older kernels.
|
||||||
|
*/
|
||||||
|
typedef struct _usb_isodesc {
|
||||||
|
int32_t status;
|
||||||
|
uint32_t offset;
|
||||||
|
uint32_t len;
|
||||||
|
uint8_t pad[4];
|
||||||
|
} usb_isodesc;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 4. Neither the name of the University nor the names of its contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef lib_pcap_vlan_h
|
||||||
|
#define lib_pcap_vlan_h
|
||||||
|
|
||||||
|
#include <pcap/pcap-inttypes.h>
|
||||||
|
|
||||||
|
struct vlan_tag {
|
||||||
|
uint16_t vlan_tpid; /* ETH_P_8021Q */
|
||||||
|
uint16_t vlan_tci; /* VLAN TCI */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define VLAN_TAG_LEN 4
|
||||||
|
|
||||||
|
#endif
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -32,6 +32,8 @@ if (CMAKE_SYSTEM MATCHES "Linux*")
|
||||||
set (PORTAUDIO_LIB ${CMAKE_CURRENT_LIST_DIR}/portaudio/linux/x64/libportaudio.a)
|
set (PORTAUDIO_LIB ${CMAKE_CURRENT_LIST_DIR}/portaudio/linux/x64/libportaudio.a)
|
||||||
set (PORTAUDIO_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/portaudio/include)
|
set (PORTAUDIO_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/portaudio/include)
|
||||||
|
|
||||||
|
set (PCAP_LIB ${CMAKE_CURRENT_LIST_DIR}/pcap/linux/x64/libpcap.a)
|
||||||
|
set (PCAP_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/pcap/include)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue