[simulator] 手动-自动格式化整理

This commit is contained in:
Meco Man 2021-03-20 22:39:00 +08:00
parent 061182271f
commit e37abb2b81
49 changed files with 2051 additions and 2046 deletions

View File

@ -194,7 +194,7 @@ typedef unsigned int uintptr_t;
#define SDL_VIDEO_RENDER_D3D 1 #define SDL_VIDEO_RENDER_D3D 1
#endif #endif
#ifndef SDL_VIDEO_RENDER_D3D11 #ifndef SDL_VIDEO_RENDER_D3D11
#define SDL_VIDEO_RENDER_D3D11 0 #define SDL_VIDEO_RENDER_D3D11 0
#endif #endif
/* Enable OpenGL support */ /* Enable OpenGL support */

View File

@ -108,7 +108,7 @@
#define HAVE_SETJMP 1 #define HAVE_SETJMP 1
#define HAVE_NANOSLEEP 1 #define HAVE_NANOSLEEP 1
#define HAVE_SYSCONF 1 #define HAVE_SYSCONF 1
#define HAVE_CLOCK_GETTIME 1 #define HAVE_CLOCK_GETTIME 1
#define SIZEOF_VOIDP 4 #define SIZEOF_VOIDP 4

View File

@ -185,7 +185,7 @@ typedef unsigned int uintptr_t;
#define SDL_VIDEO_RENDER_D3D 1 #define SDL_VIDEO_RENDER_D3D 1
#endif #endif
#ifndef SDL_VIDEO_RENDER_D3D11 #ifndef SDL_VIDEO_RENDER_D3D11
#define SDL_VIDEO_RENDER_D3D11 0 #define SDL_VIDEO_RENDER_D3D11 0
#endif #endif
/* Enable OpenGL support */ /* Enable OpenGL support */

View File

@ -44,7 +44,7 @@
#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) #if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H)
#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) #if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__)
#define HAVE_STDINT_H 1 #define HAVE_STDINT_H 1
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
typedef signed __int8 int8_t; typedef signed __int8 int8_t;
typedef unsigned __int8 uint8_t; typedef unsigned __int8 uint8_t;
@ -121,13 +121,13 @@ typedef unsigned int uintptr_t;
#define HAVE_STRLEN 1 #define HAVE_STRLEN 1
#define HAVE__STRREV 1 #define HAVE__STRREV 1
#define HAVE__STRUPR 1 #define HAVE__STRUPR 1
//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead //#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead
#define HAVE_STRCHR 1 #define HAVE_STRCHR 1
#define HAVE_STRRCHR 1 #define HAVE_STRRCHR 1
#define HAVE_STRSTR 1 #define HAVE_STRSTR 1
//#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead //#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead
//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead //#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead
//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead //#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead
#define HAVE_STRTOL 1 #define HAVE_STRTOL 1
#define HAVE_STRTOUL 1 #define HAVE_STRTOUL 1
//#define HAVE_STRTOLL 1 //#define HAVE_STRTOLL 1
@ -139,7 +139,7 @@ typedef unsigned int uintptr_t;
#define HAVE__STRICMP 1 #define HAVE__STRICMP 1
#define HAVE__STRNICMP 1 #define HAVE__STRNICMP 1
#define HAVE_VSNPRINTF 1 #define HAVE_VSNPRINTF 1
//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead //#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead
#define HAVE_M_PI 1 #define HAVE_M_PI 1
#define HAVE_ATAN 1 #define HAVE_ATAN 1
#define HAVE_ATAN2 1 #define HAVE_ATAN2 1
@ -162,21 +162,21 @@ typedef unsigned int uintptr_t;
#define HAVE__FSEEKI64 1 #define HAVE__FSEEKI64 1
/* Enable various audio drivers */ /* Enable various audio drivers */
#define SDL_AUDIO_DRIVER_XAUDIO2 1 #define SDL_AUDIO_DRIVER_XAUDIO2 1
#define SDL_AUDIO_DRIVER_DISK 1 #define SDL_AUDIO_DRIVER_DISK 1
#define SDL_AUDIO_DRIVER_DUMMY 1 #define SDL_AUDIO_DRIVER_DUMMY 1
/* Enable various input drivers */ /* Enable various input drivers */
#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP #if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
#define SDL_JOYSTICK_DISABLED 1 #define SDL_JOYSTICK_DISABLED 1
#define SDL_HAPTIC_DISABLED 1 #define SDL_HAPTIC_DISABLED 1
#else #else
#define SDL_JOYSTICK_XINPUT 1 #define SDL_JOYSTICK_XINPUT 1
#define SDL_HAPTIC_XINPUT 1 #define SDL_HAPTIC_XINPUT 1
#endif #endif
/* Enable various shared object loading systems */ /* Enable various shared object loading systems */
#define SDL_LOADSO_WINDOWS 1 #define SDL_LOADSO_WINDOWS 1
/* Enable various threading systems */ /* Enable various threading systems */
#if (NTDDI_VERSION >= NTDDI_WINBLUE) #if (NTDDI_VERSION >= NTDDI_WINBLUE)
@ -187,10 +187,10 @@ typedef unsigned int uintptr_t;
#endif #endif
/* Enable various timer systems */ /* Enable various timer systems */
#define SDL_TIMER_WINDOWS 1 #define SDL_TIMER_WINDOWS 1
/* Enable various video drivers */ /* Enable various video drivers */
#define SDL_VIDEO_DRIVER_WINRT 1 #define SDL_VIDEO_DRIVER_WINRT 1
#define SDL_VIDEO_DRIVER_DUMMY 1 #define SDL_VIDEO_DRIVER_DUMMY 1
/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */ /* Enable OpenGL ES 2.0 (via a modified ANGLE library) */
@ -209,7 +209,7 @@ typedef unsigned int uintptr_t;
/* Enable assembly routines (Win64 doesn't have inline asm) */ /* Enable assembly routines (Win64 doesn't have inline asm) */
#ifndef _WIN64 #ifndef _WIN64
#define SDL_ASSEMBLY_ROUTINES 1 #define SDL_ASSEMBLY_ROUTINES 1
#endif #endif
#endif /* SDL_config_winrt_h_ */ #endif /* SDL_config_winrt_h_ */

View File

@ -116,7 +116,7 @@ typedef struct SDL_GameControllerButtonBind
* A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt * A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
* *
* If \c freerw is non-zero, the stream will be closed after being read. * If \c freerw is non-zero, the stream will be closed after being read.
* *
* \return number of mappings added, -1 on error * \return number of mappings added, -1 on error
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);

View File

@ -153,7 +153,7 @@ extern "C" {
#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" #define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
/** /**
* \brief A variable controlling whether the screensaver is enabled. * \brief A variable controlling whether the screensaver is enabled.
* *
* This variable can be set to the following values: * This variable can be set to the following values:
* "0" - Disable screensaver * "0" - Disable screensaver
@ -211,7 +211,7 @@ extern "C" {
#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" #define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
/** /**
* \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
* *
* This variable can be set to the following values: * This variable can be set to the following values:
* "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
@ -222,13 +222,13 @@ extern "C" {
#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" #define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
/** /**
* \brief A variable to specify custom icon resource id from RC file on Windows platform * \brief A variable to specify custom icon resource id from RC file on Windows platform
*/ */
#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" #define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" #define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
/** /**
* \brief A variable controlling whether the windows message loop is processed by SDL * \brief A variable controlling whether the windows message loop is processed by SDL
* *
* This variable can be set to the following values: * This variable can be set to the following values:
* "0" - The window message loop is not run * "0" - The window message loop is not run
@ -528,9 +528,9 @@ extern "C" {
/** /**
* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). * \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
* *
* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has * If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly * SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
* created SDL_Window: * created SDL_Window:
* *
* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is * 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
@ -682,7 +682,7 @@ extern "C" {
* By default this hint is not set and the APK expansion files are not searched. * By default this hint is not set and the APK expansion files are not searched.
*/ */
#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" #define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
/** /**
* \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
* *
@ -700,9 +700,9 @@ extern "C" {
* *
* The variable can be set to the following values: * The variable can be set to the following values:
* "0" - SDL_TEXTEDITING events are sent, and it is the application's * "0" - SDL_TEXTEDITING events are sent, and it is the application's
* responsibility to render the text from these events and * responsibility to render the text from these events and
* differentiate it somehow from committed text. (default) * differentiate it somehow from committed text. (default)
* "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
* and text that is being composed will be rendered in its own UI. * and text that is being composed will be rendered in its own UI.
*/ */
#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" #define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
@ -752,7 +752,7 @@ extern "C" {
* "0" - SDL will generate a window-close event when it sees Alt+F4. * "0" - SDL will generate a window-close event when it sees Alt+F4.
* "1" - SDL will only do normal key handling for Alt+F4. * "1" - SDL will only do normal key handling for Alt+F4.
*/ */
#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" #define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
/** /**
* \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.

View File

@ -69,9 +69,9 @@
#elif defined(__NACL__) #elif defined(__NACL__)
/* On NACL we use ppapi_simple to set up the application helper code, /* On NACL we use ppapi_simple to set up the application helper code,
then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before
starting the user main function. starting the user main function.
All user code is run in a separate thread by ppapi_simple, thus All user code is run in a separate thread by ppapi_simple, thus
allowing for blocking io to take place via nacl_io allowing for blocking io to take place via nacl_io
*/ */
#define SDL_MAIN_NEEDED #define SDL_MAIN_NEEDED

File diff suppressed because it is too large Load Diff

View File

@ -1535,7 +1535,7 @@ typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, G
#ifndef GL_EXT_multisampled_render_to_texture #ifndef GL_EXT_multisampled_render_to_texture
#define GL_EXT_multisampled_render_to_texture 1 #define GL_EXT_multisampled_render_to_texture 1
#ifdef GL_GLEXT_PROTOTYPES #ifdef GL_GLEXT_PROTOTYPES
GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
#endif #endif
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);

View File

@ -223,7 +223,7 @@ typedef signed short int khronos_int16_t;
typedef unsigned short int khronos_uint16_t; typedef unsigned short int khronos_uint16_t;
/* /*
* Types that differ between LLP64 and LP64 architectures - in LLP64, * Types that differ between LLP64 and LP64 architectures - in LLP64,
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use. * to be the only LLP64 architecture in current use.
*/ */

View File

@ -42,7 +42,7 @@ extern "C" {
/* Platform specific functions for Windows */ /* Platform specific functions for Windows */
#ifdef __WIN32__ #ifdef __WIN32__
/** /**
\brief Set a function that is called for every windows message, before TranslateMessage() \brief Set a function that is called for every windows message, before TranslateMessage()
*/ */

View File

@ -39,7 +39,7 @@ extern "C" {
/** /**
* \brief Start tracking SDL memory allocations * \brief Start tracking SDL memory allocations
* *
* \note This should be called before any other SDL functions for complete tracking coverage * \note This should be called before any other SDL functions for complete tracking coverage
*/ */
int SDLTest_TrackAllocations(); int SDLTest_TrackAllocations();

View File

@ -246,7 +246,7 @@ extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
* \code * \code
* static SDL_SpinLock tls_lock; * static SDL_SpinLock tls_lock;
* static SDL_TLSID thread_local_storage; * static SDL_TLSID thread_local_storage;
* *
* void SetMyThreadData(void *value) * void SetMyThreadData(void *value)
* { * {
* if (!thread_local_storage) { * if (!thread_local_storage) {
@ -258,7 +258,7 @@ extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
* } * }
* SDL_TLSSet(thread_local_storage, value, 0); * SDL_TLSSet(thread_local_storage, value, 0);
* } * }
* *
* void *GetMyThreadData(void) * void *GetMyThreadData(void)
* { * {
* return SDL_TLSGet(thread_local_storage); * return SDL_TLSGet(thread_local_storage);

View File

@ -187,9 +187,9 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* \sa SDL_Vulkan_CreateSurface() * \sa SDL_Vulkan_CreateSurface()
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions( extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(
SDL_Window *window, SDL_Window *window,
unsigned int *pCount, unsigned int *pCount,
const char **pNames); const char **pNames);
/** /**
* \brief Create a Vulkan rendering surface for a window. * \brief Create a Vulkan rendering surface for a window.
@ -221,9 +221,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(
* \sa SDL_Vulkan_GetInstanceExtensions() * \sa SDL_Vulkan_GetInstanceExtensions()
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface( extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(
SDL_Window *window, SDL_Window *window,
VkInstance instance, VkInstance instance,
VkSurfaceKHR* surface); VkSurfaceKHR* surface);
/** /**
* \brief Get the size of a window's underlying drawable in pixels (for use * \brief Get the size of a window's underlying drawable in pixels (for use

View File

@ -1,27 +1,12 @@
/* /*
* File : application.c * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team
* *
* This program is free software; you can redistribute it and/or modify * SPDX-License-Identifier: Apache-2.0
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-01-05 Bernard the first version * 2009-01-05 Bernard the first version
*/ */
#include <rtthread.h> #include <rtthread.h>
#include <stdio.h> #include <stdio.h>
#include <board.h> #include <board.h>
@ -37,7 +22,7 @@ void rt_init_thread_entry(void *parameter)
platform_init(); platform_init();
mnt_init(); mnt_init();
platform_post_init(); platform_post_init();
#if defined(PKG_USING_GUIENGINE) && defined(GUIENGINE_USING_DEMO) #if defined(PKG_USING_GUIENGINE) && defined(GUIENGINE_USING_DEMO)
{ {

View File

@ -1,12 +1,12 @@
/* /*
* File : mnt.c * Copyright (c) 2006-2021, RT-Thread Development Team
* COPYRIGHT (C) 2008 - 2016, RT-Thread Development Team *
* SPDX-License-Identifier: Apache-2.0
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 201743 Urey the first version * 2017-04-03 Urey the first version
*/ */
#include <rtthread.h> #include <rtthread.h>
#include <rtdevice.h> #include <rtdevice.h>
@ -20,7 +20,7 @@ int mnt_init(void)
#ifdef RT_USING_DFS_WINSHAREDIR #ifdef RT_USING_DFS_WINSHAREDIR
extern int dfs_win32_init(void); extern int dfs_win32_init(void);
extern rt_err_t rt_win_sharedir_init(const char *name); extern rt_err_t rt_win_sharedir_init(const char *name);
dfs_win32_init(); dfs_win32_init();
rt_win_sharedir_init("wshare"); rt_win_sharedir_init("wshare");

View File

@ -1,3 +1,11 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <rtthread.h> #include <rtthread.h>
#include "board.h" #include "board.h"

View File

@ -1,27 +1,12 @@
/* /*
* File : startup.c * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
* *
* This program is free software; you can redistribute it and/or modify * SPDX-License-Identifier: Apache-2.0
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2012-09-03 prife first implementation * 2012-09-03 prife first implementation
*/ */
#include <rthw.h> #include <rthw.h>
#include <rtthread.h> #include <rtthread.h>

View File

@ -1,17 +1,12 @@
/* /*
* File : board.c * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2009 RT-Thread Develop Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-01-05 Bernard first implementation * 2009-01-05 Bernard first implementation
*/ */
#include <rthw.h> #include <rthw.h>
#include <rtthread.h> #include <rtthread.h>

View File

@ -1,17 +1,12 @@
/* /*
* File : board.h * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2009, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-09-22 Bernard add board.h to this bsp * 2009-09-22 Bernard add board.h to this bsp
*/ */
#ifndef __BOARD_H__ #ifndef __BOARD_H__
#define __BOARD_H__ #define __BOARD_H__
void rt_hw_board_init(void); void rt_hw_board_init(void);

View File

@ -1,11 +1,7 @@
/* /*
* File : rtthread.h * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006-2012, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE.
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes

View File

@ -1,11 +1,7 @@
/* /*
* File : module.c * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2013, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
@ -130,7 +126,7 @@ void rt_module_unload_sethook(void (*hook)(rt_module_t module))
*/ */
int rt_system_module_init(void) int rt_system_module_init(void)
{ {
return 0; return 0;
} }
/** /**
@ -240,9 +236,9 @@ rt_module_t rt_module_open(const char *path)
struct dfs_filesystem *fs; struct dfs_filesystem *fs;
appentry_t fptr; appentry_t fptr;
HINSTANCE hinstlib; HINSTANCE hinstlib;
rt_module_t module; rt_module_t module;
char * winpath = RT_NULL; char * winpath = RT_NULL;
char * name = RT_NULL; char * name = RT_NULL;
RT_DEBUG_NOT_IN_INTERRUPT; RT_DEBUG_NOT_IN_INTERRUPT;
@ -353,60 +349,60 @@ FINSH_FUNCTION_EXPORT_ALIAS(rt_module_open, exec, exec module from a file);
#define RT_MODULE_ARG_MAX 8 #define RT_MODULE_ARG_MAX 8
static int _rt_module_split_arg(char* cmd, rt_size_t length, char* argv[]) static int _rt_module_split_arg(char* cmd, rt_size_t length, char* argv[])
{ {
int argc = 0; int argc = 0;
char *ptr = cmd; char *ptr = cmd;
while ((ptr - cmd) < length) while ((ptr - cmd) < length)
{ {
/* strip bank and tab */ /* strip bank and tab */
while ((*ptr == ' ' || *ptr == '\t') && (ptr -cmd)< length) while ((*ptr == ' ' || *ptr == '\t') && (ptr -cmd)< length)
*ptr++ = '\0'; *ptr++ = '\0';
/* check whether it's the end of line */ /* check whether it's the end of line */
if ((ptr - cmd)>= length) break; if ((ptr - cmd)>= length) break;
/* handle string with quote */ /* handle string with quote */
if (*ptr == '"') if (*ptr == '"')
{ {
argv[argc++] = ++ptr; argv[argc++] = ++ptr;
/* skip this string */ /* skip this string */
while (*ptr != '"' && (ptr-cmd) < length) while (*ptr != '"' && (ptr-cmd) < length)
if (*ptr ++ == '\\') ptr ++; if (*ptr ++ == '\\') ptr ++;
if ((ptr - cmd) >= length) break; if ((ptr - cmd) >= length) break;
/* skip '"' */ /* skip '"' */
*ptr ++ = '\0'; *ptr ++ = '\0';
} }
else else
{ {
argv[argc++] = ptr; argv[argc++] = ptr;
while ((*ptr != ' ' && *ptr != '\t') && (ptr - cmd) < length) while ((*ptr != ' ' && *ptr != '\t') && (ptr - cmd) < length)
ptr ++; ptr ++;
} }
if (argc >= RT_MODULE_ARG_MAX) break; if (argc >= RT_MODULE_ARG_MAX) break;
} }
return argc; return argc;
} }
/* module main thread entry */ /* module main thread entry */
static void module_main_entry(void* parameter) static void module_main_entry(void* parameter)
{ {
int argc; int argc;
char *argv[RT_MODULE_ARG_MAX]; char *argv[RT_MODULE_ARG_MAX];
typedef int (*main_func_t)(int argc, char** argv); typedef int (*main_func_t)(int argc, char** argv);
rt_module_t module = (rt_module_t) parameter; rt_module_t module = (rt_module_t) parameter;
if (module == RT_NULL || module->module_cmd_line == RT_NULL) return; if (module == RT_NULL || module->module_cmd_line == RT_NULL) return;
rt_memset(argv, 0x00, sizeof(argv)); rt_memset(argv, 0x00, sizeof(argv));
argc = _rt_module_split_arg((char*)module->module_cmd_line, module->module_cmd_size, argv); argc = _rt_module_split_arg((char*)module->module_cmd_line, module->module_cmd_size, argv);
if (argc == 0) return ; if (argc == 0) return ;
/* do the main function */ /* do the main function */
((main_func_t)module->module_entry)(argc, argv); ((main_func_t)module->module_entry)(argc, argv);
return; return;
} }
/** /**
@ -423,25 +419,25 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
struct dfs_filesystem *fs; struct dfs_filesystem *fs;
appentry_t fptr; appentry_t fptr;
HINSTANCE hinstlib; HINSTANCE hinstlib;
rt_module_t module; rt_module_t module;
char * winpath = RT_NULL; char * winpath = RT_NULL;
char * name = RT_NULL; char * name = RT_NULL;
char *full_path = RT_NULL; char *full_path = RT_NULL;
RT_DEBUG_NOT_IN_INTERRUPT; RT_DEBUG_NOT_IN_INTERRUPT;
/* check parameters */ /* check parameters */
RT_ASSERT(path != RT_NULL); RT_ASSERT(path != RT_NULL);
if (*path != '/') if (*path != '/')
{ {
full_path = dfs_normalize_path(RT_NULL, path); full_path = dfs_normalize_path(RT_NULL, path);
} }
else else
{ {
full_path = (const char*)path; full_path = (const char*)path;
} }
/* app module should only in DFS_WIN32 */ /* app module should only in DFS_WIN32 */
fs = dfs_filesystem_lookup(full_path); fs = dfs_filesystem_lookup(full_path);
@ -456,14 +452,14 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
if ((winpath = dfs_win32_dirdup((char *)full_path)) == RT_NULL) if ((winpath = dfs_win32_dirdup((char *)full_path)) == RT_NULL)
{ {
rt_kprintf("out of memory, exit", path); rt_kprintf("out of memory, exit", path);
goto __exit; goto __exit;
} }
hinstlib = LoadLibrary(winpath); hinstlib = LoadLibrary(winpath);
if (hinstlib == NULL) if (hinstlib == NULL)
{ {
rt_kprintf("error: unable to open %s\n", winpath); rt_kprintf("error: unable to open %s\n", winpath);
goto __exit; goto __exit;
} }
fptr = (appentry_t)GetProcAddress(hinstlib, "main"); fptr = (appentry_t)GetProcAddress(hinstlib, "main");
@ -471,21 +467,21 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
{ {
rt_kprintf("error: unable to find function in %s\n", winpath); rt_kprintf("error: unable to find function in %s\n", winpath);
FreeLibrary(hinstlib); FreeLibrary(hinstlib);
goto __exit; goto __exit;
} }
/* release winpath */ /* release winpath */
rt_free(winpath); rt_free(winpath);
/* get the name of the module */ /* get the name of the module */
name = _module_name(path); name = _module_name(path);
/* allocate module */ /* allocate module */
module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name); module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name);
if (!module) if (!module)
{ {
goto __exit; goto __exit;
} }
module->nref = 0; module->nref = 0;
module->module_entry = fptr; module->module_entry = fptr;
@ -498,11 +494,11 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
if (module->module_entry != 0) if (module->module_entry != 0)
{ {
/* set module argument */ /* set module argument */
module->module_cmd_line = (rt_uint8_t*)rt_malloc(line_size + 1); module->module_cmd_line = (rt_uint8_t*)rt_malloc(line_size + 1);
rt_memcpy(module->module_cmd_line, cmd_line, line_size); rt_memcpy(module->module_cmd_line, cmd_line, line_size);
module->module_cmd_line[line_size] = '\0'; module->module_cmd_line[line_size] = '\0';
module->module_cmd_size = line_size; module->module_cmd_size = line_size;
#ifdef RT_USING_SLAB #ifdef RT_USING_SLAB
/* init module memory allocator */ /* init module memory allocator */
@ -514,10 +510,10 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
module->page_cnt = 0; module->page_cnt = 0;
#endif #endif
/* create module thread */ /* create module thread */
module->module_thread = rt_thread_create(name, module->module_thread = rt_thread_create(name,
module_main_entry, module, module_main_entry, module,
2048, RT_THREAD_PRIORITY_MAX - 2, 10); 2048, RT_THREAD_PRIORITY_MAX - 2, 10);
/* set module id */ /* set module id */
module->module_thread->module_id = (void *)module; module->module_thread->module_id = (void *)module;
@ -543,11 +539,11 @@ rt_module_t rt_module_exec_cmd(const char *path, const char* cmd_line, int line_
return module; return module;
__exit: __exit:
if (full_path != path) rt_free(full_path); if (full_path != path) rt_free(full_path);
if (name != RT_NULL) rt_free(full_path); if (name != RT_NULL) rt_free(full_path);
if (winpath != RT_NULL)rt_free(winpath); if (winpath != RT_NULL)rt_free(winpath);
return RT_NULL; return RT_NULL;
/* FreeLibrary(hinstlib); */ /* FreeLibrary(hinstlib); */
} }

View File

@ -1,3 +1,11 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <rtdevice.h> #include <rtdevice.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

View File

@ -1,3 +1,11 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>

View File

@ -1,7 +1,13 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <rtthread.h> #include <rtthread.h>
#include <stdio.h> #include <stdio.h>
#ifdef _WIN32 #ifdef _WIN32
#include <sdl.h> #include <sdl.h>
#else #else
@ -190,7 +196,7 @@ static void sdlfb_hw_init(void)
SDL_PixelFormatEnumToMasks(SDL_SCREEN_FORMAT, &bpp, &Rmask, &Gmask, SDL_PixelFormatEnumToMasks(SDL_SCREEN_FORMAT, &bpp, &Rmask, &Gmask,
&Bmask, &Amask); &Bmask, &Amask);
_device.surface = SDL_CreateRGBSurface(0, SDL_SCREEN_WIDTH, SDL_SCREEN_HEIGHT, _device.surface = SDL_CreateRGBSurface(0, SDL_SCREEN_WIDTH, SDL_SCREEN_HEIGHT,
bpp, Rmask, Gmask, Bmask, Amask); bpp, Rmask, Gmask, Bmask, Amask);
} }
@ -255,7 +261,7 @@ static void *sdl_loop(void *lpParam)
int motion_tick = 50; int motion_tick = 50;
int mouse_id = 1; int mouse_id = 1;
#ifndef _WIN32 #ifndef _WIN32
sigset_t sigmask, oldmask; sigset_t sigmask, oldmask;
/* set the getchar without buffer */ /* set the getchar without buffer */
@ -455,7 +461,7 @@ static void *sdl_loop(void *lpParam)
exit(1); exit(1);
break; break;
} }
} }
rt_hw_exit(); rt_hw_exit();
return 0; return 0;

View File

@ -1,11 +1,7 @@
/* /*
* File : sst25vfxx_mtd.h * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2011, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes

View File

@ -1,11 +1,7 @@
/* /*
* File : rtdef.h * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
@ -20,7 +16,7 @@
#ifdef RT_USING_MTD_NOR #ifdef RT_USING_MTD_NOR
#define NOR_SIM "nor.bin" #define NOR_SIM "nor.bin"
/* JEDEC Manufacturer¡¯s ID */ /* JEDEC Manufacturers ID */
#define MF_ID (0xBF) #define MF_ID (0xBF)
/* JEDEC Device ID : Memory Type */ /* JEDEC Device ID : Memory Type */
#define MT_ID (0x25) #define MT_ID (0x25)

View File

@ -33,7 +33,7 @@
#include <netif/ethernetif.h> #include <netif/ethernetif.h>
#define MAX_ADDR_LEN 6 #define MAX_ADDR_LEN 6
#define TAP_IFNAME "RT-net" #define TAP_IFNAME "RT-net"
//============= //=============
// TAP IOCTLs // TAP IOCTLs
@ -112,13 +112,13 @@ static tap_win32_overlapped_t tap_overlapped;
/************************************************************************/ /************************************************************************/
struct tap_netif struct tap_netif
{ {
/* inherit from ethernet device */ /* inherit from ethernet device */
struct eth_device parent; struct eth_device parent;
tap_win32_overlapped_t *handle; tap_win32_overlapped_t *handle;
/* interface address info. */ /* interface address info. */
rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */ rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */
}; };
#define NETIF_DEVICE(netif) ((struct tap_netif*)(netif)) #define NETIF_DEVICE(netif) ((struct tap_netif*)(netif))
#define NETIF_TAP(netif) (NETIF_DEVICE(netif)->handle) #define NETIF_TAP(netif) (NETIF_DEVICE(netif)->handle)
@ -505,12 +505,12 @@ static void tap_win32_thread_entry(void* param)
unsigned long read_size; unsigned long read_size;
BOOL result; BOOL result;
DWORD dwError; DWORD dwError;
tun_buffer_t* buffer; tun_buffer_t* buffer;
struct eth_device* eth; struct eth_device* eth;
eth = (struct eth_device*) &tap_netif_device; eth = (struct eth_device*) &tap_netif_device;
overlapped = NETIF_TAP(&tap_netif_device); overlapped = NETIF_TAP(&tap_netif_device);
buffer = get_buffer_from_free_list(overlapped); buffer = get_buffer_from_free_list(overlapped);
for (;;) { for (;;) {
result = ReadFile(overlapped->handle, result = ReadFile(overlapped->handle,
@ -548,15 +548,15 @@ static void tap_win32_thread_entry(void* param)
} }
if(read_size > 0) { if(read_size > 0) {
// rt_kprintf("rx packet, length=%d\n", read_size); // rt_kprintf("rx packet, length=%d\n", read_size);
buffer->read_size = read_size; buffer->read_size = read_size;
put_buffer_on_output_queue(overlapped, buffer); put_buffer_on_output_queue(overlapped, buffer);
/* notify eth rx thread to receive packet */ /* notify eth rx thread to receive packet */
eth_device_ready(eth); eth_device_ready(eth);
buffer = get_buffer_from_free_list(overlapped); buffer = get_buffer_from_free_list(overlapped);
} }
} }
} }
@ -649,143 +649,143 @@ static int tap_win32_open(tap_win32_overlapped_t **phandle,
static rt_err_t tap_netif_init(rt_device_t dev) static rt_err_t tap_netif_init(rt_device_t dev)
{ {
rt_thread_t tid; rt_thread_t tid;
tap_win32_overlapped_t *handle; tap_win32_overlapped_t *handle;
if (tap_win32_open(&handle, TAP_IFNAME) < 0) { if (tap_win32_open(&handle, TAP_IFNAME) < 0) {
printf("tap: Could not open '%s'\n", TAP_IFNAME); printf("tap: Could not open '%s'\n", TAP_IFNAME);
return -RT_ERROR; return -RT_ERROR;
} }
tap_netif_device.handle = handle; tap_netif_device.handle = handle;
/* create recv thread */ /* create recv thread */
tid = rt_thread_create("tap", tap_win32_thread_entry, RT_NULL, tid = rt_thread_create("tap", tap_win32_thread_entry, RT_NULL,
2048, RT_THREAD_PRIORITY_MAX - 1, 10); 2048, RT_THREAD_PRIORITY_MAX - 1, 10);
if (tid != RT_NULL) if (tid != RT_NULL)
{ {
rt_thread_startup(tid); rt_thread_startup(tid);
} }
rt_thread_sleep(RT_TICK_PER_SECOND); rt_thread_sleep(RT_TICK_PER_SECOND);
return RT_EOK; return RT_EOK;
} }
static rt_err_t tap_netif_open(rt_device_t dev, rt_uint16_t oflag) static rt_err_t tap_netif_open(rt_device_t dev, rt_uint16_t oflag)
{ {
return RT_EOK; return RT_EOK;
} }
static rt_err_t tap_netif_close(rt_device_t dev) static rt_err_t tap_netif_close(rt_device_t dev)
{ {
return RT_EOK; return RT_EOK;
} }
static rt_size_t tap_netif_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) static rt_size_t tap_netif_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
{ {
rt_set_errno(-RT_ENOSYS); rt_set_errno(-RT_ENOSYS);
return 0; return 0;
} }
static rt_size_t tap_netif_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) static rt_size_t tap_netif_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
{ {
rt_set_errno(-RT_ENOSYS); rt_set_errno(-RT_ENOSYS);
return 0; return 0;
} }
static rt_err_t tap_netif_control(rt_device_t dev, int cmd, void *args) static rt_err_t tap_netif_control(rt_device_t dev, int cmd, void *args)
{ {
switch (cmd) switch (cmd)
{ {
case NIOCTL_GADDR: case NIOCTL_GADDR:
/* get mac address */ /* get mac address */
if (args) rt_memcpy(args, tap_netif_device.dev_addr, 6); if (args) rt_memcpy(args, tap_netif_device.dev_addr, 6);
else return -RT_ERROR; else return -RT_ERROR;
break; break;
default : default :
break; break;
} }
return RT_EOK; return RT_EOK;
} }
rt_err_t tap_netif_tx( rt_device_t dev, struct pbuf* p) rt_err_t tap_netif_tx( rt_device_t dev, struct pbuf* p)
{ {
struct pbuf *q; struct pbuf *q;
char buffer[2048]; char buffer[2048];
int length; int length;
tap_win32_overlapped_t *handle; tap_win32_overlapped_t *handle;
unsigned char* ptr; unsigned char* ptr;
handle = NETIF_TAP(dev); handle = NETIF_TAP(dev);
/* lock EMAC device */ /* lock EMAC device */
rt_sem_take(&sem_lock, RT_WAITING_FOREVER); rt_sem_take(&sem_lock, RT_WAITING_FOREVER);
/* copy data to tx buffer */ /* copy data to tx buffer */
q = p; q = p;
ptr = (rt_uint8_t*)buffer; ptr = (rt_uint8_t*)buffer;
while (q) while (q)
{ {
memcpy(ptr, q->payload, q->len); memcpy(ptr, q->payload, q->len);
ptr += q->len; ptr += q->len;
q = q->next; q = q->next;
} }
length = p->tot_len; length = p->tot_len;
tap_win32_write(handle, buffer, length); tap_win32_write(handle, buffer, length);
/* unlock EMAC device */ /* unlock EMAC device */
rt_sem_release(&sem_lock); rt_sem_release(&sem_lock);
return RT_EOK; return RT_EOK;
} }
struct pbuf *tap_netif_rx(rt_device_t dev) struct pbuf *tap_netif_rx(rt_device_t dev)
{ {
struct pbuf* p = RT_NULL; struct pbuf* p = RT_NULL;
tap_win32_overlapped_t *handle; tap_win32_overlapped_t *handle;
rt_uint8_t *buf; rt_uint8_t *buf;
int max_size = 4096; int max_size = 4096;
int size; int size;
handle = NETIF_TAP(dev); handle = NETIF_TAP(dev);
size = tap_win32_read(handle, &buf, max_size); size = tap_win32_read(handle, &buf, max_size);
if (size > 0) { if (size > 0) {
p = pbuf_alloc(PBUF_LINK, size, PBUF_RAM); p = pbuf_alloc(PBUF_LINK, size, PBUF_RAM);
pbuf_take(p, buf, size); pbuf_take(p, buf, size);
tap_win32_free_buffer(handle, buf); tap_win32_free_buffer(handle, buf);
} }
return p; return p;
} }
void tap_netif_hw_init(void) void tap_netif_hw_init(void)
{ {
rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO); rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO);
tap_netif_device.dev_addr[0] = 0x00; tap_netif_device.dev_addr[0] = 0x00;
tap_netif_device.dev_addr[1] = 0x60; tap_netif_device.dev_addr[1] = 0x60;
tap_netif_device.dev_addr[2] = 0x37; tap_netif_device.dev_addr[2] = 0x37;
/* set mac address: (only for test) */ /* set mac address: (only for test) */
tap_netif_device.dev_addr[3] = 0x12; tap_netif_device.dev_addr[3] = 0x12;
tap_netif_device.dev_addr[4] = 0x34; tap_netif_device.dev_addr[4] = 0x34;
tap_netif_device.dev_addr[5] = 0x56; tap_netif_device.dev_addr[5] = 0x56;
tap_netif_device.parent.parent.init = tap_netif_init; tap_netif_device.parent.parent.init = tap_netif_init;
tap_netif_device.parent.parent.open = tap_netif_open; tap_netif_device.parent.parent.open = tap_netif_open;
tap_netif_device.parent.parent.close = tap_netif_close; tap_netif_device.parent.parent.close = tap_netif_close;
tap_netif_device.parent.parent.read = tap_netif_read; tap_netif_device.parent.parent.read = tap_netif_read;
tap_netif_device.parent.parent.write = tap_netif_write; tap_netif_device.parent.parent.write = tap_netif_write;
tap_netif_device.parent.parent.control = tap_netif_control; tap_netif_device.parent.parent.control = tap_netif_control;
tap_netif_device.parent.parent.user_data= RT_NULL; tap_netif_device.parent.parent.user_data= RT_NULL;
tap_netif_device.parent.eth_rx = tap_netif_rx; tap_netif_device.parent.eth_rx = tap_netif_rx;
tap_netif_device.parent.eth_tx = tap_netif_tx; tap_netif_device.parent.eth_tx = tap_netif_tx;
eth_device_init(&(tap_netif_device.parent), "e0"); eth_device_init(&(tap_netif_device.parent), "e0");
} }

View File

@ -1,5 +1,13 @@
#include <stdio.h> /*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#include <stdio.h>
#include <rthw.h> #include <rthw.h>
#include <rtdevice.h> #include <rtdevice.h>
#include <rtthread.h> #include <rtthread.h>
@ -88,11 +96,11 @@ static struct termios oldt, newt;
/*simulate windows' getch(), it works!!*/ /*simulate windows' getch(), it works!!*/
static void set_stty(void) static void set_stty(void)
{ {
/* get terminal input's attribute */ /* get terminal input's attribute */
tcgetattr(STDIN_FILENO, &oldt); tcgetattr(STDIN_FILENO, &oldt);
newt = oldt; newt = oldt;
/* set termios' local mode */ /* set termios' local mode */
newt.c_lflag &= ~(ECHO|ICANON); newt.c_lflag &= ~(ECHO|ICANON);
tcsetattr(STDIN_FILENO, TCSANOW, &newt); tcsetattr(STDIN_FILENO, TCSANOW, &newt);
} }
@ -117,10 +125,10 @@ static void * ThreadforKeyGet(void * lpParam)
#ifndef _WIN32 #ifndef _WIN32
sigset_t sigmask, oldmask; sigset_t sigmask, oldmask;
/* set the getchar without buffer */ /* set the getchar without buffer */
sigfillset(&sigmask); sigfillset(&sigmask);
pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask); pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask);
set_stty(); set_stty();
#endif #endif
(void)lpParam; //prevent compiler warnings (void)lpParam; //prevent compiler warnings
@ -217,7 +225,7 @@ static int console_putc(struct rt_serial_device *serial, char c)
level = rt_hw_interrupt_disable(); level = rt_hw_interrupt_disable();
fwrite(&c, 1, 1, stdout); fwrite(&c, 1, 1, stdout);
fflush(stdout); fflush(stdout);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
return 1; return 1;
} }

View File

@ -1,3 +1,12 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#ifndef UART_CONSOLE_H__ #ifndef UART_CONSOLE_H__
#define UART_CONSOLE_H__ #define UART_CONSOLE_H__

View File

@ -1,4 +1,13 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
int dummy_main() int dummy_main()
{ {
return 0; return 0;
} }

View File

@ -12,9 +12,9 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino, CACE Technologies * 3. Neither the name of the Politecnico di Torino, CACE Technologies
* nor the names of its contributors may be used to endorse or promote * nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@ -32,7 +32,7 @@
*/ */
/** @ingroup packetapi /** @ingroup packetapi
* @{ * @{
*/ */
/** @defgroup packet32h Packet.dll definitions and data structures /** @defgroup packet32h Packet.dll definitions and data structures
@ -70,19 +70,19 @@ typedef struct _AirpcapHandle *PAirpcapHandle;
/// Alignment macro. Defines the alignment size. /// Alignment macro. Defines the alignment size.
#define Packet_ALIGNMENT sizeof(int) #define Packet_ALIGNMENT sizeof(int)
/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. /// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT.
#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) #define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1))
#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent
#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent #define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent
// Loopback behaviour definitions // Loopback behaviour definitions
#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver #define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver
#define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver #define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver
/*! /*!
\brief Network type structure. \brief Network type structure.
@ -91,8 +91,8 @@ typedef struct _AirpcapHandle *PAirpcapHandle;
*/ */
typedef struct NetType typedef struct NetType
{ {
UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information)
ULONGLONG LinkSpeed; ///< The speed of the network in bits per second ULONGLONG LinkSpeed; ///< The speed of the network in bits per second
}NetType; }NetType;
@ -103,12 +103,12 @@ typedef struct NetType
/*! /*!
\brief A BPF pseudo-assembly program. \brief A BPF pseudo-assembly program.
The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet.
*/ */
struct bpf_program struct bpf_program
{ {
UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow.
struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program. struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program.
}; };
/*! /*!
@ -116,12 +116,12 @@ struct bpf_program
bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver. bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver.
*/ */
struct bpf_insn struct bpf_insn
{ {
USHORT code; ///< Instruction type and addressing mode. USHORT code; ///< Instruction type and addressing mode.
UCHAR jt; ///< Jump if true UCHAR jt; ///< Jump if true
UCHAR jf; ///< Jump if false UCHAR jf; ///< Jump if false
int k; ///< Generic field used for various purposes. int k; ///< Generic field used for various purposes.
}; };
/*! /*!
@ -129,17 +129,17 @@ struct bpf_insn
It is used by packet.dll to return statistics about a capture session. It is used by packet.dll to return statistics about a capture session.
*/ */
struct bpf_stat struct bpf_stat
{ {
UINT bs_recv; ///< Number of packets that the driver received from the network adapter UINT bs_recv; ///< Number of packets that the driver received from the network adapter
///< from the beginning of the current capture. This value includes the packets ///< from the beginning of the current capture. This value includes the packets
///< lost by the driver. ///< lost by the driver.
UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture.
///< Basically, a packet is lost when the the buffer of the driver is full. ///< Basically, a packet is lost when the the buffer of the driver is full.
///< In this situation the packet cannot be stored and the driver rejects it. ///< In this situation the packet cannot be stored and the driver rejects it.
UINT ps_ifdrop; ///< drops by interface. XXX not yet supported UINT ps_ifdrop; ///< drops by interface. XXX not yet supported
UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and
///< thus reach the application. ///< thus reach the application.
}; };
/*! /*!
@ -147,18 +147,18 @@ struct bpf_stat
This structure defines the header associated with every packet delivered to the application. This structure defines the header associated with every packet delivered to the application.
*/ */
struct bpf_hdr struct bpf_hdr
{ {
struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. struct timeval bh_tstamp; ///< The timestamp associated with the captured packet.
///< It is stored in a TimeVal structure. ///< It is stored in a TimeVal structure.
UINT bh_caplen; ///< Length of captured portion. The captured portion <b>can be different</b> UINT bh_caplen; ///< Length of captured portion. The captured portion <b>can be different</b>
///< from the original packet, because it is possible (with a proper filter) ///< from the original packet, because it is possible (with a proper filter)
///< to instruct the driver to capture only a portion of the packets. ///< to instruct the driver to capture only a portion of the packets.
UINT bh_datalen; ///< Original length of packet UINT bh_datalen; ///< Original length of packet
USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases,
///< a padding could be added between the end of this structure and the packet ///< a padding could be added between the end of this structure and the packet
///< data for performance reasons. This filed can be used to retrieve the actual data ///< data for performance reasons. This filed can be used to retrieve the actual data
///< of the packet. ///< of the packet.
}; };
/*! /*!
@ -169,11 +169,11 @@ struct bpf_hdr
packet in a dump file. This makes straightforward sending WinPcap dump files to the network. packet in a dump file. This makes straightforward sending WinPcap dump files to the network.
*/ */
struct dump_bpf_hdr{ struct dump_bpf_hdr{
struct timeval ts; ///< Time stamp of the packet struct timeval ts; ///< Time stamp of the packet
UINT caplen; ///< Length of captured portion. The captured portion can smaller than the UINT caplen; ///< Length of captured portion. The captured portion can smaller than the
///< the original packet, because it is possible (with a proper filter) to ///< the original packet, because it is possible (with a proper filter) to
///< instruct the driver to capture only a portion of the packets. ///< instruct the driver to capture only a portion of the packets.
UINT len; ///< Length of the original packet (off wire). UINT len; ///< Length of the original packet (off wire).
}; };
@ -181,39 +181,39 @@ struct dump_bpf_hdr{
struct bpf_stat; struct bpf_stat;
#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices #define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices
#define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links #define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links
#define NMAX_PACKET 65535 #define NMAX_PACKET 65535
/*! /*!
\brief Addresses of a network adapter. \brief Addresses of a network adapter.
This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with
an adapter. an adapter.
*/ */
typedef struct npf_if_addr { typedef struct npf_if_addr {
struct sockaddr_storage IPAddress; ///< IP address. struct sockaddr_storage IPAddress; ///< IP address.
struct sockaddr_storage SubnetMask; ///< Netmask for that address. struct sockaddr_storage SubnetMask; ///< Netmask for that address.
struct sockaddr_storage Broadcast; ///< Broadcast address. struct sockaddr_storage Broadcast; ///< Broadcast address.
}npf_if_addr; }npf_if_addr;
#define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. #define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API.
#define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. #define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API.
#define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. #define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.
#define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. #define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API.
typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API
typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API
#define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter #define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter
#define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET #define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET
#define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card #define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card
#define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file #define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file
#define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. #define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones.
#define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card #define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card
#define INFO_FLAG_NPFIM_DEVICE 32 #define INFO_FLAG_NPFIM_DEVICE 32
/*! /*!
\brief Describes an opened network adapter. \brief Describes an opened network adapter.
@ -221,39 +221,39 @@ typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...)
This structure is the most important for the functioning of packet.dll, but the great part of its fields This structure is the most important for the functioning of packet.dll, but the great part of its fields
should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters
*/ */
typedef struct _ADAPTER { typedef struct _ADAPTER {
HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver.
CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened. CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened.
int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated
///< on the wire. ///< on the wire.
HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter.
///< It can be passed to standard Win32 functions (like WaitForSingleObject ///< It can be passed to standard Win32 functions (like WaitForSingleObject
///< or WaitForMultipleObjects) to wait until the driver's buffer contains some ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some
///< data. It is particularly useful in GUI applications that need to wait ///< data. It is particularly useful in GUI applications that need to wait
///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() ///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy()
///< function can be used to define the minimum amount of data in the kernel buffer ///< function can be used to define the minimum amount of data in the kernel buffer
///< that will cause the event to be signalled. ///< that will cause the event to be signalled.
UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and
///< ReadEvent will be signaled, also if no packets were captured ///< ReadEvent will be signaled, also if no packets were captured
CHAR Name[ADAPTER_NAME_LENGTH]; CHAR Name[ADAPTER_NAME_LENGTH];
PWAN_ADAPTER pWanAdapter; PWAN_ADAPTER pWanAdapter;
UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API.
#ifdef HAVE_AIRPCAP_API #ifdef HAVE_AIRPCAP_API
PAirpcapHandle AirpcapAd; PAirpcapHandle AirpcapAd;
#endif // HAVE_AIRPCAP_API #endif // HAVE_AIRPCAP_API
#ifdef HAVE_NPFIM_API #ifdef HAVE_NPFIM_API
void* NpfImHandle; void* NpfImHandle;
#endif // HAVE_NPFIM_API #endif // HAVE_NPFIM_API
#ifdef HAVE_DAG_API #ifdef HAVE_DAG_API
dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter
PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card
struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure
unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry
DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps).
#endif // HAVE_DAG_API #endif // HAVE_DAG_API
} ADAPTER, *LPADAPTER; } ADAPTER, *LPADAPTER;
@ -262,31 +262,31 @@ typedef struct _ADAPTER {
This structure defines the header associated with every packet delivered to the application. This structure defines the header associated with every packet delivered to the application.
*/ */
typedef struct _PACKET { typedef struct _PACKET {
HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications.
OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications. OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications.
PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for
///< details about the organization of the data in this buffer ///< details about the organization of the data in this buffer
UINT Length; ///< Length of the buffer UINT Length; ///< Length of the buffer
DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data
///< received by the last call to PacketReceivePacket() ///< received by the last call to PacketReceivePacket()
BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications.
} PACKET, *LPPACKET; } PACKET, *LPPACKET;
/*! /*!
\brief Structure containing an OID request. \brief Structure containing an OID request.
It is used by the PacketRequest() function to send an OID to the interface card driver. It is used by the PacketRequest() function to send an OID to the interface card driver.
It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address,
the list of the multicast groups defined on it, and so on. the list of the multicast groups defined on it, and so on.
*/ */
struct _PACKET_OID_DATA { struct _PACKET_OID_DATA {
ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h
///< for a complete list of valid codes. ///< for a complete list of valid codes.
ULONG Length; ///< Length of the data field ULONG Length; ///< Length of the data field
UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received
///< from the adapter. ///< from the adapter.
}; };
typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA;
#ifdef __cplusplus #ifdef __cplusplus
@ -299,16 +299,16 @@ extern "C" {
/* /*
BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName,
CHAR *Value, CHAR *Value,
UINT *pValueLen, UINT *pValueLen,
CHAR *DefaultVal); CHAR *DefaultVal);
BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName,
WCHAR *Value, WCHAR *Value,
UINT *pValueLen, UINT *pValueLen,
WCHAR *DefaultVal); WCHAR *DefaultVal);
*/ */
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// EXPORTED FUNCTIONS // EXPORTED FUNCTIONS
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -350,10 +350,10 @@ PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject);
// //
// Used by PacketStartOemEx // Used by PacketStartOemEx
// //
#define PACKET_START_OEM_NO_NETMON 0x00000001 #define PACKET_START_OEM_NO_NETMON 0x00000001
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif //__PACKET32 #endif //__PACKET32

View File

@ -12,9 +12,9 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino, CACE Technologies * 3. Neither the name of the Politecnico di Torino, CACE Technologies
* nor the names of its contributors may be used to endorse or promote * nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@ -45,9 +45,9 @@ extern "C" {
*/ */
struct pcap_send_queue struct pcap_send_queue
{ {
u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field.
u_int len; ///< Current size of the queue, in bytes. u_int len; ///< Current size of the queue, in bytes.
char *buffer; ///< Buffer containing the packets to be sent. char *buffer; ///< Buffer containing the packets to be sent.
}; };
typedef struct pcap_send_queue pcap_send_queue; typedef struct pcap_send_queue pcap_send_queue;
@ -60,26 +60,26 @@ typedef struct pcap_send_queue pcap_send_queue;
typedef struct _AirpcapHandle *PAirpcapHandle; typedef struct _AirpcapHandle *PAirpcapHandle;
#endif #endif
#define BPF_MEM_EX_IMM 0xc0 #define BPF_MEM_EX_IMM 0xc0
#define BPF_MEM_EX_IND 0xe0 #define BPF_MEM_EX_IND 0xe0
/*used for ST*/ /*used for ST*/
#define BPF_MEM_EX 0xc0 #define BPF_MEM_EX 0xc0
#define BPF_TME 0x08 #define BPF_TME 0x08
#define BPF_LOOKUP 0x90 #define BPF_LOOKUP 0x90
#define BPF_EXECUTE 0xa0 #define BPF_EXECUTE 0xa0
#define BPF_INIT 0xb0 #define BPF_INIT 0xb0
#define BPF_VALIDATE 0xc0 #define BPF_VALIDATE 0xc0
#define BPF_SET_ACTIVE 0xd0 #define BPF_SET_ACTIVE 0xd0
#define BPF_RESET 0xe0 #define BPF_RESET 0xe0
#define BPF_SET_MEMORY 0x80 #define BPF_SET_MEMORY 0x80
#define BPF_GET_REGISTER_VALUE 0x70 #define BPF_GET_REGISTER_VALUE 0x70
#define BPF_SET_REGISTER_VALUE 0x60 #define BPF_SET_REGISTER_VALUE 0x60
#define BPF_SET_WORKING 0x50 #define BPF_SET_WORKING 0x50
#define BPF_SET_ACTIVE_READ 0x40 #define BPF_SET_ACTIVE_READ 0x40
#define BPF_SET_AUTODELETION 0x30 #define BPF_SET_AUTODELETION 0x30
#define BPF_SEPARATION 0xff #define BPF_SEPARATION 0xff
/* Prototypes */ /* Prototypes */
pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); pcap_send_queue* pcap_sendqueue_alloc(u_int memsize);

View File

@ -1,7 +1,7 @@
/* /*
* Copyright (C) 1999 WIDE Project. * Copyright (C) 1999 WIDE Project.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
@ -13,7 +13,7 @@
* 3. Neither the name of the project nor the names of its contributors * 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@ -45,7 +45,7 @@ typedef signed int int8_t;
#endif /* HAVE_U_INT8_T */ #endif /* HAVE_U_INT8_T */
#ifndef HAVE_U_INT16_T #ifndef HAVE_U_INT16_T
#if SIZEOF_SHORT == 2 #if SIZEOF_SHORT == 2
typedef unsigned short u_int16_t; typedef unsigned short u_int16_t;
@ -104,33 +104,33 @@ typedef unsigned short u_int64_t;
#ifndef PRId64 #ifndef PRId64
#ifdef _MSC_EXTENSIONS #ifdef _MSC_EXTENSIONS
#define PRId64 "I64d" #define PRId64 "I64d"
#else /* _MSC_EXTENSIONS */ #else /* _MSC_EXTENSIONS */
#define PRId64 "lld" #define PRId64 "lld"
#endif /* _MSC_EXTENSIONS */ #endif /* _MSC_EXTENSIONS */
#endif /* PRId64 */ #endif /* PRId64 */
#ifndef PRIo64 #ifndef PRIo64
#ifdef _MSC_EXTENSIONS #ifdef _MSC_EXTENSIONS
#define PRIo64 "I64o" #define PRIo64 "I64o"
#else /* _MSC_EXTENSIONS */ #else /* _MSC_EXTENSIONS */
#define PRIo64 "llo" #define PRIo64 "llo"
#endif /* _MSC_EXTENSIONS */ #endif /* _MSC_EXTENSIONS */
#endif /* PRIo64 */ #endif /* PRIo64 */
#ifndef PRIx64 #ifndef PRIx64
#ifdef _MSC_EXTENSIONS #ifdef _MSC_EXTENSIONS
#define PRIx64 "I64x" #define PRIx64 "I64x"
#else /* _MSC_EXTENSIONS */ #else /* _MSC_EXTENSIONS */
#define PRIx64 "llx" #define PRIx64 "llx"
#endif /* _MSC_EXTENSIONS */ #endif /* _MSC_EXTENSIONS */
#endif /* PRIx64 */ #endif /* PRIx64 */
#ifndef PRIu64 #ifndef PRIu64
#ifdef _MSC_EXTENSIONS #ifdef _MSC_EXTENSIONS
#define PRIu64 "I64u" #define PRIu64 "I64u"
#else /* _MSC_EXTENSIONS */ #else /* _MSC_EXTENSIONS */
#define PRIu64 "llu" #define PRIu64 "llu"
#endif /* _MSC_EXTENSIONS */ #endif /* _MSC_EXTENSIONS */
#endif /* PRIu64 */ #endif /* PRIu64 */

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1993, 1994, 1997 * Copyright (c) 1993, 1994, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that: (1) source code distributions * modification, are permitted provided that: (1) source code distributions
@ -30,12 +30,12 @@
#include <ws2tcpip.h> #include <ws2tcpip.h>
#ifndef __MINGW32__ #ifndef __MINGW32__
#define IN_MULTICAST(a) IN_CLASSD(a) #define IN_MULTICAST(a) IN_CLASSD(a)
#endif #endif
#define IN_EXPERIMENTAL(a) ((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000) #define IN_EXPERIMENTAL(a) ((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000)
#define IN_LOOPBACKNET 127 #define IN_LOOPBACKNET 127
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF) #if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
/* IPv6 address */ /* IPv6 address */
@ -43,14 +43,14 @@ struct in6_addr
{ {
union union
{ {
u_int8_t u6_addr8[16]; u_int8_t u6_addr8[16];
u_int16_t u6_addr16[8]; u_int16_t u6_addr16[8];
u_int32_t u6_addr32[4]; u_int32_t u6_addr32[4];
} in6_u; } in6_u;
#define s6_addr in6_u.u6_addr8 #define s6_addr in6_u.u6_addr8
#define s6_addr16 in6_u.u6_addr16 #define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32 #define s6_addr32 in6_u.u6_addr32
#define s6_addr64 in6_u.u6_addr64 #define s6_addr64 in6_u.u6_addr64
}; };
#define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } #define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
@ -59,36 +59,36 @@ struct in6_addr
#if (defined _MSC_VER) || (defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)) #if (defined _MSC_VER) || (defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF))
typedef unsigned short sa_family_t; typedef unsigned short sa_family_t;
#endif #endif
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF) #if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
#define __SOCKADDR_COMMON(sa_prefix) \ #define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family sa_family_t sa_prefix##family
/* Ditto, for IPv6. */ /* Ditto, for IPv6. */
struct sockaddr_in6 struct sockaddr_in6
{ {
__SOCKADDR_COMMON (sin6_); __SOCKADDR_COMMON (sin6_);
u_int16_t sin6_port; /* Transport layer port # */ u_int16_t sin6_port; /* Transport layer port # */
u_int32_t sin6_flowinfo; /* IPv6 flow information */ u_int32_t sin6_flowinfo; /* IPv6 flow information */
struct in6_addr sin6_addr; /* IPv6 address */ struct in6_addr sin6_addr; /* IPv6 address */
}; };
#define IN6_IS_ADDR_V4MAPPED(a) \ #define IN6_IS_ADDR_V4MAPPED(a) \
((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \ ((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \
(((u_int32_t *) (a))[2] == htonl (0xffff))) (((u_int32_t *) (a))[2] == htonl (0xffff)))
#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff) #define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)
#define IN6_IS_ADDR_LINKLOCAL(a) \ #define IN6_IS_ADDR_LINKLOCAL(a) \
((((u_int32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000)) ((((u_int32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))
#define IN6_IS_ADDR_LOOPBACK(a) \ #define IN6_IS_ADDR_LOOPBACK(a) \
(((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \ (((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \
((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1)) ((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1))
#endif /* __MINGW32__ */ #endif /* __MINGW32__ */
#define ip6_vfc ip6_ctlun.ip6_un2_vfc #define ip6_vfc ip6_ctlun.ip6_un2_vfc
@ -104,60 +104,60 @@ struct sockaddr_in6
#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0] #define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
/* /*
* IPV6 extension headers * IPV6 extension headers
*/ */
#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */ #define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
#define IPPROTO_IPV6 41 /* IPv6 header. */ #define IPPROTO_IPV6 41 /* IPv6 header. */
#define IPPROTO_ROUTING 43 /* IPv6 routing header */ #define IPPROTO_ROUTING 43 /* IPv6 routing header */
#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */ #define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
#define IPPROTO_ESP 50 /* encapsulating security payload */ #define IPPROTO_ESP 50 /* encapsulating security payload */
#define IPPROTO_AH 51 /* authentication header */ #define IPPROTO_AH 51 /* authentication header */
#define IPPROTO_ICMPV6 58 /* ICMPv6 */ #define IPPROTO_ICMPV6 58 /* ICMPv6 */
#define IPPROTO_NONE 59 /* IPv6 no next header */ #define IPPROTO_NONE 59 /* IPv6 no next header */
#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */ #define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
#define IPPROTO_PIM 103 /* Protocol Independent Multicast. */ #define IPPROTO_PIM 103 /* Protocol Independent Multicast. */
#define IPV6_RTHDR_TYPE_0 0 #define IPV6_RTHDR_TYPE_0 0
/* Option types and related macros */ /* Option types and related macros */
#define IP6OPT_PAD1 0x00 /* 00 0 00000 */ #define IP6OPT_PAD1 0x00 /* 00 0 00000 */
#define IP6OPT_PADN 0x01 /* 00 0 00001 */ #define IP6OPT_PADN 0x01 /* 00 0 00001 */
#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */ #define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */
#define IP6OPT_JUMBO_LEN 6 #define IP6OPT_JUMBO_LEN 6
#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 */ #define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 */
#define IP6OPT_RTALERT_LEN 4 #define IP6OPT_RTALERT_LEN 4
#define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */ #define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */
#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains an RSVP message */ #define IP6OPT_RTALERT_RSVP 1 /* Datagram contains an RSVP message */
#define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */ #define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */
#define IP6OPT_MINLEN 2 #define IP6OPT_MINLEN 2
#define IP6OPT_BINDING_UPDATE 0xc6 /* 11 0 00110 */ #define IP6OPT_BINDING_UPDATE 0xc6 /* 11 0 00110 */
#define IP6OPT_BINDING_ACK 0x07 /* 00 0 00111 */ #define IP6OPT_BINDING_ACK 0x07 /* 00 0 00111 */
#define IP6OPT_BINDING_REQ 0x08 /* 00 0 01000 */ #define IP6OPT_BINDING_REQ 0x08 /* 00 0 01000 */
#define IP6OPT_HOME_ADDRESS 0xc9 /* 11 0 01001 */ #define IP6OPT_HOME_ADDRESS 0xc9 /* 11 0 01001 */
#define IP6OPT_EID 0x8a /* 10 0 01010 */ #define IP6OPT_EID 0x8a /* 10 0 01010 */
#define IP6OPT_TYPE(o) ((o) & 0xC0) #define IP6OPT_TYPE(o) ((o) & 0xC0)
#define IP6OPT_TYPE_SKIP 0x00 #define IP6OPT_TYPE_SKIP 0x00
#define IP6OPT_TYPE_DISCARD 0x40 #define IP6OPT_TYPE_DISCARD 0x40
#define IP6OPT_TYPE_FORCEICMP 0x80 #define IP6OPT_TYPE_FORCEICMP 0x80
#define IP6OPT_TYPE_ICMP 0xC0 #define IP6OPT_TYPE_ICMP 0xC0
#define IP6OPT_MUTABLE 0x20 #define IP6OPT_MUTABLE 0x20
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF) #if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
#ifndef EAI_ADDRFAMILY #ifndef EAI_ADDRFAMILY
struct addrinfo { struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME */ int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
int ai_family; /* PF_xxx */ int ai_family; /* PF_xxx */
int ai_socktype; /* SOCK_xxx */ int ai_socktype; /* SOCK_xxx */
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
size_t ai_addrlen; /* length of ai_addr */ size_t ai_addrlen; /* length of ai_addr */
char *ai_canonname; /* canonical name for hostname */ char *ai_canonname; /* canonical name for hostname */
struct sockaddr *ai_addr; /* binary address */ struct sockaddr *ai_addr; /* binary address */
struct addrinfo *ai_next; /* next structure in linked list */ struct addrinfo *ai_next; /* next structure in linked list */
}; };
#endif #endif
#endif /* __MINGW32__ */ #endif /* __MINGW32__ */

View File

@ -1,10 +1,10 @@
/*- /*-
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This code is derived from the Stanford/CMU enet packet filter, * This code is derived from the Stanford/CMU enet packet filter,
* (net/enet.c) distributed as part of 4.3BSD, and code contributed * (net/enet.c) distributed as part of 4.3BSD, and code contributed
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
* Berkeley Laboratory. * Berkeley Laboratory.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1994, 1996 * Copyright (c) 1994, 1996
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the Computer Systems * This product includes software developed by the Computer Systems
* Engineering Group at Lawrence Berkeley Laboratory. * Engineering Group at Lawrence Berkeley Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used * 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without * to endorse or promote products derived from this software without
* specific prior written permission. * specific prior written permission.

View File

@ -39,7 +39,7 @@
#endif #endif
/* /*
* Avoids a compiler warning in case this was already defined * Avoids a compiler warning in case this was already defined
* (someone defined _WINSOCKAPI_ when including 'windows.h', in order * (someone defined _WINSOCKAPI_ when including 'windows.h', in order
* to prevent it from including 'winsock.h') * to prevent it from including 'winsock.h')
*/ */
@ -66,7 +66,7 @@
#define strdup _strdup #define strdup _strdup
#endif #endif
#define inline __inline #define inline __inline
#ifdef __MINGW32__ #ifdef __MINGW32__
#include <stdint.h> #include <stdint.h>
@ -88,6 +88,6 @@ typedef __int64 intptr_t;
typedef _W64 int intptr_t; typedef _W64 int intptr_t;
#endif #endif
#define _INTPTR_T_DEFINED #define _INTPTR_T_DEFINED
#endif #endif
#endif /*__MINGW32__*/ #endif /*__MINGW32__*/

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the Computer Systems * This product includes software developed by the Computer Systems
* Engineering Group at Lawrence Berkeley Laboratory. * Engineering Group at Lawrence Berkeley Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used * 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without * to endorse or promote products derived from this software without
* specific prior written permission. * specific prior written permission.

View File

@ -11,8 +11,8 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote * 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@ -32,7 +32,7 @@
* *
* @(#) $Header: /tcpdump/master/libpcap/pcap/bluetooth.h,v 1.1 2007/09/22 02:10:17 guy Exp $ * @(#) $Header: /tcpdump/master/libpcap/pcap/bluetooth.h,v 1.1 2007/09/22 02:10:17 guy Exp $
*/ */
#ifndef _PCAP_BLUETOOTH_STRUCTS_H__ #ifndef _PCAP_BLUETOOTH_STRUCTS_H__
#define _PCAP_BLUETOOTH_STRUCTS_H__ #define _PCAP_BLUETOOTH_STRUCTS_H__
@ -41,7 +41,7 @@
* fields are in network byte order * fields are in network byte order
*/ */
typedef struct _pcap_bluetooth_h4_header { typedef struct _pcap_bluetooth_h4_header {
u_int32_t direction; /* if first bit is set direction is incoming */ u_int32_t direction; /* if first bit is set direction is incoming */
} pcap_bluetooth_h4_header; } pcap_bluetooth_h4_header;

View File

@ -1,10 +1,10 @@
/*- /*-
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This code is derived from the Stanford/CMU enet packet filter, * This code is derived from the Stanford/CMU enet packet filter,
* (net/enet.c) distributed as part of 4.3BSD, and code contributed * (net/enet.c) distributed as part of 4.3BSD, and code contributed
* to Berkeley by Steven McCanne and Van Jacobson both of Lawrence * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
* Berkeley Laboratory. * Berkeley Laboratory.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -64,13 +64,13 @@ extern "C" {
typedef long bpf_int32; typedef long bpf_int32;
typedef unsigned long bpf_u_int32; typedef unsigned long bpf_u_int32;
#else #else
typedef int bpf_int32; typedef int bpf_int32;
typedef u_int bpf_u_int32; typedef u_int bpf_u_int32;
#endif #endif
/* /*
* Alignment macros. BPF_WORDALIGN rounds up to the next * Alignment macros. BPF_WORDALIGN rounds up to the next
* even multiple of BPF_ALIGNMENT. * even multiple of BPF_ALIGNMENT.
*/ */
#ifndef __NetBSD__ #ifndef __NetBSD__
#define BPF_ALIGNMENT sizeof(bpf_int32) #define BPF_ALIGNMENT sizeof(bpf_int32)
@ -86,12 +86,12 @@ typedef u_int bpf_u_int32;
* Structure for "pcap_compile()", "pcap_setfilter()", etc.. * Structure for "pcap_compile()", "pcap_setfilter()", etc..
*/ */
struct bpf_program { struct bpf_program {
u_int bf_len; u_int bf_len;
struct bpf_insn *bf_insns; struct bpf_insn *bf_insns;
}; };
/* /*
* Struct return by BIOCVERSION. This represents the version number of * Struct return by BIOCVERSION. This represents the version number of
* the filter language described by the instruction encodings below. * the filter language described by the instruction encodings below.
* bpf understands a program iff kernel_major == filter_major && * bpf understands a program iff kernel_major == filter_major &&
* kernel_minor >= filter_minor, that is, if the value returned by the * kernel_minor >= filter_minor, that is, if the value returned by the
@ -102,8 +102,8 @@ struct bpf_program {
* It has nothing to do with the source code version. * It has nothing to do with the source code version.
*/ */
struct bpf_version { struct bpf_version {
u_short bv_major; u_short bv_major;
u_short bv_minor; u_short bv_minor;
}; };
/* Current version number of filter architecture. */ /* Current version number of filter architecture. */
#define BPF_MAJOR_VERSION 1 #define BPF_MAJOR_VERSION 1
@ -125,17 +125,17 @@ struct bpf_version {
* These are the types that are the same on all platforms, and that * These are the types that are the same on all platforms, and that
* have been defined by <net/bpf.h> for ages. * have been defined by <net/bpf.h> for ages.
*/ */
#define DLT_NULL 0 /* BSD loopback encapsulation */ #define DLT_NULL 0 /* BSD loopback encapsulation */
#define DLT_EN10MB 1 /* Ethernet (10Mb) */ #define DLT_EN10MB 1 /* Ethernet (10Mb) */
#define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */ #define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
#define DLT_AX25 3 /* Amateur Radio AX.25 */ #define DLT_AX25 3 /* Amateur Radio AX.25 */
#define DLT_PRONET 4 /* Proteon ProNET Token Ring */ #define DLT_PRONET 4 /* Proteon ProNET Token Ring */
#define DLT_CHAOS 5 /* Chaos */ #define DLT_CHAOS 5 /* Chaos */
#define DLT_IEEE802 6 /* 802.5 Token Ring */ #define DLT_IEEE802 6 /* 802.5 Token Ring */
#define DLT_ARCNET 7 /* ARCNET, with BSD-style header */ #define DLT_ARCNET 7 /* ARCNET, with BSD-style header */
#define DLT_SLIP 8 /* Serial Line IP */ #define DLT_SLIP 8 /* Serial Line IP */
#define DLT_PPP 9 /* Point-to-point Protocol */ #define DLT_PPP 9 /* Point-to-point Protocol */
#define DLT_FDDI 10 /* FDDI */ #define DLT_FDDI 10 /* FDDI */
/* /*
* These are types that are different on some platforms, and that * These are types that are different on some platforms, and that
@ -146,12 +146,12 @@ struct bpf_version {
* XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS, * XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS,
* but I don't know what the right #define is for BSD/OS. * but I don't know what the right #define is for BSD/OS.
*/ */
#define DLT_ATM_RFC1483 11 /* LLC-encapsulated ATM */ #define DLT_ATM_RFC1483 11 /* LLC-encapsulated ATM */
#ifdef __OpenBSD__ #ifdef __OpenBSD__
#define DLT_RAW 14 /* raw IP */ #define DLT_RAW 14 /* raw IP */
#else #else
#define DLT_RAW 12 /* raw IP */ #define DLT_RAW 12 /* raw IP */
#endif #endif
/* /*
@ -162,12 +162,12 @@ struct bpf_version {
*/ */
#if defined(__NetBSD__) || defined(__FreeBSD__) #if defined(__NetBSD__) || defined(__FreeBSD__)
#ifndef DLT_SLIP_BSDOS #ifndef DLT_SLIP_BSDOS
#define DLT_SLIP_BSDOS 13 /* BSD/OS Serial Line IP */ #define DLT_SLIP_BSDOS 13 /* BSD/OS Serial Line IP */
#define DLT_PPP_BSDOS 14 /* BSD/OS Point-to-point Protocol */ #define DLT_PPP_BSDOS 14 /* BSD/OS Point-to-point Protocol */
#endif #endif
#else #else
#define DLT_SLIP_BSDOS 15 /* BSD/OS Serial Line IP */ #define DLT_SLIP_BSDOS 15 /* BSD/OS Serial Line IP */
#define DLT_PPP_BSDOS 16 /* BSD/OS Point-to-point Protocol */ #define DLT_PPP_BSDOS 16 /* BSD/OS Point-to-point Protocol */
#endif #endif
/* /*
@ -176,21 +176,21 @@ struct bpf_version {
* 18 is used for DLT_PFSYNC in OpenBSD; don't use it for anything else. * 18 is used for DLT_PFSYNC in OpenBSD; don't use it for anything else.
*/ */
#define DLT_ATM_CLIP 19 /* Linux Classical-IP over ATM */ #define DLT_ATM_CLIP 19 /* Linux Classical-IP over ATM */
/* /*
* Apparently Redback uses this for its SmartEdge 400/800. I hope * Apparently Redback uses this for its SmartEdge 400/800. I hope
* nobody else decided to use it, too. * nobody else decided to use it, too.
*/ */
#define DLT_REDBACK_SMARTEDGE 32 #define DLT_REDBACK_SMARTEDGE 32
/* /*
* These values are defined by NetBSD; other platforms should refrain from * These values are defined by NetBSD; other platforms should refrain from
* using them for other purposes, so that NetBSD savefiles with link * using them for other purposes, so that NetBSD savefiles with link
* types of 50 or 51 can be read as this type on all platforms. * types of 50 or 51 can be read as this type on all platforms.
*/ */
#define DLT_PPP_SERIAL 50 /* PPP over serial with HDLC encapsulation */ #define DLT_PPP_SERIAL 50 /* PPP over serial with HDLC encapsulation */
#define DLT_PPP_ETHER 51 /* PPP over Ethernet */ #define DLT_PPP_ETHER 51 /* PPP over Ethernet */
/* /*
* The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses
@ -199,7 +199,7 @@ struct bpf_version {
* Ethernet type, and 36 bytes that appear to be 0 in at least one capture * Ethernet type, and 36 bytes that appear to be 0 in at least one capture
* I've seen. * I've seen.
*/ */
#define DLT_SYMANTEC_FIREWALL 99 #define DLT_SYMANTEC_FIREWALL 99
/* /*
* Values between 100 and 103 are used in capture file headers as * Values between 100 and 103 are used in capture file headers as
@ -221,10 +221,10 @@ struct bpf_version {
* libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well, * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,
* for source compatibility with programs written for libpcap 0.5. * for source compatibility with programs written for libpcap 0.5.
*/ */
#define DLT_C_HDLC 104 /* Cisco HDLC */ #define DLT_C_HDLC 104 /* Cisco HDLC */
#define DLT_CHDLC DLT_C_HDLC #define DLT_CHDLC DLT_C_HDLC
#define DLT_IEEE802_11 105 /* IEEE 802.11 wireless */ #define DLT_IEEE802_11 105 /* IEEE 802.11 wireless */
/* /*
* 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW, * 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW,
@ -239,7 +239,7 @@ struct bpf_version {
* DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header
* (DLCI, etc.). * (DLCI, etc.).
*/ */
#define DLT_FRELAY 107 #define DLT_FRELAY 107
/* /*
* OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except
@ -249,9 +249,9 @@ struct bpf_version {
* we don't use 12 for it in OSes other than OpenBSD. * we don't use 12 for it in OSes other than OpenBSD.
*/ */
#ifdef __OpenBSD__ #ifdef __OpenBSD__
#define DLT_LOOP 12 #define DLT_LOOP 12
#else #else
#define DLT_LOOP 108 #define DLT_LOOP 108
#endif #endif
/* /*
@ -260,9 +260,9 @@ struct bpf_version {
* than OpenBSD. * than OpenBSD.
*/ */
#ifdef __OpenBSD__ #ifdef __OpenBSD__
#define DLT_ENC 13 #define DLT_ENC 13
#else #else
#define DLT_ENC 109 #define DLT_ENC 109
#endif #endif
/* /*
@ -275,22 +275,22 @@ struct bpf_version {
/* /*
* This is for Linux cooked sockets. * This is for Linux cooked sockets.
*/ */
#define DLT_LINUX_SLL 113 #define DLT_LINUX_SLL 113
/* /*
* Apple LocalTalk hardware. * Apple LocalTalk hardware.
*/ */
#define DLT_LTALK 114 #define DLT_LTALK 114
/* /*
* Acorn Econet. * Acorn Econet.
*/ */
#define DLT_ECONET 115 #define DLT_ECONET 115
/* /*
* Reserved for use with OpenBSD ipfilter. * Reserved for use with OpenBSD ipfilter.
*/ */
#define DLT_IPFILTER 116 #define DLT_IPFILTER 116
/* /*
* OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD, but that's DLT_LANE8023 * OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD, but that's DLT_LANE8023
@ -299,33 +299,33 @@ struct bpf_version {
* XXX: is there a conflict with DLT_PFSYNC 18 as well? * XXX: is there a conflict with DLT_PFSYNC 18 as well?
*/ */
#ifdef __OpenBSD__ #ifdef __OpenBSD__
#define DLT_OLD_PFLOG 17 #define DLT_OLD_PFLOG 17
#define DLT_PFSYNC 18 #define DLT_PFSYNC 18
#endif #endif
#define DLT_PFLOG 117 #define DLT_PFLOG 117
/* /*
* Registered for Cisco-internal use. * Registered for Cisco-internal use.
*/ */
#define DLT_CISCO_IOS 118 #define DLT_CISCO_IOS 118
/* /*
* For 802.11 cards using the Prism II chips, with a link-layer * For 802.11 cards using the Prism II chips, with a link-layer
* header including Prism monitor mode information plus an 802.11 * header including Prism monitor mode information plus an 802.11
* header. * header.
*/ */
#define DLT_PRISM_HEADER 119 #define DLT_PRISM_HEADER 119
/* /*
* Reserved for Aironet 802.11 cards, with an Aironet link-layer header * Reserved for Aironet 802.11 cards, with an Aironet link-layer header
* (see Doug Ambrisko's FreeBSD patches). * (see Doug Ambrisko's FreeBSD patches).
*/ */
#define DLT_AIRONET_HEADER 120 #define DLT_AIRONET_HEADER 120
/* /*
* Reserved for Siemens HiPath HDLC. * Reserved for Siemens HiPath HDLC.
*/ */
#define DLT_HHDLC 121 #define DLT_HHDLC 121
/* /*
* This is for RFC 2625 IP-over-Fibre Channel. * This is for RFC 2625 IP-over-Fibre Channel.
@ -335,7 +335,7 @@ struct bpf_version {
* where the link-layer header starts with an RFC 2625 Network_Header * where the link-layer header starts with an RFC 2625 Network_Header
* field. * field.
*/ */
#define DLT_IP_OVER_FC 122 #define DLT_IP_OVER_FC 122
/* /*
* This is for Full Frontal ATM on Solaris with SunATM, with a * This is for Full Frontal ATM on Solaris with SunATM, with a
@ -351,9 +351,9 @@ struct bpf_version {
* and the like don't have to infer the presence or absence of a * and the like don't have to infer the presence or absence of a
* pseudo-header and the form of the pseudo-header. * pseudo-header and the form of the pseudo-header.
*/ */
#define DLT_SUNATM 123 /* Solaris+SunATM */ #define DLT_SUNATM 123 /* Solaris+SunATM */
/* /*
* Reserved as per request from Kent Dahlgren <kent@praesum.com> * Reserved as per request from Kent Dahlgren <kent@praesum.com>
* for private use. * for private use.
*/ */
@ -366,7 +366,7 @@ struct bpf_version {
* including radio information, used by some recent BSD drivers as * including radio information, used by some recent BSD drivers as
* well as the madwifi Atheros driver for Linux. * well as the madwifi Atheros driver for Linux.
*/ */
#define DLT_IEEE802_11_RADIO 127 /* 802.11 plus radiotap radio header */ #define DLT_IEEE802_11_RADIO 127 /* 802.11 plus radiotap radio header */
/* /*
* Reserved for the TZSP encapsulation, as per request from * Reserved for the TZSP encapsulation, as per request from
@ -389,7 +389,7 @@ struct bpf_version {
* *
* We therefore have to have separate DLT_ values for them. * We therefore have to have separate DLT_ values for them.
*/ */
#define DLT_ARCNET_LINUX 129 /* ARCNET */ #define DLT_ARCNET_LINUX 129 /* ARCNET */
/* /*
* Juniper-private data link types, as per request from * Juniper-private data link types, as per request from
@ -411,31 +411,31 @@ struct bpf_version {
* <dieter@apple.com>. The header that's presented is an Ethernet-like * <dieter@apple.com>. The header that's presented is an Ethernet-like
* header: * header:
* *
* #define FIREWIRE_EUI64_LEN 8 * #define FIREWIRE_EUI64_LEN 8
* struct firewire_header { * struct firewire_header {
* u_char firewire_dhost[FIREWIRE_EUI64_LEN]; * u_char firewire_dhost[FIREWIRE_EUI64_LEN];
* u_char firewire_shost[FIREWIRE_EUI64_LEN]; * u_char firewire_shost[FIREWIRE_EUI64_LEN];
* u_short firewire_type; * u_short firewire_type;
* }; * };
* *
* with "firewire_type" being an Ethernet type value, rather than, * with "firewire_type" being an Ethernet type value, rather than,
* for example, raw GASP frames being handed up. * for example, raw GASP frames being handed up.
*/ */
#define DLT_APPLE_IP_OVER_IEEE1394 138 #define DLT_APPLE_IP_OVER_IEEE1394 138
/* /*
* Various SS7 encapsulations, as per a request from Jeff Morriss * Various SS7 encapsulations, as per a request from Jeff Morriss
* <jeff.morriss[AT]ulticom.com> and subsequent discussions. * <jeff.morriss[AT]ulticom.com> and subsequent discussions.
*/ */
#define DLT_MTP2_WITH_PHDR 139 /* pseudo-header with various info, followed by MTP2 */ #define DLT_MTP2_WITH_PHDR 139 /* pseudo-header with various info, followed by MTP2 */
#define DLT_MTP2 140 /* MTP2, without pseudo-header */ #define DLT_MTP2 140 /* MTP2, without pseudo-header */
#define DLT_MTP3 141 /* MTP3, without pseudo-header or MTP2 */ #define DLT_MTP3 141 /* MTP3, without pseudo-header or MTP2 */
#define DLT_SCCP 142 /* SCCP, without pseudo-header or MTP2 or MTP3 */ #define DLT_SCCP 142 /* SCCP, without pseudo-header or MTP2 or MTP3 */
/* /*
* DOCSIS MAC frames. * DOCSIS MAC frames.
*/ */
#define DLT_DOCSIS 143 #define DLT_DOCSIS 143
/* /*
* Linux-IrDA packets. Protocol defined at http://www.irda.org. * Linux-IrDA packets. Protocol defined at http://www.irda.org.
@ -452,13 +452,13 @@ struct bpf_version {
* issue and define a real DLT_IRDA... * issue and define a real DLT_IRDA...
* Jean II * Jean II
*/ */
#define DLT_LINUX_IRDA 144 #define DLT_LINUX_IRDA 144
/* /*
* Reserved for IBM SP switch and IBM Next Federation switch. * Reserved for IBM SP switch and IBM Next Federation switch.
*/ */
#define DLT_IBM_SP 145 #define DLT_IBM_SP 145
#define DLT_IBM_SN 146 #define DLT_IBM_SN 146
/* /*
* Reserved for private use. If you have some link-layer header type * Reserved for private use. If you have some link-layer header type
@ -485,34 +485,34 @@ struct bpf_version {
* Instead, ask "tcpdump-workers@lists.tcpdump.org" for a new DLT_ value, * Instead, ask "tcpdump-workers@lists.tcpdump.org" for a new DLT_ value,
* as per the comment above, and use the type you're given. * as per the comment above, and use the type you're given.
*/ */
#define DLT_USER0 147 #define DLT_USER0 147
#define DLT_USER1 148 #define DLT_USER1 148
#define DLT_USER2 149 #define DLT_USER2 149
#define DLT_USER3 150 #define DLT_USER3 150
#define DLT_USER4 151 #define DLT_USER4 151
#define DLT_USER5 152 #define DLT_USER5 152
#define DLT_USER6 153 #define DLT_USER6 153
#define DLT_USER7 154 #define DLT_USER7 154
#define DLT_USER8 155 #define DLT_USER8 155
#define DLT_USER9 156 #define DLT_USER9 156
#define DLT_USER10 157 #define DLT_USER10 157
#define DLT_USER11 158 #define DLT_USER11 158
#define DLT_USER12 159 #define DLT_USER12 159
#define DLT_USER13 160 #define DLT_USER13 160
#define DLT_USER14 161 #define DLT_USER14 161
#define DLT_USER15 162 #define DLT_USER15 162
/* /*
* For future use with 802.11 captures - defined by AbsoluteValue * For future use with 802.11 captures - defined by AbsoluteValue
* Systems to store a number of bits of link-layer information * Systems to store a number of bits of link-layer information
* including radio information: * including radio information:
* *
* http://www.shaftnet.org/~pizza/software/capturefrm.txt * http://www.shaftnet.org/~pizza/software/capturefrm.txt
* *
* but it might be used by some non-AVS drivers now or in the * but it might be used by some non-AVS drivers now or in the
* future. * future.
*/ */
#define DLT_IEEE802_11_RADIO_AVS 163 /* 802.11 plus AVS radio header */ #define DLT_IEEE802_11_RADIO_AVS 163 /* 802.11 plus AVS radio header */
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
@ -525,7 +525,7 @@ struct bpf_version {
/* /*
* Reserved for BACnet MS/TP. * Reserved for BACnet MS/TP.
*/ */
#define DLT_BACNET_MS_TP 165 #define DLT_BACNET_MS_TP 165
/* /*
* Another PPP variant as per request from Karsten Keil <kkeil@suse.de>. * Another PPP variant as per request from Karsten Keil <kkeil@suse.de>.
@ -541,14 +541,14 @@ struct bpf_version {
* The first byte of the PPP header (0xff03) is modified to accomodate * The first byte of the PPP header (0xff03) is modified to accomodate
* the direction - 0x00 = IN, 0x01 = OUT. * the direction - 0x00 = IN, 0x01 = OUT.
*/ */
#define DLT_PPP_PPPD 166 #define DLT_PPP_PPPD 166
/* /*
* Names for backwards compatibility with older versions of some PPP * Names for backwards compatibility with older versions of some PPP
* software; new software should use DLT_PPP_PPPD. * software; new software should use DLT_PPP_PPPD.
*/ */
#define DLT_PPP_WITH_DIRECTION DLT_PPP_PPPD #define DLT_PPP_WITH_DIRECTION DLT_PPP_PPPD
#define DLT_LINUX_PPP_WITHDIRECTION DLT_PPP_PPPD #define DLT_LINUX_PPP_WITHDIRECTION DLT_PPP_PPPD
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
@ -559,16 +559,16 @@ struct bpf_version {
#define DLT_JUNIPER_PPPOE 167 #define DLT_JUNIPER_PPPOE 167
#define DLT_JUNIPER_PPPOE_ATM 168 #define DLT_JUNIPER_PPPOE_ATM 168
#define DLT_GPRS_LLC 169 /* GPRS LLC */ #define DLT_GPRS_LLC 169 /* GPRS LLC */
#define DLT_GPF_T 170 /* GPF-T (ITU-T G.7041/Y.1303) */ #define DLT_GPF_T 170 /* GPF-T (ITU-T G.7041/Y.1303) */
#define DLT_GPF_F 171 /* GPF-F (ITU-T G.7041/Y.1303) */ #define DLT_GPF_F 171 /* GPF-F (ITU-T G.7041/Y.1303) */
/* /*
* Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line * Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line
* monitoring equipment. * monitoring equipment.
*/ */
#define DLT_GCOM_T1E1 172 #define DLT_GCOM_T1E1 172
#define DLT_GCOM_SERIAL 173 #define DLT_GCOM_SERIAL 173
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
@ -583,8 +583,8 @@ struct bpf_version {
* http://www.endace.com/support/EndaceRecordFormat.pdf) in front of * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of
* the link-layer header. * the link-layer header.
*/ */
#define DLT_ERF_ETH 175 /* Ethernet */ #define DLT_ERF_ETH 175 /* Ethernet */
#define DLT_ERF_POS 176 /* Packet-over-SONET */ #define DLT_ERF_POS 176 /* Packet-over-SONET */
/* /*
* Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD * Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD
@ -592,11 +592,11 @@ struct bpf_version {
* includes additional information before the LAPD header, so it's * includes additional information before the LAPD header, so it's
* not necessarily a generic LAPD header. * not necessarily a generic LAPD header.
*/ */
#define DLT_LINUX_LAPD 177 #define DLT_LINUX_LAPD 177
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
* Hannes Gredler <hannes@juniper.net>. * Hannes Gredler <hannes@juniper.net>.
* The DLT_ are used for prepending meta-information * The DLT_ are used for prepending meta-information
* like interface index, interface name * like interface index, interface name
* before standard Ethernet, PPP, Frelay & C-HDLC Frames * before standard Ethernet, PPP, Frelay & C-HDLC Frames
@ -613,7 +613,7 @@ struct bpf_version {
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
* Hannes Gredler <hannes@juniper.net>. * Hannes Gredler <hannes@juniper.net>.
* The DLT_ is used for internal communication with a * The DLT_ is used for internal communication with a
* voice Adapter Card (PIC) * voice Adapter Card (PIC)
*/ */
@ -639,25 +639,25 @@ struct bpf_version {
* USB packets, beginning with a USB setup header; requested by * USB packets, beginning with a USB setup header; requested by
* Paolo Abeni <paolo.abeni@email.it>. * Paolo Abeni <paolo.abeni@email.it>.
*/ */
#define DLT_USB 186 #define DLT_USB 186
/* /*
* Bluetooth HCI UART transport layer (part H:4); requested by * Bluetooth HCI UART transport layer (part H:4); requested by
* Paolo Abeni. * Paolo Abeni.
*/ */
#define DLT_BLUETOOTH_HCI_H4 187 #define DLT_BLUETOOTH_HCI_H4 187
/* /*
* IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz
* <cruz_petagay@bah.com>. * <cruz_petagay@bah.com>.
*/ */
#define DLT_IEEE802_16_MAC_CPS 188 #define DLT_IEEE802_16_MAC_CPS 188
/* /*
* USB packets, beginning with a Linux USB header; requested by * USB packets, beginning with a Linux USB header; requested by
* Paolo Abeni <paolo.abeni@email.it>. * Paolo Abeni <paolo.abeni@email.it>.
*/ */
#define DLT_USB_LINUX 189 #define DLT_USB_LINUX 189
/* /*
* Controller Area Network (CAN) v. 2.0B packets. * Controller Area Network (CAN) v. 2.0B packets.
@ -672,23 +672,23 @@ struct bpf_version {
* IEEE 802.15.4, with address fields padded, as is done by Linux * IEEE 802.15.4, with address fields padded, as is done by Linux
* drivers; requested by Juergen Schimmer. * drivers; requested by Juergen Schimmer.
*/ */
#define DLT_IEEE802_15_4_LINUX 191 #define DLT_IEEE802_15_4_LINUX 191
/* /*
* Per Packet Information encapsulated packets. * Per Packet Information encapsulated packets.
* DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>. * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
*/ */
#define DLT_PPI 192 #define DLT_PPI 192
/* /*
* Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header; * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header;
* requested by Charles Clancy. * requested by Charles Clancy.
*/ */
#define DLT_IEEE802_16_MAC_CPS_RADIO 193 #define DLT_IEEE802_16_MAC_CPS_RADIO 193
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
* Hannes Gredler <hannes@juniper.net>. * Hannes Gredler <hannes@juniper.net>.
* The DLT_ is used for internal communication with a * The DLT_ is used for internal communication with a
* integrated service module (ISM). * integrated service module (ISM).
*/ */
@ -698,38 +698,38 @@ struct bpf_version {
* IEEE 802.15.4, exactly as it appears in the spec (no padding, no * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
* nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>. * nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>.
*/ */
#define DLT_IEEE802_15_4 195 #define DLT_IEEE802_15_4 195
/* /*
* Various link-layer types, with a pseudo-header, for SITA * Various link-layer types, with a pseudo-header, for SITA
* (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com). * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com).
*/ */
#define DLT_SITA 196 #define DLT_SITA 196
/* /*
* Various link-layer types, with a pseudo-header, for Endace DAG cards; * Various link-layer types, with a pseudo-header, for Endace DAG cards;
* encapsulates Endace ERF records. Requested by Stephen Donnelly * encapsulates Endace ERF records. Requested by Stephen Donnelly
* <stephen@endace.com>. * <stephen@endace.com>.
*/ */
#define DLT_ERF 197 #define DLT_ERF 197
/* /*
* Special header prepended to Ethernet packets when capturing from a * Special header prepended to Ethernet packets when capturing from a
* u10 Networks board. Requested by Phil Mulholland * u10 Networks board. Requested by Phil Mulholland
* <phil@u10networks.com>. * <phil@u10networks.com>.
*/ */
#define DLT_RAIF1 198 #define DLT_RAIF1 198
/* /*
* IPMB packet for IPMI, beginning with the I2C slave address, followed * IPMB packet for IPMI, beginning with the I2C slave address, followed
* by the netFn and LUN, etc.. Requested by Chanthy Toeung * by the netFn and LUN, etc.. Requested by Chanthy Toeung
* <chanthy.toeung@ca.kontron.com>. * <chanthy.toeung@ca.kontron.com>.
*/ */
#define DLT_IPMB 199 #define DLT_IPMB 199
/* /*
* Juniper-private data link type, as per request from * Juniper-private data link type, as per request from
* Hannes Gredler <hannes@juniper.net>. * Hannes Gredler <hannes@juniper.net>.
* The DLT_ is used for capturing data on a secure tunnel interface. * The DLT_ is used for capturing data on a secure tunnel interface.
*/ */
#define DLT_JUNIPER_ST 200 #define DLT_JUNIPER_ST 200
@ -738,23 +738,23 @@ struct bpf_version {
* Bluetooth HCI UART transport layer (part H:4), with pseudo-header * Bluetooth HCI UART transport layer (part H:4), with pseudo-header
* that includes direction information; requested by Paolo Abeni. * that includes direction information; requested by Paolo Abeni.
*/ */
#define DLT_BLUETOOTH_HCI_H4_WITH_PHDR 201 #define DLT_BLUETOOTH_HCI_H4_WITH_PHDR 201
/* /*
* AX.25 packet with a 1-byte KISS header; see * AX.25 packet with a 1-byte KISS header; see
* *
* http://www.ax25.net/kiss.htm * http://www.ax25.net/kiss.htm
* *
* as per Richard Stearn <richard@rns-stearn.demon.co.uk>. * as per Richard Stearn <richard@rns-stearn.demon.co.uk>.
*/ */
#define DLT_AX25_KISS 202 #define DLT_AX25_KISS 202
/* /*
* LAPD packets from an ISDN channel, starting with the address field, * LAPD packets from an ISDN channel, starting with the address field,
* with no pseudo-header. * with no pseudo-header.
* Requested by Varuna De Silva <varunax@gmail.com>. * Requested by Varuna De Silva <varunax@gmail.com>.
*/ */
#define DLT_LAPD 203 #define DLT_LAPD 203
/* /*
* Variants of various link-layer headers, with a one-byte direction * Variants of various link-layer headers, with a one-byte direction
@ -762,10 +762,10 @@ struct bpf_version {
* non-zero (any non-zero value) means "sent by this host" - as per * non-zero (any non-zero value) means "sent by this host" - as per
* Will Barker <w.barker@zen.co.uk>. * Will Barker <w.barker@zen.co.uk>.
*/ */
#define DLT_PPP_WITH_DIR 204 /* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */ #define DLT_PPP_WITH_DIR 204 /* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */
#define DLT_C_HDLC_WITH_DIR 205 /* Cisco HDLC */ #define DLT_C_HDLC_WITH_DIR 205 /* Cisco HDLC */
#define DLT_FRELAY_WITH_DIR 206 /* Frame Relay */ #define DLT_FRELAY_WITH_DIR 206 /* Frame Relay */
#define DLT_LAPB_WITH_DIR 207 /* LAPB */ #define DLT_LAPB_WITH_DIR 207 /* LAPB */
/* /*
* 208 is reserved for an as-yet-unspecified proprietary link-layer * 208 is reserved for an as-yet-unspecified proprietary link-layer
@ -776,39 +776,39 @@ struct bpf_version {
* IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman
* <avn@pigeonpoint.com>. * <avn@pigeonpoint.com>.
*/ */
#define DLT_IPMB_LINUX 209 #define DLT_IPMB_LINUX 209
/* /*
* FlexRay automotive bus - http://www.flexray.com/ - as requested * FlexRay automotive bus - http://www.flexray.com/ - as requested
* by Hannes Kaelber <hannes.kaelber@x2e.de>. * by Hannes Kaelber <hannes.kaelber@x2e.de>.
*/ */
#define DLT_FLEXRAY 210 #define DLT_FLEXRAY 210
/* /*
* Media Oriented Systems Transport (MOST) bus for multimedia * Media Oriented Systems Transport (MOST) bus for multimedia
* transport - http://www.mostcooperation.com/ - as requested * transport - http://www.mostcooperation.com/ - as requested
* by Hannes Kaelber <hannes.kaelber@x2e.de>. * by Hannes Kaelber <hannes.kaelber@x2e.de>.
*/ */
#define DLT_MOST 211 #define DLT_MOST 211
/* /*
* Local Interconnect Network (LIN) bus for vehicle networks - * Local Interconnect Network (LIN) bus for vehicle networks -
* http://www.lin-subbus.org/ - as requested by Hannes Kaelber * http://www.lin-subbus.org/ - as requested by Hannes Kaelber
* <hannes.kaelber@x2e.de>. * <hannes.kaelber@x2e.de>.
*/ */
#define DLT_LIN 212 #define DLT_LIN 212
/* /*
* X2E-private data link type used for serial line capture, * X2E-private data link type used for serial line capture,
* as requested by Hannes Kaelber <hannes.kaelber@x2e.de>. * as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
*/ */
#define DLT_X2E_SERIAL 213 #define DLT_X2E_SERIAL 213
/* /*
* X2E-private data link type used for the Xoraya data logger * X2E-private data link type used for the Xoraya data logger
* family, as requested by Hannes Kaelber <hannes.kaelber@x2e.de>. * family, as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
*/ */
#define DLT_X2E_XORAYA 214 #define DLT_X2E_XORAYA 214
/* /*
* IEEE 802.15.4, exactly as it appears in the spec (no padding, no * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
@ -819,7 +819,7 @@ struct bpf_version {
* *
* Requested by Max Filippov <jcmvbkbc@gmail.com>. * Requested by Max Filippov <jcmvbkbc@gmail.com>.
*/ */
#define DLT_IEEE802_15_4_NONASK_PHY 215 #define DLT_IEEE802_15_4_NONASK_PHY 215
/* /*
@ -827,7 +827,7 @@ struct bpf_version {
* a member of that class. A class value of 0 indicates a regular * a member of that class. A class value of 0 indicates a regular
* DLT_/LINKTYPE_ value. * DLT_/LINKTYPE_ value.
*/ */
#define DLT_CLASS(x) ((x) & 0x03ff0000) #define DLT_CLASS(x) ((x) & 0x03ff0000)
/* /*
* NetBSD-specific generic "raw" link type. The class value indicates * NetBSD-specific generic "raw" link type. The class value indicates
@ -836,10 +836,10 @@ struct bpf_version {
* do not assume that they correspond to AF_ values for your operating * do not assume that they correspond to AF_ values for your operating
* system. * system.
*/ */
#define DLT_CLASS_NETBSD_RAWAF 0x02240000 #define DLT_CLASS_NETBSD_RAWAF 0x02240000
#define DLT_NETBSD_RAWAF(af) (DLT_CLASS_NETBSD_RAWAF | (af)) #define DLT_NETBSD_RAWAF(af) (DLT_CLASS_NETBSD_RAWAF | (af))
#define DLT_NETBSD_RAWAF_AF(x) ((x) & 0x0000ffff) #define DLT_NETBSD_RAWAF_AF(x) ((x) & 0x0000ffff)
#define DLT_IS_NETBSD_RAWAF(x) (DLT_CLASS(x) == DLT_CLASS_NETBSD_RAWAF) #define DLT_IS_NETBSD_RAWAF(x) (DLT_CLASS(x) == DLT_CLASS_NETBSD_RAWAF)
/* /*
@ -847,65 +847,65 @@ struct bpf_version {
*/ */
/* instruction classes */ /* instruction classes */
#define BPF_CLASS(code) ((code) & 0x07) #define BPF_CLASS(code) ((code) & 0x07)
#define BPF_LD 0x00 #define BPF_LD 0x00
#define BPF_LDX 0x01 #define BPF_LDX 0x01
#define BPF_ST 0x02 #define BPF_ST 0x02
#define BPF_STX 0x03 #define BPF_STX 0x03
#define BPF_ALU 0x04 #define BPF_ALU 0x04
#define BPF_JMP 0x05 #define BPF_JMP 0x05
#define BPF_RET 0x06 #define BPF_RET 0x06
#define BPF_MISC 0x07 #define BPF_MISC 0x07
/* ld/ldx fields */ /* ld/ldx fields */
#define BPF_SIZE(code) ((code) & 0x18) #define BPF_SIZE(code) ((code) & 0x18)
#define BPF_W 0x00 #define BPF_W 0x00
#define BPF_H 0x08 #define BPF_H 0x08
#define BPF_B 0x10 #define BPF_B 0x10
#define BPF_MODE(code) ((code) & 0xe0) #define BPF_MODE(code) ((code) & 0xe0)
#define BPF_IMM 0x00 #define BPF_IMM 0x00
#define BPF_ABS 0x20 #define BPF_ABS 0x20
#define BPF_IND 0x40 #define BPF_IND 0x40
#define BPF_MEM 0x60 #define BPF_MEM 0x60
#define BPF_LEN 0x80 #define BPF_LEN 0x80
#define BPF_MSH 0xa0 #define BPF_MSH 0xa0
/* alu/jmp fields */ /* alu/jmp fields */
#define BPF_OP(code) ((code) & 0xf0) #define BPF_OP(code) ((code) & 0xf0)
#define BPF_ADD 0x00 #define BPF_ADD 0x00
#define BPF_SUB 0x10 #define BPF_SUB 0x10
#define BPF_MUL 0x20 #define BPF_MUL 0x20
#define BPF_DIV 0x30 #define BPF_DIV 0x30
#define BPF_OR 0x40 #define BPF_OR 0x40
#define BPF_AND 0x50 #define BPF_AND 0x50
#define BPF_LSH 0x60 #define BPF_LSH 0x60
#define BPF_RSH 0x70 #define BPF_RSH 0x70
#define BPF_NEG 0x80 #define BPF_NEG 0x80
#define BPF_JA 0x00 #define BPF_JA 0x00
#define BPF_JEQ 0x10 #define BPF_JEQ 0x10
#define BPF_JGT 0x20 #define BPF_JGT 0x20
#define BPF_JGE 0x30 #define BPF_JGE 0x30
#define BPF_JSET 0x40 #define BPF_JSET 0x40
#define BPF_SRC(code) ((code) & 0x08) #define BPF_SRC(code) ((code) & 0x08)
#define BPF_K 0x00 #define BPF_K 0x00
#define BPF_X 0x08 #define BPF_X 0x08
/* ret - BPF_K and BPF_X also apply */ /* ret - BPF_K and BPF_X also apply */
#define BPF_RVAL(code) ((code) & 0x18) #define BPF_RVAL(code) ((code) & 0x18)
#define BPF_A 0x10 #define BPF_A 0x10
/* misc */ /* misc */
#define BPF_MISCOP(code) ((code) & 0xf8) #define BPF_MISCOP(code) ((code) & 0xf8)
#define BPF_TAX 0x00 #define BPF_TAX 0x00
#define BPF_TXA 0x80 #define BPF_TXA 0x80
/* /*
* The instruction data structure. * The instruction data structure.
*/ */
struct bpf_insn { struct bpf_insn {
u_short code; u_short code;
u_char jt; u_char jt;
u_char jf; u_char jf;
bpf_u_int32 k; bpf_u_int32 k;
}; };
/* /*

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 1994, 1996 * Copyright (c) 1994, 1996
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -12,8 +12,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the Computer Systems * This product includes software developed by the Computer Systems
* Engineering Group at Lawrence Berkeley Laboratory. * Engineering Group at Lawrence Berkeley Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used * 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without * to endorse or promote products derived from this software without
* specific prior written permission. * specific prior written permission.
@ -48,13 +48,13 @@ extern "C" {
* export these hooks since they'll * export these hooks since they'll
*/ */
struct pcap_etherent { struct pcap_etherent {
u_char addr[6]; u_char addr[6];
char name[122]; char name[122];
}; };
#ifndef PCAP_ETHERS_FILE #ifndef PCAP_ETHERS_FILE
#define PCAP_ETHERS_FILE "/etc/ethers" #define PCAP_ETHERS_FILE "/etc/ethers"
#endif #endif
struct pcap_etherent *pcap_next_etherent(FILE *); struct pcap_etherent *pcap_next_etherent(FILE *);
u_char *pcap_ether_hostton(const char*); u_char *pcap_ether_hostton(const char*);
u_char *pcap_ether_aton(const char *); u_char *pcap_ether_aton(const char *);
@ -64,23 +64,23 @@ struct addrinfo *pcap_nametoaddrinfo(const char *);
#endif #endif
bpf_u_int32 pcap_nametonetaddr(const char *); bpf_u_int32 pcap_nametonetaddr(const char *);
int pcap_nametoport(const char *, int *, int *); int pcap_nametoport(const char *, int *, int *);
int pcap_nametoportrange(const char *, int *, int *, int *); int pcap_nametoportrange(const char *, int *, int *, int *);
int pcap_nametoproto(const char *); int pcap_nametoproto(const char *);
int pcap_nametoeproto(const char *); int pcap_nametoeproto(const char *);
int pcap_nametollc(const char *); int pcap_nametollc(const char *);
/* /*
* If a protocol is unknown, PROTO_UNDEF is returned. * If a protocol is unknown, PROTO_UNDEF is returned.
* Also, pcap_nametoport() returns the protocol along with the port number. * Also, pcap_nametoport() returns the protocol along with the port number.
* If there are ambiguous entried in /etc/services (i.e. domain * If there are ambiguous entried in /etc/services (i.e. domain
* can be either tcp or udp) PROTO_UNDEF is returned. * can be either tcp or udp) PROTO_UNDEF is returned.
*/ */
#define PROTO_UNDEF -1 #define PROTO_UNDEF -1
/* XXX move these to pcap-int.h? */ /* XXX move these to pcap-int.h? */
int __pcap_atodn(const char *, bpf_u_int32 *); int __pcap_atodn(const char *, bpf_u_int32 *);
int __pcap_atoin(const char *, bpf_u_int32 *); int __pcap_atoin(const char *, bpf_u_int32 *);
u_short __pcap_nametodnaddr(const char *); u_short __pcap_nametodnaddr(const char *);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,7 +1,7 @@
/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */ /* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
/* /*
* Copyright (c) 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -13,8 +13,8 @@
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by the Computer Systems * This product includes software developed by the Computer Systems
* Engineering Group at Lawrence Berkeley Laboratory. * Engineering Group at Lawrence Berkeley Laboratory.
* 4. Neither the name of the University nor of the Laboratory may be used * 4. Neither the name of the University nor of the Laboratory may be used
* to endorse or promote products derived from this software without * to endorse or promote products derived from this software without
* specific prior written permission. * specific prior written permission.
@ -54,16 +54,16 @@
#include <stdio.h> #include <stdio.h>
#ifdef HAVE_REMOTE #ifdef HAVE_REMOTE
// We have to define the SOCKET here, although it has been defined in sockutils.h // We have to define the SOCKET here, although it has been defined in sockutils.h
// This is to avoid the distribution of the 'sockutils.h' file around // This is to avoid the distribution of the 'sockutils.h' file around
// (for example in the WinPcap developer's pack) // (for example in the WinPcap developer's pack)
#ifndef SOCKET #ifndef SOCKET
#ifdef WIN32 #ifdef WIN32
#define SOCKET unsigned int #define SOCKET unsigned int
#else #else
#define SOCKET int #define SOCKET int
#endif #endif
#endif #endif
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
@ -80,8 +80,8 @@ extern "C" {
* predates the bpf typedefs for 64-bit support. * predates the bpf typedefs for 64-bit support.
*/ */
#if BPF_RELEASE - 0 < 199406 #if BPF_RELEASE - 0 < 199406
typedef int bpf_int32; typedef int bpf_int32;
typedef u_int bpf_u_int32; typedef u_int bpf_u_int32;
#endif #endif
typedef struct pcap pcap_t; typedef struct pcap pcap_t;
@ -105,46 +105,46 @@ typedef struct pcap_addr pcap_addr_t;
* *
* Instead: * Instead:
* *
* introduce a new structure for the new format, if the layout * introduce a new structure for the new format, if the layout
* of the structure changed; * of the structure changed;
* *
* send mail to "tcpdump-workers@lists.tcpdump.org", requesting * send mail to "tcpdump-workers@lists.tcpdump.org", requesting
* a new magic number for your new capture file format, and, when * a new magic number for your new capture file format, and, when
* you get the new magic number, put it in "savefile.c"; * you get the new magic number, put it in "savefile.c";
* *
* use that magic number for save files with the changed file * use that magic number for save files with the changed file
* header; * header;
* *
* make the code in "savefile.c" capable of reading files with * make the code in "savefile.c" capable of reading files with
* the old file header as well as files with the new file header * the old file header as well as files with the new file header
* (using the magic number to determine the header format). * (using the magic number to determine the header format).
* *
* Then supply the changes as a patch at * Then supply the changes as a patch at
* *
* http://sourceforge.net/projects/libpcap/ * http://sourceforge.net/projects/libpcap/
* *
* so that future versions of libpcap and programs that use it (such as * so that future versions of libpcap and programs that use it (such as
* tcpdump) will be able to read your new capture file format. * tcpdump) will be able to read your new capture file format.
*/ */
struct pcap_file_header { struct pcap_file_header {
bpf_u_int32 magic; bpf_u_int32 magic;
u_short version_major; u_short version_major;
u_short version_minor; u_short version_minor;
bpf_int32 thiszone; /* gmt to local correction */ bpf_int32 thiszone; /* gmt to local correction */
bpf_u_int32 sigfigs; /* accuracy of timestamps */ bpf_u_int32 sigfigs; /* accuracy of timestamps */
bpf_u_int32 snaplen; /* max length saved portion of each pkt */ bpf_u_int32 snaplen; /* max length saved portion of each pkt */
bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */ bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
}; };
/* /*
* Macros for the value returned by pcap_datalink_ext(). * Macros for the value returned by pcap_datalink_ext().
* *
* If LT_FCS_LENGTH_PRESENT(x) is true, the LT_FCS_LENGTH(x) macro * If LT_FCS_LENGTH_PRESENT(x) is true, the LT_FCS_LENGTH(x) macro
* gives the FCS length of packets in the capture. * gives the FCS length of packets in the capture.
*/ */
#define LT_FCS_LENGTH_PRESENT(x) ((x) & 0x04000000) #define LT_FCS_LENGTH_PRESENT(x) ((x) & 0x04000000)
#define LT_FCS_LENGTH(x) (((x) & 0xF0000000) >> 28) #define LT_FCS_LENGTH(x) (((x) & 0xF0000000) >> 28)
#define LT_FCS_DATALINK_EXT(x) ((((x) & 0xF) << 28) | 0x04000000) #define LT_FCS_DATALINK_EXT(x) ((((x) & 0xF) << 28) | 0x04000000)
typedef enum { typedef enum {
PCAP_D_INOUT = 0, PCAP_D_INOUT = 0,
@ -165,22 +165,22 @@ typedef enum {
* that's not what the underlying packet capture mechanism supplies. * that's not what the underlying packet capture mechanism supplies.
*/ */
struct pcap_pkthdr { struct pcap_pkthdr {
struct timeval ts; /* time stamp */ struct timeval ts; /* time stamp */
bpf_u_int32 caplen; /* length of portion present */ bpf_u_int32 caplen; /* length of portion present */
bpf_u_int32 len; /* length this packet (off wire) */ bpf_u_int32 len; /* length this packet (off wire) */
}; };
/* /*
* As returned by the pcap_stats() * As returned by the pcap_stats()
*/ */
struct pcap_stat { struct pcap_stat {
u_int ps_recv; /* number of packets received */ u_int ps_recv; /* number of packets received */
u_int ps_drop; /* number of packets dropped */ u_int ps_drop; /* number of packets dropped */
u_int ps_ifdrop; /* drops by interface XXX not yet supported */ u_int ps_ifdrop; /* drops by interface XXX not yet supported */
#ifdef HAVE_REMOTE #ifdef HAVE_REMOTE
u_int ps_capt; /* number of packets that are received by the application; please get rid off the Win32 ifdef */ u_int ps_capt; /* number of packets that are received by the application; please get rid off the Win32 ifdef */
u_int ps_sent; /* number of packets sent by the server on the network */ u_int ps_sent; /* number of packets sent by the server on the network */
u_int ps_netdrop; /* number of packets lost on the network */ u_int ps_netdrop; /* number of packets lost on the network */
#endif /* HAVE_REMOTE */ #endif /* HAVE_REMOTE */
}; };
@ -221,28 +221,28 @@ struct pcap_stat_ex {
* Item in a list of interfaces. * Item in a list of interfaces.
*/ */
struct pcap_if { struct pcap_if {
struct pcap_if *next; struct pcap_if *next;
char *name; /* name to hand to "pcap_open_live()" */ char *name; /* name to hand to "pcap_open_live()" */
char *description; /* textual description of interface, or NULL */ char *description; /* textual description of interface, or NULL */
struct pcap_addr *addresses; struct pcap_addr *addresses;
bpf_u_int32 flags; /* PCAP_IF_ interface flags */ bpf_u_int32 flags; /* PCAP_IF_ interface flags */
}; };
#define PCAP_IF_LOOPBACK 0x00000001 /* interface is loopback */ #define PCAP_IF_LOOPBACK 0x00000001 /* interface is loopback */
/* /*
* Representation of an interface address. * Representation of an interface address.
*/ */
struct pcap_addr { struct pcap_addr {
struct pcap_addr *next; struct pcap_addr *next;
struct sockaddr *addr; /* address */ struct sockaddr *addr; /* address */
struct sockaddr *netmask; /* netmask for that address */ struct sockaddr *netmask; /* netmask for that address */
struct sockaddr *broadaddr; /* broadcast address for that address */ struct sockaddr *broadaddr; /* broadcast address for that address */
struct sockaddr *dstaddr; /* P2P destination address for that address */ struct sockaddr *dstaddr; /* P2P destination address for that address */
}; };
typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *, typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
const u_char *); const u_char *);
/* /*
* Error codes for the pcap API. * Error codes for the pcap API.
@ -250,111 +250,111 @@ typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
* failure of a call that returns these codes by checking for a * failure of a call that returns these codes by checking for a
* negative value. * negative value.
*/ */
#define PCAP_ERROR -1 /* generic error code */ #define PCAP_ERROR -1 /* generic error code */
#define PCAP_ERROR_BREAK -2 /* loop terminated by pcap_breakloop */ #define PCAP_ERROR_BREAK -2 /* loop terminated by pcap_breakloop */
#define PCAP_ERROR_NOT_ACTIVATED -3 /* the capture needs to be activated */ #define PCAP_ERROR_NOT_ACTIVATED -3 /* the capture needs to be activated */
#define PCAP_ERROR_ACTIVATED -4 /* the operation can't be performed on already activated captures */ #define PCAP_ERROR_ACTIVATED -4 /* the operation can't be performed on already activated captures */
#define PCAP_ERROR_NO_SUCH_DEVICE -5 /* no such device exists */ #define PCAP_ERROR_NO_SUCH_DEVICE -5 /* no such device exists */
#define PCAP_ERROR_RFMON_NOTSUP -6 /* this device doesn't support rfmon (monitor) mode */ #define PCAP_ERROR_RFMON_NOTSUP -6 /* this device doesn't support rfmon (monitor) mode */
#define PCAP_ERROR_NOT_RFMON -7 /* operation supported only in monitor mode */ #define PCAP_ERROR_NOT_RFMON -7 /* operation supported only in monitor mode */
#define PCAP_ERROR_PERM_DENIED -8 /* no permission to open the device */ #define PCAP_ERROR_PERM_DENIED -8 /* no permission to open the device */
#define PCAP_ERROR_IFACE_NOT_UP -9 /* interface isn't up */ #define PCAP_ERROR_IFACE_NOT_UP -9 /* interface isn't up */
/* /*
* Warning codes for the pcap API. * Warning codes for the pcap API.
* These will all be positive and non-zero, so they won't look like * These will all be positive and non-zero, so they won't look like
* errors. * errors.
*/ */
#define PCAP_WARNING 1 /* generic warning code */ #define PCAP_WARNING 1 /* generic warning code */
#define PCAP_WARNING_PROMISC_NOTSUP 2 /* this device doesn't support promiscuous mode */ #define PCAP_WARNING_PROMISC_NOTSUP 2 /* this device doesn't support promiscuous mode */
char *pcap_lookupdev(char *); char *pcap_lookupdev(char *);
int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *); int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);
pcap_t *pcap_create(const char *, char *); pcap_t *pcap_create(const char *, char *);
int pcap_set_snaplen(pcap_t *, int); int pcap_set_snaplen(pcap_t *, int);
int pcap_set_promisc(pcap_t *, int); int pcap_set_promisc(pcap_t *, int);
int pcap_can_set_rfmon(pcap_t *); int pcap_can_set_rfmon(pcap_t *);
int pcap_set_rfmon(pcap_t *, int); int pcap_set_rfmon(pcap_t *, int);
int pcap_set_timeout(pcap_t *, int); int pcap_set_timeout(pcap_t *, int);
int pcap_set_buffer_size(pcap_t *, int); int pcap_set_buffer_size(pcap_t *, int);
int pcap_activate(pcap_t *); int pcap_activate(pcap_t *);
pcap_t *pcap_open_live(const char *, int, int, int, char *); pcap_t *pcap_open_live(const char *, int, int, int, char *);
pcap_t *pcap_open_dead(int, int); pcap_t *pcap_open_dead(int, int);
pcap_t *pcap_open_offline(const char *, char *); pcap_t *pcap_open_offline(const char *, char *);
#if defined(WIN32) #if defined(WIN32)
pcap_t *pcap_hopen_offline(intptr_t, char *); pcap_t *pcap_hopen_offline(intptr_t, char *);
#if !defined(LIBPCAP_EXPORTS) #if !defined(LIBPCAP_EXPORTS)
#define pcap_fopen_offline(f,b) \ #define pcap_fopen_offline(f,b) \
pcap_hopen_offline(_get_osfhandle(_fileno(f)), b) pcap_hopen_offline(_get_osfhandle(_fileno(f)), b)
#else /*LIBPCAP_EXPORTS*/ #else /*LIBPCAP_EXPORTS*/
static pcap_t *pcap_fopen_offline(FILE *, char *); static pcap_t *pcap_fopen_offline(FILE *, char *);
#endif #endif
#else /*WIN32*/ #else /*WIN32*/
pcap_t *pcap_fopen_offline(FILE *, char *); pcap_t *pcap_fopen_offline(FILE *, char *);
#endif /*WIN32*/ #endif /*WIN32*/
void pcap_close(pcap_t *); void pcap_close(pcap_t *);
int pcap_loop(pcap_t *, int, pcap_handler, u_char *); int pcap_loop(pcap_t *, int, pcap_handler, u_char *);
int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *); int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
const u_char* const u_char*
pcap_next(pcap_t *, struct pcap_pkthdr *); pcap_next(pcap_t *, struct pcap_pkthdr *);
int pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **); int pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
void pcap_breakloop(pcap_t *); void pcap_breakloop(pcap_t *);
int pcap_stats(pcap_t *, struct pcap_stat *); int pcap_stats(pcap_t *, struct pcap_stat *);
int pcap_setfilter(pcap_t *, struct bpf_program *); int pcap_setfilter(pcap_t *, struct bpf_program *);
int pcap_setdirection(pcap_t *, pcap_direction_t); int pcap_setdirection(pcap_t *, pcap_direction_t);
int pcap_getnonblock(pcap_t *, char *); int pcap_getnonblock(pcap_t *, char *);
int pcap_setnonblock(pcap_t *, int, char *); int pcap_setnonblock(pcap_t *, int, char *);
int pcap_inject(pcap_t *, const void *, size_t); int pcap_inject(pcap_t *, const void *, size_t);
int pcap_sendpacket(pcap_t *, const u_char *, int); int pcap_sendpacket(pcap_t *, const u_char *, int);
const char *pcap_statustostr(int); const char *pcap_statustostr(int);
const char *pcap_strerror(int); const char *pcap_strerror(int);
char *pcap_geterr(pcap_t *); char *pcap_geterr(pcap_t *);
void pcap_perror(pcap_t *, char *); void pcap_perror(pcap_t *, char *);
int pcap_compile(pcap_t *, struct bpf_program *, const char *, int, int pcap_compile(pcap_t *, struct bpf_program *, const char *, int,
bpf_u_int32); bpf_u_int32);
int pcap_compile_nopcap(int, int, struct bpf_program *, int pcap_compile_nopcap(int, int, struct bpf_program *,
const char *, int, bpf_u_int32); const char *, int, bpf_u_int32);
void pcap_freecode(struct bpf_program *); void pcap_freecode(struct bpf_program *);
int pcap_offline_filter(struct bpf_program *, const struct pcap_pkthdr *, int pcap_offline_filter(struct bpf_program *, const struct pcap_pkthdr *,
const u_char *); const u_char *);
int pcap_datalink(pcap_t *); int pcap_datalink(pcap_t *);
int pcap_datalink_ext(pcap_t *); int pcap_datalink_ext(pcap_t *);
int pcap_list_datalinks(pcap_t *, int **); int pcap_list_datalinks(pcap_t *, int **);
int pcap_set_datalink(pcap_t *, int); int pcap_set_datalink(pcap_t *, int);
void pcap_free_datalinks(int *); void pcap_free_datalinks(int *);
int pcap_datalink_name_to_val(const char *); int pcap_datalink_name_to_val(const char *);
const char *pcap_datalink_val_to_name(int); const char *pcap_datalink_val_to_name(int);
const char *pcap_datalink_val_to_description(int); const char *pcap_datalink_val_to_description(int);
int pcap_snapshot(pcap_t *); int pcap_snapshot(pcap_t *);
int pcap_is_swapped(pcap_t *); int pcap_is_swapped(pcap_t *);
int pcap_major_version(pcap_t *); int pcap_major_version(pcap_t *);
int pcap_minor_version(pcap_t *); int pcap_minor_version(pcap_t *);
/* XXX */ /* XXX */
FILE *pcap_file(pcap_t *); FILE *pcap_file(pcap_t *);
int pcap_fileno(pcap_t *); int pcap_fileno(pcap_t *);
pcap_dumper_t *pcap_dump_open(pcap_t *, const char *); pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);
pcap_dumper_t *pcap_dump_fopen(pcap_t *, FILE *fp); pcap_dumper_t *pcap_dump_fopen(pcap_t *, FILE *fp);
FILE *pcap_dump_file(pcap_dumper_t *); FILE *pcap_dump_file(pcap_dumper_t *);
long pcap_dump_ftell(pcap_dumper_t *); long pcap_dump_ftell(pcap_dumper_t *);
int pcap_dump_flush(pcap_dumper_t *); int pcap_dump_flush(pcap_dumper_t *);
void pcap_dump_close(pcap_dumper_t *); void pcap_dump_close(pcap_dumper_t *);
void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *); void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);
int pcap_findalldevs(pcap_if_t **, char *); int pcap_findalldevs(pcap_if_t **, char *);
void pcap_freealldevs(pcap_if_t *); void pcap_freealldevs(pcap_if_t *);
const char *pcap_lib_version(void); const char *pcap_lib_version(void);
/* XXX this guy lives in the bpf tree */ /* XXX this guy lives in the bpf tree */
u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int); u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
int bpf_validate(const struct bpf_insn *f, int len); int bpf_validate(const struct bpf_insn *f, int len);
char *bpf_image(const struct bpf_insn *, int); char *bpf_image(const struct bpf_insn *, int);
void bpf_dump(const struct bpf_program *, int); void bpf_dump(const struct bpf_program *, int);
#if defined(WIN32) #if defined(WIN32)
@ -391,14 +391,14 @@ u_long pcap_mac_packets (void);
* UN*X definitions * UN*X definitions
*/ */
int pcap_get_selectable_fd(pcap_t *); int pcap_get_selectable_fd(pcap_t *);
#endif /* WIN32/MSDOS/UN*X */ #endif /* WIN32/MSDOS/UN*X */
#ifdef HAVE_REMOTE #ifdef HAVE_REMOTE
/* Includes most of the public stuff that is needed for the remote capture */ /* Includes most of the public stuff that is needed for the remote capture */
#include <remote-ext.h> #include <remote-ext.h>
#endif /* HAVE_REMOTE */ #endif /* HAVE_REMOTE */
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,6 +1,6 @@
/*- /*-
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* This code is derived from the Stanford/CMU enet packet filter, * This code is derived from the Stanford/CMU enet packet filter,
* (net/enet.c) distributed as part of 4.3BSD, and code contributed * (net/enet.c) distributed as part of 4.3BSD, and code contributed
@ -42,22 +42,22 @@
* For captures on Linux cooked sockets, we construct a fake header * For captures on Linux cooked sockets, we construct a fake header
* that includes: * that includes:
* *
* a 2-byte "packet type" which is one of: * a 2-byte "packet type" which is one of:
* *
* LINUX_SLL_HOST packet was sent to us * LINUX_SLL_HOST packet was sent to us
* LINUX_SLL_BROADCAST packet was broadcast * LINUX_SLL_BROADCAST packet was broadcast
* LINUX_SLL_MULTICAST packet was multicast * LINUX_SLL_MULTICAST packet was multicast
* LINUX_SLL_OTHERHOST packet was sent to somebody else * LINUX_SLL_OTHERHOST packet was sent to somebody else
* LINUX_SLL_OUTGOING packet was sent *by* us; * LINUX_SLL_OUTGOING packet was sent *by* us;
* *
* a 2-byte Ethernet protocol field; * a 2-byte Ethernet protocol field;
* *
* a 2-byte link-layer type; * a 2-byte link-layer type;
* *
* a 2-byte link-layer address length; * a 2-byte link-layer address length;
* *
* an 8-byte source link-layer address, whose actual length is * an 8-byte source link-layer address, whose actual length is
* specified by the previous value. * specified by the previous value.
* *
* All fields except for the link-layer address are in network byte order. * All fields except for the link-layer address are in network byte order.
* *
@ -79,15 +79,15 @@
/* /*
* A DLT_LINUX_SLL fake link-layer header. * A DLT_LINUX_SLL fake link-layer header.
*/ */
#define SLL_HDR_LEN 16 /* total header length */ #define SLL_HDR_LEN 16 /* total header length */
#define SLL_ADDRLEN 8 /* length of address field */ #define SLL_ADDRLEN 8 /* length of address field */
struct sll_header { struct sll_header {
u_int16_t sll_pkttype; /* packet type */ u_int16_t sll_pkttype; /* packet type */
u_int16_t sll_hatype; /* link-layer address type */ u_int16_t sll_hatype; /* link-layer address type */
u_int16_t sll_halen; /* link-layer address length */ u_int16_t sll_halen; /* link-layer address length */
u_int8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */ u_int8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */
u_int16_t sll_protocol; /* protocol */ u_int16_t sll_protocol; /* protocol */
}; };
/* /*
@ -96,11 +96,11 @@ struct sll_header {
* available even on systems other than Linux, and so that they * available even on systems other than Linux, and so that they
* don't change even if the PACKET_ values change. * don't change even if the PACKET_ values change.
*/ */
#define LINUX_SLL_HOST 0 #define LINUX_SLL_HOST 0
#define LINUX_SLL_BROADCAST 1 #define LINUX_SLL_BROADCAST 1
#define LINUX_SLL_MULTICAST 2 #define LINUX_SLL_MULTICAST 2
#define LINUX_SLL_OTHERHOST 3 #define LINUX_SLL_OTHERHOST 3
#define LINUX_SLL_OUTGOING 4 #define LINUX_SLL_OUTGOING 4
/* /*
* The LINUX_SLL_ values for "sll_protocol"; these correspond to the * The LINUX_SLL_ values for "sll_protocol"; these correspond to the
@ -108,22 +108,22 @@ struct sll_header {
* available even on systems other than Linux. We assume, for now, * 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: * 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 * if we don't translate them in "pcap-linux.c", capture files
* won't necessarily be readable if captured on a system that * won't necessarily be readable if captured on a system that
* defines ETH_P_ values that don't match these values; * defines ETH_P_ values that don't match these values;
* *
* if we do translate them in "pcap-linux.c", that makes life * if we do translate them in "pcap-linux.c", that makes life
* unpleasant for the BPF code generator, as the values you test * unpleasant for the BPF code generator, as the values you test
* for in the kernel aren't the values that you test for when * 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 * reading a capture file, so the fixup code run on BPF programs
* handed to the kernel ends up having to do more work. * handed to the kernel ends up having to do more work.
* *
* Add other values here as necessary, for handling packet types that * 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 * 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 * in the Linux "if_ether.h" will, I suspect, actually show up in
* captures.) * captures.)
*/ */
#define LINUX_SLL_P_802_3 0x0001 /* Novell 802.3 frames without 802.2 LLC header */ #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_802_2 0x0004 /* 802.2 frames (not D/I/X Ethernet) */
#endif #endif

View File

@ -11,8 +11,8 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote * 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written * products derived from this software without specific prior written
* permission. * permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
@ -32,11 +32,11 @@
* *
* @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6 2007/09/22 02:06:08 guy Exp $ * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6 2007/09/22 02:06:08 guy Exp $
*/ */
#ifndef _PCAP_USB_STRUCTS_H__ #ifndef _PCAP_USB_STRUCTS_H__
#define _PCAP_USB_STRUCTS_H__ #define _PCAP_USB_STRUCTS_H__
/* /*
* possible transfer mode * possible transfer mode
*/ */
#define URB_TRANSFER_IN 0x80 #define URB_TRANSFER_IN 0x80
@ -57,11 +57,11 @@
* Appears at the front of each packet in DLT_USB captures. * Appears at the front of each packet in DLT_USB captures.
*/ */
typedef struct _usb_setup { typedef struct _usb_setup {
u_int8_t bmRequestType; u_int8_t bmRequestType;
u_int8_t bRequest; u_int8_t bRequest;
u_int16_t wValue; u_int16_t wValue;
u_int16_t wIndex; u_int16_t wIndex;
u_int16_t wLength; u_int16_t wLength;
} pcap_usb_setup; } pcap_usb_setup;
@ -70,20 +70,20 @@ typedef struct _usb_setup {
* Appears at the front of each packet in DLT_USB_LINUX captures. * Appears at the front of each packet in DLT_USB_LINUX captures.
*/ */
typedef struct _usb_header { typedef struct _usb_header {
u_int64_t id; u_int64_t id;
u_int8_t event_type; u_int8_t event_type;
u_int8_t transfer_type; u_int8_t transfer_type;
u_int8_t endpoint_number; u_int8_t endpoint_number;
u_int8_t device_address; u_int8_t device_address;
u_int16_t bus_id; u_int16_t bus_id;
char setup_flag;/*if !=0 the urb setup header is not present*/ char setup_flag;/*if !=0 the urb setup header is not present*/
char data_flag; /*if !=0 no urb data is present*/ char data_flag; /*if !=0 no urb data is present*/
int64_t ts_sec; int64_t ts_sec;
int32_t ts_usec; int32_t ts_usec;
int32_t status; int32_t status;
u_int32_t urb_len; u_int32_t urb_len;
u_int32_t data_len; /* amount of urb data really present in this event*/ u_int32_t data_len; /* amount of urb data really present in this event*/
pcap_usb_setup setup; pcap_usb_setup setup;
} pcap_usb_header; } pcap_usb_header;

View File

@ -1,6 +1,6 @@
/*- /*-
* Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -37,10 +37,10 @@
#define lib_pcap_vlan_h #define lib_pcap_vlan_h
struct vlan_tag { struct vlan_tag {
u_int16_t vlan_tpid; /* ETH_P_8021Q */ u_int16_t vlan_tpid; /* ETH_P_8021Q */
u_int16_t vlan_tci; /* VLAN TCI */ u_int16_t vlan_tci; /* VLAN TCI */
}; };
#define VLAN_TAG_LEN 4 #define VLAN_TAG_LEN 4
#endif #endif

View File

@ -2,32 +2,32 @@
* Copyright (c) 2002 - 2003 * Copyright (c) 2002 - 2003
* NetGroup, Politecnico di Torino (Italy) * NetGroup, Politecnico di Torino (Italy)
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
* *
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Politecnico di Torino nor the names of its * 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 * contributors may be used to endorse or promote products derived from
* this software without specific prior written permission. * this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
@ -49,135 +49,135 @@ extern "C" {
#endif #endif
/*! /*!
\file remote-ext.h \file remote-ext.h
The goal of this file it to include most of the new definitions that should be The goal of this file it to include most of the new definitions that should be
placed into the pcap.h file. placed into the pcap.h file.
It includes all new definitions (structures and functions like pcap_open(). It includes all new definitions (structures and functions like pcap_open().
Some of the functions are not really a remote feature, but, right now, Some of the functions are not really a remote feature, but, right now,
they are placed here. they are placed here.
*/ */
// All this stuff is public // All this stuff is public
/*! \addtogroup remote_struct /*! \addtogroup remote_struct
\{ \{
*/ */
/*! /*!
\brief Defines the maximum buffer size in which address, port, interface names are kept. \brief Defines the maximum buffer size in which address, port, interface names are kept.
In case the adapter name or such is larger than this value, it is truncated. In case the adapter name or such is larger than this value, it is truncated.
This is not used by the user; however it must be aware that an hostname / interface This is not used by the user; however it must be aware that an hostname / interface
name longer than this value will be truncated. name longer than this value will be truncated.
*/ */
#define PCAP_BUF_SIZE 1024 #define PCAP_BUF_SIZE 1024
/*! \addtogroup remote_source_ID /*! \addtogroup remote_source_ID
\{ \{
*/ */
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a file, i.e. the user want to open a capture from a local file. This indicates a file, i.e. the user want to open a capture from a local file.
*/ */
#define PCAP_SRC_FILE 2 #define PCAP_SRC_FILE 2
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a local interface, i.e. the user want to open a capture from This indicates a local interface, i.e. the user want to open a capture from
a local interface. This does not involve the RPCAP protocol. a local interface. This does not involve the RPCAP protocol.
*/ */
#define PCAP_SRC_IFLOCAL 3 #define PCAP_SRC_IFLOCAL 3
/*! /*!
\brief Internal representation of the type of source in use (file, \brief Internal representation of the type of source in use (file,
remote/local interface). remote/local interface).
This indicates a remote interface, i.e. the user want to open a capture from This indicates a remote interface, i.e. the user want to open a capture from
an interface on a remote host. This does involve the RPCAP protocol. an interface on a remote host. This does involve the RPCAP protocol.
*/ */
#define PCAP_SRC_IFREMOTE 4 #define PCAP_SRC_IFREMOTE 4
/*! /*!
\} \}
*/ */
/*! \addtogroup remote_source_string /*! \addtogroup remote_source_string
The formats allowed by the pcap_open() are the following: The formats allowed by the pcap_open() are the following:
- file://path_and_filename [opens a local file] - file://path_and_filename [opens a local file]
- rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol] - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol]
- rpcap://host/devicename [opens the selected device available on a remote host] - rpcap://host/devicename [opens the selected device available on a remote host]
- rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP] - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP]
- adaptername [to open a local adapter; kept for compability, but it is strongly discouraged] - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged]
- (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged] - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged]
The formats allowed by the pcap_findalldevs_ex() are the following: The formats allowed by the pcap_findalldevs_ex() are the following:
- file://folder/ [lists all the files in the given folder] - file://folder/ [lists all the files in the given folder]
- rpcap:// [lists all local adapters] - rpcap:// [lists all local adapters]
- rpcap://host:port/ [lists the devices available on a remote host] - rpcap://host:port/ [lists the devices available on a remote host]
Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since
IPv6 is fully supported, these are the allowed formats: IPv6 is fully supported, these are the allowed formats:
- host (literal): e.g. host.foo.bar - host (literal): e.g. host.foo.bar
- host (numeric IPv4): e.g. 10.11.12.13 - host (numeric IPv4): e.g. 10.11.12.13
- host (numeric IPv4, IPv6 style): e.g. [10.11.12.13] - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13]
- host (numeric IPv6): e.g. [1:2:3::4] - host (numeric IPv6): e.g. [1:2:3::4]
- port: can be either numeric (e.g. '80') or literal (e.g. 'http') - port: can be either numeric (e.g. '80') or literal (e.g. 'http')
Here you find some allowed examples: Here you find some allowed examples:
- rpcap://host.foo.bar/devicename [everything literal, no port number] - rpcap://host.foo.bar/devicename [everything literal, no port number]
- rpcap://host.foo.bar:1234/devicename [everything literal, with port number] - rpcap://host.foo.bar:1234/devicename [everything literal, with port number]
- rpcap://10.11.12.13/devicename [IPv4 numeric, no port number] - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number]
- rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number] - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number]
- rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number] - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number]
- rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number] - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number]
- rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number] - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number]
- rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number] - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number]
\{ \{
*/ */
/*! /*!
\brief String that will be used to determine the type of source in use (file, \brief String that will be used to determine the type of source in use (file,
remote/local interface). remote/local interface).
This string will be prepended to the interface name in order to create a string This string will be prepended to the interface name in order to create a string
that contains all the information required to open the source. that contains all the information required to open the source.
This string indicates that the user wants to open a capture from a local file. This string indicates that the user wants to open a capture from a local file.
*/ */
#define PCAP_SRC_FILE_STRING "file://" #define PCAP_SRC_FILE_STRING "file://"
/*! /*!
\brief String that will be used to determine the type of source in use (file, \brief String that will be used to determine the type of source in use (file,
remote/local interface). remote/local interface).
This string will be prepended to the interface name in order to create a string This string will be prepended to the interface name in order to create a string
that contains all the information required to open the source. that contains all the information required to open the source.
This string indicates that the user wants to open a capture from a network interface. This string indicates that the user wants to open a capture from a network interface.
This string does not necessarily involve the use of the RPCAP protocol. If the This string does not necessarily involve the use of the RPCAP protocol. If the
interface required resides on the local host, the RPCAP protocol is not involved interface required resides on the local host, the RPCAP protocol is not involved
and the local functions are used. and the local functions are used.
*/ */
#define PCAP_SRC_IF_STRING "rpcap://" #define PCAP_SRC_IF_STRING "rpcap://"
/*! /*!
\} \}
*/ */
@ -185,137 +185,137 @@ extern "C" {
/*! /*!
\addtogroup remote_open_flags \addtogroup remote_open_flags
\{ \{
*/ */
/*! /*!
\brief Defines if the adapter has to go in promiscuous mode. \brief Defines if the adapter has to go in promiscuous mode.
It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise. It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise.
Note that even if this parameter is false, the interface could well be in promiscuous Note that even if this parameter is false, the interface could well be in promiscuous
mode for some other reason (for example because another capture process with mode for some other reason (for example because another capture process with
promiscuous mode enabled is currently using that interface). promiscuous mode enabled is currently using that interface).
On on Linux systems with 2.2 or later kernels (that have the "any" device), this On on Linux systems with 2.2 or later kernels (that have the "any" device), this
flag does not work on the "any" device; if an argument of "any" is supplied, flag does not work on the "any" device; if an argument of "any" is supplied,
the 'promisc' flag is ignored. the 'promisc' flag is ignored.
*/ */
#define PCAP_OPENFLAG_PROMISCUOUS 1 #define PCAP_OPENFLAG_PROMISCUOUS 1
/*! /*!
\brief Defines if the data trasfer (in case of a remote \brief Defines if the data trasfer (in case of a remote
capture) has to be done with UDP protocol. capture) has to be done with UDP protocol.
If it is '1' if you want a UDP data connection, '0' if you want If it is '1' if you want a UDP data connection, '0' if you want
a TCP data connection; control connection is always TCP-based. a TCP data connection; control connection is always TCP-based.
A UDP connection is much lighter, but it does not guarantee that all A UDP connection is much lighter, but it does not guarantee that all
the captured packets arrive to the client workstation. Moreover, the captured packets arrive to the client workstation. Moreover,
it could be harmful in case of network congestion. it could be harmful in case of network congestion.
This flag is meaningless if the source is not a remote interface. This flag is meaningless if the source is not a remote interface.
In that case, it is simply ignored. In that case, it is simply ignored.
*/ */
#define PCAP_OPENFLAG_DATATX_UDP 2 #define PCAP_OPENFLAG_DATATX_UDP 2
/*! /*!
\brief Defines if the remote probe will capture its own generated traffic. \brief Defines if the remote probe will capture its own generated traffic.
In case the remote probe uses the same interface to capture traffic and to send In case the remote probe uses the same interface to capture traffic and to send
data back to the caller, the captured traffic includes the RPCAP traffic as well. data back to the caller, the captured traffic includes the RPCAP traffic as well.
If this flag is turned on, the RPCAP traffic is excluded from the capture, so that If this flag is turned on, the RPCAP traffic is excluded from the capture, so that
the trace returned back to the collector is does not include this traffic. the trace returned back to the collector is does not include this traffic.
*/ */
#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 #define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4
/*! /*!
\brief Defines if the local adapter will capture its own generated traffic. \brief Defines if the local adapter will capture its own generated traffic.
This flag tells the underlying capture driver to drop the packets that were sent by itself. This flag tells the underlying capture driver to drop the packets that were sent by itself.
This is usefult when building applications like bridges, that should ignore the traffic This is usefult when building applications like bridges, that should ignore the traffic
they just sent. they just sent.
*/ */
#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 #define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8
/*! /*!
\brief This flag configures the adapter for maximum responsiveness. \brief This flag configures the adapter for maximum responsiveness.
In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before
copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage,
i.e. better performance, which is good for applications like sniffers. If the user sets the i.e. better performance, which is good for applications like sniffers. If the user sets the
PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application
is ready to receive them. This is suggested for real time applications (like, for example, a bridge) is ready to receive them. This is suggested for real time applications (like, for example, a bridge)
that need the best responsiveness.*/ that need the best responsiveness.*/
#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 #define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16
/*! /*!
\} \}
*/ */
/*! /*!
\addtogroup remote_samp_methods \addtogroup remote_samp_methods
\{ \{
*/ */
/*! /*!
\brief No sampling has to be done on the current capture. \brief No sampling has to be done on the current capture.
In this case, no sampling algorithms are applied to the current capture. In this case, no sampling algorithms are applied to the current capture.
*/ */
#define PCAP_SAMP_NOSAMP 0 #define PCAP_SAMP_NOSAMP 0
/*! /*!
\brief It defines that only 1 out of N packets must be returned to the user. \brief It defines that only 1 out of N packets must be returned to the user.
In this case, the 'value' field of the 'pcap_samp' structure indicates the In this case, the 'value' field of the 'pcap_samp' structure indicates the
number of packets (minus 1) that must be discarded before one packet got accepted. number of packets (minus 1) that must be discarded before one packet got accepted.
In other words, if 'value = 10', the first packet is returned to the caller, while In other words, if 'value = 10', the first packet is returned to the caller, while
the following 9 are discarded. the following 9 are discarded.
*/ */
#define PCAP_SAMP_1_EVERY_N 1 #define PCAP_SAMP_1_EVERY_N 1
/*! /*!
\brief It defines that we have to return 1 packet every N milliseconds. \brief It defines that we have to return 1 packet every N milliseconds.
In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting
time' in milliseconds before one packet got accepted. time' in milliseconds before one packet got accepted.
In other words, if 'value = 10', the first packet is returned to the caller; the next In other words, if 'value = 10', the first packet is returned to the caller; the next
returned one will be the first packet that arrives when 10ms have elapsed. returned one will be the first packet that arrives when 10ms have elapsed.
*/ */
#define PCAP_SAMP_FIRST_AFTER_N_MS 2 #define PCAP_SAMP_FIRST_AFTER_N_MS 2
/*! /*!
\} \}
*/ */
/*! /*!
\addtogroup remote_auth_methods \addtogroup remote_auth_methods
\{ \{
*/ */
/*! /*!
\brief It defines the NULL authentication. \brief It defines the NULL authentication.
This value has to be used within the 'type' member of the pcap_rmtauth structure. This value has to be used within the 'type' member of the pcap_rmtauth structure.
The 'NULL' authentication has to be equal to 'zero', so that old applications The 'NULL' authentication has to be equal to 'zero', so that old applications
can just put every field of struct pcap_rmtauth to zero, and it does work. can just put every field of struct pcap_rmtauth to zero, and it does work.
*/ */
#define RPCAP_RMTAUTH_NULL 0 #define RPCAP_RMTAUTH_NULL 0
/*! /*!
\brief It defines the username/password authentication. \brief It defines the username/password authentication.
With this type of authentication, the RPCAP protocol will use the username/ With this type of authentication, the RPCAP protocol will use the username/
password provided to authenticate the user on the remote machine. If the password provided to authenticate the user on the remote machine. If the
authentication is successful (and the user has the right to open network devices) authentication is successful (and the user has the right to open network devices)
the RPCAP connection will continue; otherwise it will be dropped. the RPCAP connection will continue; otherwise it will be dropped.
This value has to be used within the 'type' member of the pcap_rmtauth structure. This value has to be used within the 'type' member of the pcap_rmtauth structure.
*/ */
#define RPCAP_RMTAUTH_PWD 1 #define RPCAP_RMTAUTH_PWD 1
/*! /*!
\} \}
*/ */
@ -323,73 +323,73 @@ extern "C" {
/*! /*!
\brief This structure keeps the information needed to autheticate \brief This structure keeps the information needed to autheticate
the user on a remote machine. the user on a remote machine.
The remote machine can either grant or refuse the access according The remote machine can either grant or refuse the access according
to the information provided. to the information provided.
In case the NULL authentication is required, both 'username' and In case the NULL authentication is required, both 'username' and
'password' can be NULL pointers. 'password' can be NULL pointers.
This structure is meaningless if the source is not a remote interface; This structure is meaningless if the source is not a remote interface;
in that case, the functions which requires such a structure can accept in that case, the functions which requires such a structure can accept
a NULL pointer as well. a NULL pointer as well.
*/ */
struct pcap_rmtauth struct pcap_rmtauth
{ {
/*! /*!
\brief Type of the authentication required. \brief Type of the authentication required.
In order to provide maximum flexibility, we can support different types In order to provide maximum flexibility, we can support different types
of authentication based on the value of this 'type' variable. The currently of authentication based on the value of this 'type' variable. The currently
supported authentication methods are defined into the supported authentication methods are defined into the
\link remote_auth_methods Remote Authentication Methods Section\endlink. \link remote_auth_methods Remote Authentication Methods Section\endlink.
*/ */
int type; int type;
/*! /*!
\brief Zero-terminated string containing the username that has to be \brief Zero-terminated string containing the username that has to be
used on the remote machine for authentication. used on the remote machine for authentication.
This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
and it can be NULL. and it can be NULL.
*/ */
char *username; char *username;
/*! /*!
\brief Zero-terminated string containing the password that has to be \brief Zero-terminated string containing the password that has to be
used on the remote machine for authentication. used on the remote machine for authentication.
This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
and it can be NULL. and it can be NULL.
*/ */
char *password; char *password;
}; };
/*! /*!
\brief This structure defines the information related to sampling. \brief This structure defines the information related to sampling.
In case the sampling is requested, the capturing device should read In case the sampling is requested, the capturing device should read
only a subset of the packets coming from the source. The returned packets depend only a subset of the packets coming from the source. The returned packets depend
on the sampling parameters. on the sampling parameters.
\warning The sampling process is applied <strong>after</strong> the filtering process. \warning The sampling process is applied <strong>after</strong> the filtering process.
In other words, packets are filtered first, then the sampling process selects a In other words, packets are filtered first, then the sampling process selects a
subset of the 'filtered' packets and it returns them to the caller. subset of the 'filtered' packets and it returns them to the caller.
*/ */
struct pcap_samp struct pcap_samp
{ {
/*! /*!
Method used for sampling. Currently, the supported methods are listed in the Method used for sampling. Currently, the supported methods are listed in the
\link remote_samp_methods Sampling Methods Section\endlink. \link remote_samp_methods Sampling Methods Section\endlink.
*/ */
int method; int method;
/*! /*!
This value depends on the sampling method defined. For its meaning, please check This value depends on the sampling method defined. For its meaning, please check
at the \link remote_samp_methods Sampling Methods Section\endlink. at the \link remote_samp_methods Sampling Methods Section\endlink.
*/ */
int value; int value;
}; };
@ -400,7 +400,7 @@ struct pcap_samp
/*! /*!
\} \}
*/ // end of public documentation */ // end of public documentation
@ -410,8 +410,8 @@ struct pcap_samp
/** \name New WinPcap functions /** \name New WinPcap functions
This section lists the new functions that are able to help considerably in writing This section lists the new functions that are able to help considerably in writing
WinPcap programs because of their easiness of use. WinPcap programs because of their easiness of use.
*/ */
//\{ //\{
pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf); pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf);
@ -427,7 +427,7 @@ struct pcap_samp *pcap_setsampling(pcap_t *p);
/** \name Remote Capture functions /** \name Remote Capture functions
*/ */
//\{ //\{
SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf); SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf);
int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf); int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf);
int pcap_remoteact_close(const char *host, char *errbuf); int pcap_remoteact_close(const char *host, char *errbuf);

View File

@ -1,11 +1,7 @@
/* /*
* File : pcap_netif.c * Copyright (c) 2006-2021, RT-Thread Development Team
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2012, RT-Thread Development Team
* *
* The license and distribution terms for this file may be * SPDX-License-Identifier: Apache-2.0
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
@ -37,12 +33,12 @@
struct pcap_netif struct pcap_netif
{ {
/* inherit from ethernet device */ /* inherit from ethernet device */
struct eth_device parent; struct eth_device parent;
pcap_t *tap; pcap_t *tap;
/* interface address info. */ /* interface address info. */
rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */ rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */
}; };
static struct pcap_netif pcap_netif_device; static struct pcap_netif pcap_netif_device;
static struct rt_semaphore sem_lock; static struct rt_semaphore sem_lock;
@ -61,7 +57,7 @@ static void pcap_thread_entry(void* parameter)
/* Open the adapter */ /* Open the adapter */
if ((tap = pcap_open_live(netif->name, if ((tap = pcap_open_live(netif->name,
65536, // portion of the packet to capture. 65536, // portion of the packet to capture.
1, // promiscuous mode (nonzero means promiscuous) 1, // promiscuous mode (nonzero means promiscuous)
1, // read timeout, 0 blocked, -1 no timeout 1, // read timeout, 0 blocked, -1 no timeout
errbuf )) == NULL) errbuf )) == NULL)
@ -88,7 +84,7 @@ static void pcap_thread_entry(void* parameter)
p = pbuf_alloc(PBUF_LINK, header->len, PBUF_RAM); p = pbuf_alloc(PBUF_LINK, header->len, PBUF_RAM);
pbuf_take(p, pkt_data, header->len); pbuf_take(p, pkt_data, header->len);
/* send to packet mailbox */ /* send to packet mailbox */
rt_mb_send_wait(packet_mb, (rt_uint32_t)p, RT_WAITING_FOREVER); rt_mb_send_wait(packet_mb, (rt_uint32_t)p, RT_WAITING_FOREVER);
/* notify eth rx thread to receive packet */ /* notify eth rx thread to receive packet */
@ -134,7 +130,7 @@ static rt_err_t pcap_netif_init(rt_device_t dev)
{ {
rt_kprintf("Select (%s) as network interface\n", d->description); rt_kprintf("Select (%s) as network interface\n", d->description);
packet_mb = rt_mb_create("pcap", 64, RT_IPC_FLAG_FIFO); packet_mb = rt_mb_create("pcap", 64, RT_IPC_FLAG_FIFO);
tid = rt_thread_create("pcap", pcap_thread_entry, d, tid = rt_thread_create("pcap", pcap_thread_entry, d,
2048, RT_THREAD_PRIORITY_MAX - 1, 10); 2048, RT_THREAD_PRIORITY_MAX - 1, 10);
if (tid != RT_NULL) if (tid != RT_NULL)
{ {
@ -151,7 +147,7 @@ static rt_err_t pcap_netif_init(rt_device_t dev)
static rt_err_t pcap_netif_open(rt_device_t dev, rt_uint16_t oflag) static rt_err_t pcap_netif_open(rt_device_t dev, rt_uint16_t oflag)
{ {
return RT_EOK; return RT_EOK;
} }
static rt_err_t pcap_netif_close(rt_device_t dev) static rt_err_t pcap_netif_close(rt_device_t dev)
@ -161,42 +157,42 @@ static rt_err_t pcap_netif_close(rt_device_t dev)
tap = NETIF_PCAP(dev); tap = NETIF_PCAP(dev);
pcap_close(tap); pcap_close(tap);
return RT_EOK; return RT_EOK;
} }
static rt_size_t pcap_netif_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) static rt_size_t pcap_netif_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
{ {
rt_set_errno(-RT_ENOSYS); rt_set_errno(-RT_ENOSYS);
return 0; return 0;
} }
static rt_size_t pcap_netif_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) static rt_size_t pcap_netif_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
{ {
rt_set_errno(-RT_ENOSYS); rt_set_errno(-RT_ENOSYS);
return 0; return 0;
} }
static rt_err_t pcap_netif_control(rt_device_t dev, int cmd, void *args) static rt_err_t pcap_netif_control(rt_device_t dev, int cmd, void *args)
{ {
switch (cmd) switch (cmd)
{ {
case NIOCTL_GADDR: case NIOCTL_GADDR:
/* get mac address */ /* get mac address */
if (args) rt_memcpy(args, pcap_netif_device.dev_addr, 6); if (args) rt_memcpy(args, pcap_netif_device.dev_addr, 6);
else return -RT_ERROR; else return -RT_ERROR;
break; break;
default : default :
break; break;
} }
return RT_EOK; return RT_EOK;
} }
rt_err_t pcap_netif_tx( rt_device_t dev, struct pbuf* p) rt_err_t pcap_netif_tx( rt_device_t dev, struct pbuf* p)
{ {
struct pbuf *q; struct pbuf *q;
rt_uint8_t *ptr; rt_uint8_t *ptr;
rt_uint8_t buf[2048]; rt_uint8_t buf[2048];
rt_err_t result = RT_EOK; rt_err_t result = RT_EOK;
pcap_t *tap; pcap_t *tap;
@ -204,18 +200,18 @@ rt_err_t pcap_netif_tx( rt_device_t dev, struct pbuf* p)
tap = NETIF_PCAP(dev); tap = NETIF_PCAP(dev);
/* lock EMAC device */ /* lock EMAC device */
rt_sem_take(&sem_lock, RT_WAITING_FOREVER); rt_sem_take(&sem_lock, RT_WAITING_FOREVER);
/* copy data to tx buffer */ /* copy data to tx buffer */
q = p; q = p;
ptr = (rt_uint8_t*)buf; ptr = (rt_uint8_t*)buf;
while (q) while (q)
{ {
memcpy(ptr, q->payload, q->len); memcpy(ptr, q->payload, q->len);
ptr += q->len; ptr += q->len;
q = q->next; q = q->next;
} }
rt_enter_critical(); rt_enter_critical();
res = pcap_sendpacket(tap, buf, p->tot_len); res = pcap_sendpacket(tap, buf, p->tot_len);
@ -227,15 +223,15 @@ rt_err_t pcap_netif_tx( rt_device_t dev, struct pbuf* p)
result = -RT_ERROR; result = -RT_ERROR;
} }
/* unlock EMAC device */ /* unlock EMAC device */
rt_sem_release(&sem_lock); rt_sem_release(&sem_lock);
return result; return result;
} }
struct pbuf *pcap_netif_rx(rt_device_t dev) struct pbuf *pcap_netif_rx(rt_device_t dev)
{ {
struct pbuf* p = RT_NULL; struct pbuf* p = RT_NULL;
rt_mb_recv(packet_mb, (rt_uint32_t*)&p, 0); rt_mb_recv(packet_mb, (rt_uint32_t*)&p, 0);
@ -244,28 +240,28 @@ struct pbuf *pcap_netif_rx(rt_device_t dev)
void pcap_netif_hw_init(void) void pcap_netif_hw_init(void)
{ {
rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO); rt_sem_init(&sem_lock, "eth_lock", 1, RT_IPC_FLAG_FIFO);
pcap_netif_device.dev_addr[0] = 0x00; pcap_netif_device.dev_addr[0] = 0x00;
pcap_netif_device.dev_addr[1] = 0x60; pcap_netif_device.dev_addr[1] = 0x60;
pcap_netif_device.dev_addr[2] = 0x37; pcap_netif_device.dev_addr[2] = 0x37;
/* set mac address: (only for test) */ /* set mac address: (only for test) */
pcap_netif_device.dev_addr[3] = 0x12; pcap_netif_device.dev_addr[3] = 0x12;
pcap_netif_device.dev_addr[4] = 0x34; pcap_netif_device.dev_addr[4] = 0x34;
pcap_netif_device.dev_addr[5] = 0x56; pcap_netif_device.dev_addr[5] = 0x56;
pcap_netif_device.parent.parent.init = pcap_netif_init; pcap_netif_device.parent.parent.init = pcap_netif_init;
pcap_netif_device.parent.parent.open = pcap_netif_open; pcap_netif_device.parent.parent.open = pcap_netif_open;
pcap_netif_device.parent.parent.close = pcap_netif_close; pcap_netif_device.parent.parent.close = pcap_netif_close;
pcap_netif_device.parent.parent.read = pcap_netif_read; pcap_netif_device.parent.parent.read = pcap_netif_read;
pcap_netif_device.parent.parent.write = pcap_netif_write; pcap_netif_device.parent.parent.write = pcap_netif_write;
pcap_netif_device.parent.parent.control = pcap_netif_control; pcap_netif_device.parent.parent.control = pcap_netif_control;
pcap_netif_device.parent.parent.user_data = RT_NULL; pcap_netif_device.parent.parent.user_data = RT_NULL;
pcap_netif_device.parent.eth_rx = pcap_netif_rx; pcap_netif_device.parent.eth_rx = pcap_netif_rx;
pcap_netif_device.parent.eth_tx = pcap_netif_tx; pcap_netif_device.parent.eth_tx = pcap_netif_tx;
eth_device_init(&(pcap_netif_device.parent), "e0"); eth_device_init(&(pcap_netif_device.parent), "e0");
} }
#include <finsh.h> #include <finsh.h>

View File

@ -1,3 +1,12 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#ifndef RTCONFIG_PROJECT_H__ #ifndef RTCONFIG_PROJECT_H__
#define RTCONFIG_PROJECT_H__ #define RTCONFIG_PROJECT_H__
@ -10,7 +19,7 @@
#define _INC_TIME_INL //dfs_elm.c time.h conflicts with wtime.inl #define _INC_TIME_INL //dfs_elm.c time.h conflicts with wtime.inl
/* disable some warning in MSC */ /* disable some warning in MSC */
#pragma warning(disable:4273) /* to ignore: warning C4273: inconsistent dll linkage */ #pragma warning(disable:4273) /* to ignore: warning C4273: inconsistent dll linkage */
#pragma warning(disable:4312) /* to ignore: warning C4312: 'type cast' : conversion from 'rt_uint32_t' to 'rt_uint32_t *' */ #pragma warning(disable:4312) /* to ignore: warning C4312: 'type cast' : conversion from 'rt_uint32_t' to 'rt_uint32_t *' */
#pragma warning(disable:4311) /* to ignore: warning C4311: 'type cast' : pointer truncation from 'short *__w64 ' to 'long' */ #pragma warning(disable:4311) /* to ignore: warning C4311: 'type cast' : pointer truncation from 'short *__w64 ' to 'long' */
#pragma warning(disable:4996) /* to ignore: warning C4996: The POSIX name for this item is deprecated. */ #pragma warning(disable:4996) /* to ignore: warning C4996: The POSIX name for this item is deprecated. */