From 2836b3e45fc829798083935df2d8a5eccecf6c67 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sun, 4 Feb 2018 10:40:20 +0100 Subject: [PATCH] [Tools] Added the UdpDebugReader by @dimok789 --- README.MD | 3 + tools/udp_debug_reader/Makefile | 12 + tools/udp_debug_reader/UdpDebugReader | Bin 0 -> 12558 bytes tools/udp_debug_reader/UdpDebugReader.cbp | 47 ++ tools/udp_debug_reader/UdpDebugReader.depend | 424 ++++++++++++++ tools/udp_debug_reader/UdpDebugReader.exe | Bin 0 -> 35784 bytes tools/udp_debug_reader/UdpDebugReader.layout | 29 + tools/udp_debug_reader/doxygen/doxyfile | 288 ++++++++++ tools/udp_debug_reader/source/Input.c | 118 ++++ tools/udp_debug_reader/source/Input.h | 48 ++ tools/udp_debug_reader/source/main.c | 81 +++ tools/udp_debug_reader/source/network.c | 107 ++++ tools/udp_debug_reader/source/network.h | 52 ++ .../source/winsock/libwsock32.a | Bin 0 -> 54434 bytes .../udp_debug_reader/source/winsock/winsock.h | 536 ++++++++++++++++++ 15 files changed, 1745 insertions(+) create mode 100644 tools/udp_debug_reader/Makefile create mode 100644 tools/udp_debug_reader/UdpDebugReader create mode 100644 tools/udp_debug_reader/UdpDebugReader.cbp create mode 100644 tools/udp_debug_reader/UdpDebugReader.depend create mode 100644 tools/udp_debug_reader/UdpDebugReader.exe create mode 100644 tools/udp_debug_reader/UdpDebugReader.layout create mode 100644 tools/udp_debug_reader/doxygen/doxyfile create mode 100644 tools/udp_debug_reader/source/Input.c create mode 100644 tools/udp_debug_reader/source/Input.h create mode 100644 tools/udp_debug_reader/source/main.c create mode 100644 tools/udp_debug_reader/source/network.c create mode 100644 tools/udp_debug_reader/source/network.h create mode 100644 tools/udp_debug_reader/source/winsock/libwsock32.a create mode 100644 tools/udp_debug_reader/source/winsock/winsock.h diff --git a/README.MD b/README.MD index cad1868..20cfe4a 100644 --- a/README.MD +++ b/README.MD @@ -121,6 +121,9 @@ make then you can build the example_plugin. +# Logging +For logging you need to start the UdpDebugReader. This has been created by @dimok789 and can be found in the tools folder. + # Similar projects ## function-patcher-example diff --git a/tools/udp_debug_reader/Makefile b/tools/udp_debug_reader/Makefile new file mode 100644 index 0000000..c98ba4c --- /dev/null +++ b/tools/udp_debug_reader/Makefile @@ -0,0 +1,12 @@ +CC=gcc +CFLAGS=-c -Wall +LDFLAGS= +SOURCES:= $(wildcard source/*.c) +OBJ_FILES = $(patsubst source/%.c,obj/%.o,$(SOURCES)) +EXECUTABLE=UdpDebugReader + +$(EXECUTABLE): $(OBJ_FILES) + $(CC) $(LDFLAGS) -o $@ $^ + +obj/%.o: source/%.c + mkdir obj; $(CC) $(CFLAGS) -c -o $@ $< diff --git a/tools/udp_debug_reader/UdpDebugReader b/tools/udp_debug_reader/UdpDebugReader new file mode 100644 index 0000000000000000000000000000000000000000..3ebaf704887b59212a319c1deaaf8b7d2e101ea5 GIT binary patch literal 12558 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 literal 0 HcmV?d00001 diff --git a/tools/udp_debug_reader/UdpDebugReader.cbp b/tools/udp_debug_reader/UdpDebugReader.cbp new file mode 100644 index 0000000..16d9183 --- /dev/null +++ b/tools/udp_debug_reader/UdpDebugReader.cbp @@ -0,0 +1,47 @@ + + + + + + diff --git a/tools/udp_debug_reader/UdpDebugReader.depend b/tools/udp_debug_reader/UdpDebugReader.depend new file mode 100644 index 0000000..685e484 --- /dev/null +++ b/tools/udp_debug_reader/UdpDebugReader.depend @@ -0,0 +1,424 @@ +# depslib dependency file v1.0 +1279792267 source:c:\dokumente und einstellungen\dima\desktop\UdpDebugReader\source\network.c + + + + + + + + + "network.h" + +1452177726 " + +1279792340 source:c:\dokumente und einstellungen\dima\desktop\UdpDebugReader\source\main.c + + + + "network.h" + +1279798227 source:/home/dima/Desktop/UdpDebugReader/source/main.c + + + + "Input.h" + "network.h" + +1279798084 /home/dima/Desktop/UdpDebugReader/source/network.h + "winsock/winsock.h" + + + + +1279798084 n.h> + +1279797916 source:/home/dima/Desktop/UdpDebugReader/source/network.c + + + + + + + "network.h" + +1279798221 /home/dima/Desktop/UdpDebugReader/source/Input.h + + + +1445718391 > + +1279798252 source:/home/dima/Desktop/UdpDebugReader/source/Input.c + + + + "Input.h" + + +1198764450 /home/dima/Desktop/UdpDebugReader/source/winsock/winsock.h + + + +1279798227 source:d:\UdpDebugReader\source\main.c + + + + "Input.h" + "network.h" + +1279799401 d:\UdpDebugReader\source\input.h + + + +1279799400 d:\UdpDebugReader\source\network.h + "winsock/winsock.h" + + + + + +1452177726 + +1198768050 d:\UdpDebugReader\source\winsock\winsock.h + + + +1279799399 source:d:\UdpDebugReader\source\network.c + + + + + + "network.h" + +1279798252 source:d:\UdpDebugReader\source\input.c + + + + "Input.h" + + +1291665385 source:d:\code\windowstools\UdpDebugReader\source\network.c + + + + + + "network.h" + +1291665388 d:\code\windowstools\UdpDebugReader\source\network.h + "winsock/winsock.h" + + + + + +1198764450 d:\code\windowstools\UdpDebugReader\source\winsock\winsock.h + + + +1291665361 source:d:\code\windowstools\UdpDebugReader\source\input.c + + + + "Input.h" + + +1291665378 d:\code\windowstools\UdpDebugReader\source\input.h + + + +1293478462 source:d:\code\windowstools\UdpDebugReader\source\main.c + + + + "Input.h" + "network.h" + +1325182250 source:/media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/Input.c + + + + "Input.h" + + + + + "Input.h" + + +1325182250 /media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/Input.h + + + + + +1334304767 source:/media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/main.c + + + + "Input.h" + "network.h" + + + + "Input.h" + "network.h" + +1334304019 /media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/network.h + "winsock/winsock.h" + + + + + "winsock/winsock.h" + + + + + +1325182250 /media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/winsock/winsock.h + + + + + +1334308770 source:/media/truecrypt1/code/LocalTrunk/Tools/UdpDebugReader/source/network.c + + + + + + "network.h" + + + + + + "network.h" + +1334910814 source:d:\code\localtrunk\tools\UdpDebugReader\source\main.c + + + + "Input.h" + "network.h" + +1334909941 d:\code\localtrunk\tools\UdpDebugReader\source\input.h + + + +1334910353 d:\code\localtrunk\tools\UdpDebugReader\source\network.h + "winsock/winsock.h" + + + + + +1325182250 d:\code\localtrunk\tools\UdpDebugReader\source\winsock\winsock.h + + + +1334910629 source:d:\code\localtrunk\tools\UdpDebugReader\source\network.c + + + + + + "network.h" + +1334909938 source:d:\code\localtrunk\tools\UdpDebugReader\source\input.c + + + + "Input.h" + + +1334909938 source:/media/truecrypt1/test/UdpDebugReader/source/Input.c + + + + "Input.h" + + +1334909941 /media/truecrypt1/test/UdpDebugReader/source/Input.h + + + +1334910431 source:/media/truecrypt1/test/UdpDebugReader/source/main.c + + + + "Input.h" + "network.h" + +1334910353 /media/truecrypt1/test/UdpDebugReader/source/network.h + "winsock/winsock.h" + + + + + +1325182250 /media/truecrypt1/test/UdpDebugReader/source/winsock/winsock.h + + + +1334910629 source:/media/truecrypt1/test/UdpDebugReader/source/network.c + + + + + + "network.h" + +1445714791 source:d:\code\UdpDebugReader\source\input.c + + + + "Input.h" + + +1445714791 d:\code\UdpDebugReader\source\input.h + + + +1452177726 source:d:\code\UdpDebugReader\source\main.c + + + + "Input.h" + "network.h" + +1452177726 d:\code\UdpDebugReader\source\network.h + "winsock/winsock.h" + + + + + +1445714791 d:\code\UdpDebugReader\source\winsock\winsock.h + + + +1452177726 source:d:\code\UdpDebugReader\source\network.c + + + + + + "network.h" + +1445714791 source:d:\loadiine_code\loadiine_gx2\udpdebugreader\source\input.c + + + + "Input.h" + + +1445714791 d:\loadiine_code\loadiine_gx2\udpdebugreader\source\input.h + + + +1455123313 source:d:\loadiine_code\loadiine_gx2\udpdebugreader\source\network.c + + + + + + "network.h" + +1452177726 d:\loadiine_code\loadiine_gx2\udpdebugreader\source\network.h + "winsock/winsock.h" + + + + + +1445714791 d:\loadiine_code\loadiine_gx2\udpdebugreader\source\winsock\winsock.h + + + +1455123353 source:d:\loadiine_code\loadiine_gx2\udpdebugreader\source\main.c + + + + + "Input.h" + "network.h" + +1445718391 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/Input.c + + + + "Input.h" + + +1445718391 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/Input.h + + + +1455123087 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/main.c + + + + + "Input.h" + "network.h" + +1452177726 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/network.h + "winsock/winsock.h" + + + + + +1445718391 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/winsock/winsock.h + + + +1452177726 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/network.c + + + + + + "network.h" + +1445718391 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/Input.c + + + + "Input.h" + + +1445718391 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/Input.h + + + +1455123353 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/main.c + + + + + "Input.h" + "network.h" + +1452177726 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/network.h + "winsock/winsock.h" + + + + + +1445718391 /media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/winsock/winsock.h + + + +1455123550 source:/media/harddisk1/loadiine_code/loadiine_gx2/UdpDebugReader/source/network.c + + + + + + "network.h" + diff --git a/tools/udp_debug_reader/UdpDebugReader.exe b/tools/udp_debug_reader/UdpDebugReader.exe new file mode 100644 index 0000000000000000000000000000000000000000..7c34feebca3bde116eca851d3e5734233b2974be GIT binary patch literal 35784 zcmeHw4|rSEmFJbLB*J!VLkyTUfS?8pO&mLM90N%!$ChJ*W4o4}I1u_QOR_B@TSj`y zA0{8;)G@?$(skR=vR&Fqfax%Wug!GWHvH*~6Q@b&GDDV9nuW|Zozkxg&UP~`4H??O z`#bmE_fJnwh=-4UTYBxQ_wKppp5Hm={(VnR_pQEbjAb##T!>RsjP1vff|q}u|6>r@ zdDlLd$DX<5pRU{QX#A(^+Ik}i&pd+wAxB#X{lI zxpT9NrRWwPV~vivY^d+~H3Yg9%A90#961i>mFzMw-H7O9Y>>_i5X%sWk_f~$T);{ChnE$s zTvSoc)6diAI3mfr4bc=h-_oU=QbCRG7$Wg4=Oq1u^Hnb6X|CT%oD$!sI7$D29V_+3 zAL+zDbh>J9LA93+kE`>K)E2u*4;)>j?-5rqC8v%JozBI1!KGf7s>x?;=(H;}Zw_Or zU*ls}ZSjJU+Twz}t}-t#$vSa#6}#wwJd%L?T=13P=uT}x73^JrTtKcIy?Xn7UiP>f zWs&I`ttl9B6{kL{u?Sij(eAL)T8LH&TIyDOj9$(q6r@hTfT1_fq$+Zda}(u|T=!m5 ziiGVYwW#PXkT)`s%B92n;*^TxF7-wRf0T^Y7MG2p;EFGzDQsG?Viyka)z4FnlV`{v z*hij9{bVlS&N=e8zm3%Jc>eGn9LvXt4wc+}(8YFbWGi-~uzKf;uh8Mj6<@|7`LoHt zUx6V9)~~pl(l48&lJwMH3aM%Y9{Mi162z%v`=<~lpD2Ih)JB}_dWQENQ&CvVQnj+^ z9Z+U_0(>Y=8M64PECPffTjKe-DT+L)Tt%bJPz@5nRg}f#!LmdLk=Nx z_zkXV{`TL!H#G&P&rcnOx$x@zQ@;RZ*Y^O^7GwLB=z5r$8$)9uOM+`7V%M- z{99753alt`I}WJ_kUu>BI5DVKfLITr5YvVn-abH$>eNpWwUg@0a03J%nUxC(6pqX) z(9a6>vm$wxI*STIr-#g?n6Dlu-qc&5bw8em)BR3JKz8@zByKNe59%lG0+I{GiAY8r z;6ieT$2Ysm$6uV_d_

jb#UPn|g7gdyG@TQiO&f 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 F{||e%<&FRV literal 0 HcmV?d00001 diff --git a/tools/udp_debug_reader/UdpDebugReader.layout b/tools/udp_debug_reader/UdpDebugReader.layout new file mode 100644 index 0000000..cc1897b --- /dev/null +++ b/tools/udp_debug_reader/UdpDebugReader.layout @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/udp_debug_reader/doxygen/doxyfile b/tools/udp_debug_reader/doxygen/doxyfile new file mode 100644 index 0000000..77791c9 --- /dev/null +++ b/tools/udp_debug_reader/doxygen/doxyfile @@ -0,0 +1,288 @@ +#****************************************************************************** +# Base configuration for doxygen, generated by DoxyBlocks. +# You may change these defaults to suit your purposes. +#****************************************************************************** + +# Doxyfile 1.7.3 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = UdpDebugReader +PROJECT_NUMBER = +PROJECT_BRIEF = +PROJECT_LOGO = +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +SYMBOL_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = "D:\code\UdpDebugReader\doxygen\doxygen.log" +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = \ + "..\source\network.h" \ + "..\source\Input.h" \ + "..\source\Input.c" \ + "..\source\main.c" \ + "..\source\network.c" +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = YES +HTML_ALIGN_MEMBERS = YES +HTML_DYNAMIC_SECTIONS = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = "../UdpDebugReader.chm" +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +USE_INLINE_TREES = NO +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_RELPATH = http://www.mathjax.org/mathjax +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = WXUNUSED()= +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES + diff --git a/tools/udp_debug_reader/source/Input.c b/tools/udp_debug_reader/source/Input.c new file mode 100644 index 0000000..3fb0708 --- /dev/null +++ b/tools/udp_debug_reader/source/Input.c @@ -0,0 +1,118 @@ +/**************************************************************************** + * Copyright (C) 2010-2012 + * by Dimok + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any + * damages arising from the use of this software. + * + * Permission is granted to anyone to use this software for any + * purpose, including commercial applications, and to alter it and + * redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you + * must not claim that you wrote the original software. If you use + * this software in a product, an acknowledgment in the product + * documentation would be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and + * must not be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + ***************************************************************************/ +#include +#include +#include +#include "Input.h" + +FILE * logFile = NULL; + +char CheckInput() +{ + if(!kbhit()) + return 0; + + char inputChar = getch(); + + if(inputChar == 'f') + { + if(logFile) + { + printf("\n\nStopped logging.\n\n"); + fclose(logFile); + logFile = NULL; + } + else + { + logFile = fopen("GeckoLog.txt", "wb"); + if(logFile) + printf("\n\nStarted logging to GeckoLog.txt.\n\n"); + else + printf("\n\nCan't create GeckoLog.txt.\n\n"); + } + } + else if(inputChar == 'c') + { + system(CLEAR); + } + + return inputChar; +} + +#ifndef WIN32 +#include + +int kbhit(void) +{ + struct termios term, oterm; + int fd = 0; + int c = 0; + + tcgetattr(fd, &oterm); + + memcpy(&term, &oterm, sizeof(term)); + + term.c_lflag = term.c_lflag & (!ICANON); + + term.c_cc[VMIN] = 0; + + term.c_cc[VTIME] = 1; + + tcsetattr(fd, TCSANOW, &term); + + c = getchar(); + + tcsetattr(fd, TCSANOW, &oterm); + + if (c != -1) + ungetc(c, stdin); + + return ((c != -1) ? 1 : 0); +} + +int getch() +{ + static int ch = -1, fd = 0; + + struct termios neu, alt; + + fd = fileno(stdin); + + tcgetattr(fd, &alt); + + neu = alt; + + neu.c_lflag &= ~(ICANON|ECHO); + + tcsetattr(fd, TCSANOW, &neu); + + ch = getchar(); + + tcsetattr(fd, TCSANOW, &alt); + + return ch; + +} + +#endif //WIN32 diff --git a/tools/udp_debug_reader/source/Input.h b/tools/udp_debug_reader/source/Input.h new file mode 100644 index 0000000..506e2b3 --- /dev/null +++ b/tools/udp_debug_reader/source/Input.h @@ -0,0 +1,48 @@ +/**************************************************************************** + * Copyright (C) 2010-2012 + * by Dimok + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any + * damages arising from the use of this software. + * + * Permission is granted to anyone to use this software for any + * purpose, including commercial applications, and to alter it and + * redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you + * must not claim that you wrote the original software. If you use + * this software in a product, an acknowledgment in the product + * documentation would be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and + * must not be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + ***************************************************************************/ +#ifndef ___INPUT_H_ +#define ___INPUT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef WIN32 + #include + #define CLEAR "cls" +#else + #include + #define CLEAR "clear" + + int kbhit(void); + int getch(); +#endif + +extern FILE * logFile; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/udp_debug_reader/source/main.c b/tools/udp_debug_reader/source/main.c new file mode 100644 index 0000000..545b404 --- /dev/null +++ b/tools/udp_debug_reader/source/main.c @@ -0,0 +1,81 @@ +/**************************************************************************** + * Copyright (C) 2010-2012 + * by Dimok + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any + * damages arising from the use of this software. + * + * Permission is granted to anyone to use this software for any + * purpose, including commercial applications, and to alter it and + * redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you + * must not claim that you wrote the original software. If you use + * this software in a product, an acknowledgment in the product + * documentation would be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and + * must not be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + *****************************************************d**********************/ +#include +#include +#include +#include +#include "Input.h" +#include "network.h" + +int main(int argc, char *argv[]) +{ + char inputChar = 0; + + if(NetInit() < 0) + { + printf("Can't open socket.\n"); + usleep(999999); + usleep(999999); + return 0; + } + + if(Bind() < 0) + { + printf("Can't bind socket.\n"); + usleep(999999); + usleep(999999); + return 0; + } + + printf("UdpDebugReader by Dimok\n"); + printf("q = quit\n"); + printf("f = start/stop writing log to file\n"); + printf("c = clear console\n"); + + int ret; + char data[RECEIVE_BLOCK_SIZE+1]; + memset(data, 0, sizeof(data)); + + while(inputChar != 'q') + { + inputChar = CheckInput(); + + ret = NetRead(data, RECEIVE_BLOCK_SIZE); + if(ret > 0) + { + data[ret] = '\0'; + + printf("%s", data); + if(logFile) + fwrite(data, 1, ret, logFile); + } + } + + if(logFile) + fclose(logFile); + + CloseSocket(); + + return 0; +} diff --git a/tools/udp_debug_reader/source/network.c b/tools/udp_debug_reader/source/network.c new file mode 100644 index 0000000..b62ed28 --- /dev/null +++ b/tools/udp_debug_reader/source/network.c @@ -0,0 +1,107 @@ +/**************************************************************************** + * Copyright (C) 2010-2012 + * by Dimok + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any + * damages arising from the use of this software. + * + * Permission is granted to anyone to use this software for any + * purpose, including commercial applications, and to alter it and + * redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you + * must not claim that you wrote the original software. If you use + * this software in a product, an acknowledgment in the product + * documentation would be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and + * must not be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + ***************************************************************************/ +#include +#include +#include +#include +#include +#include "network.h" // Include Winsock Library + +static int sock_id = -1; +static struct sockaddr_in servaddr; + +int Bind() +{ + memset(&servaddr,0,sizeof(servaddr)); + + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); + servaddr.sin_port = htons(LISTEN_PORT); + servaddr.sin_family = AF_INET; + + if (bind(sock_id, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) + { + close(sock_id); + return -1; + } + + return 0; +} + +void CloseSocket() +{ + if(sock_id < 0) + return; + + close(sock_id); + sock_id = -1; +} + +int NetInit() +{ + if(sock_id >= 0) + return sock_id; + +#ifdef WIN32 + WSADATA wsaData; + + // Initialize Winsock + if (WSAStartup(MAKEWORD(2,2), &wsaData) == SOCKET_ERROR) + return -1; +#endif + //Get a socket + if((sock_id = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) == -1) + return -1; + +#ifdef WIN32 + u_long mode = 1; + ioctlsocket(sock_id, FIONBIO, &mode); +#else + int flags = fcntl(sock_id, F_GETFL, 0); + fcntl(sock_id, F_SETFL, flags | O_NONBLOCK); +#endif + + return sock_id; +} + +int NetRead(void *buffer, unsigned int buf_len) +{ + if(sock_id < 0) + return sock_id; + + fd_set fdsRead; + FD_ZERO(&fdsRead); + FD_SET(sock_id, &fdsRead); + + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 10000; + + if(select(sock_id + 1, &fdsRead, NULL, NULL, &tv) != 1) { + return 0; + } + + int len = sizeof(servaddr); + + return recvfrom(sock_id,buffer, buf_len, 0,(struct sockaddr *)&servaddr, &len); +} diff --git a/tools/udp_debug_reader/source/network.h b/tools/udp_debug_reader/source/network.h new file mode 100644 index 0000000..71f167c --- /dev/null +++ b/tools/udp_debug_reader/source/network.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * Copyright (C) 2010-2012 + * by Dimok + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any + * damages arising from the use of this software. + * + * Permission is granted to anyone to use this software for any + * purpose, including commercial applications, and to alter it and + * redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you + * must not claim that you wrote the original software. If you use + * this software in a product, an acknowledgment in the product + * documentation would be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and + * must not be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + ***************************************************************************/ +#ifndef __NETWORK_H_ +#define __NETWORK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef WIN32 + #include "winsock/winsock.h" // Include Winsock Library +#else + #include + #include + #include + #include +#endif + +#define RECEIVE_BLOCK_SIZE 4096 +#define LISTEN_PORT 4405 + +int NetInit(); +int Bind(); +void CloseSocket(); +int NetRead(void *buffer, unsigned int buf_len); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/udp_debug_reader/source/winsock/libwsock32.a b/tools/udp_debug_reader/source/winsock/libwsock32.a new file mode 100644 index 0000000000000000000000000000000000000000..a38764c0e9ae255a6b7a340caf2fb8ba68ee4501 GIT binary patch literal 54434 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 literal 0 HcmV?d00001 diff --git a/tools/udp_debug_reader/source/winsock/winsock.h b/tools/udp_debug_reader/source/winsock/winsock.h new file mode 100644 index 0000000..b595b59 --- /dev/null +++ b/tools/udp_debug_reader/source/winsock/winsock.h @@ -0,0 +1,536 @@ +/* + + Definitions for winsock 1.1 + + Portions Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + + Portions Copyright (c) 1993 by Digital Equipment Corporation. + */ + +#ifndef _WINSOCK_H +#define _WINSOCK_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define _GNU_H_WINDOWS32_SOCKETS + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined ( _BSDTYPES_DEFINED ) +/* also defined in gmon.h and in cygwin's sys/types */ +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +#define _BSDTYPES_DEFINED +#endif /* !defined _BSDTYPES_DEFINED */ +typedef u_int SOCKET; +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 +#endif + +/* shutdown() how types */ +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 + +#ifndef _SYS_TYPES_FD_SET +/* fd_set may have be defined by the newlib + * if __USE_W32_SOCKETS not defined. + */ +#ifdef fd_set +#undef fd_set +#endif +typedef struct fd_set { + u_int fd_count; + SOCKET fd_array[FD_SETSIZE]; +} fd_set; +int PASCAL __WSAFDIsSet(SOCKET,fd_set*); +#ifndef FD_CLR +#define FD_CLR(fd,set) do { u_int __i;\ +for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ + if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ + while (__i < ((fd_set *)(set))->fd_count-1) {\ + ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ + __i++;\ + }\ + ((fd_set*)(set))->fd_count--;\ + break;\ + }\ +}\ +} while (0) +#endif +#ifndef FD_SET +#define FD_SET(fd, set) do { \ + if (((fd_set *)(set))->fd_count < FD_SETSIZE) \ + ((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\ +}while (0) +#endif +#ifndef FD_ZERO +#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0) +#endif +#ifndef FD_ISSET +#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set)) +#endif +#elif !defined(USE_SYS_TYPES_FD_SET) +#warning "fd_set and associated macros have been defined in sys/types. \ + This can cause runtime problems with W32 sockets" +#endif /* ndef _SYS_TYPES_FD_SET */ + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */ +#define _TIMEVAL_DEFINED +struct timeval { + long tv_sec; + long tv_usec; +}; +#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#define timercmp(tvp, uvp, cmp) \ + (((tvp)->tv_sec != (uvp)->tv_sec) ? \ + ((tvp)->tv_sec cmp (uvp)->tv_sec) : \ + ((tvp)->tv_usec cmp (uvp)->tv_usec)) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 +#endif /* _TIMEVAL_DEFINED */ +struct hostent { + char *h_name; + char **h_aliases; + short h_addrtype; + short h_length; + char **h_addr_list; +#define h_addr h_addr_list[0] +}; +struct linger { + u_short l_onoff; + u_short l_linger; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define IOC_INOUT (IOC_IN|IOC_OUT) + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) +#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define FIONBIO _IOW('f', 126, u_long) +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define FIONREAD _IOR('f', 127, u_long) +#define FIOASYNC _IOW('f', 125, u_long) +#define SIOCSHIWAT _IOW('s', 0, u_long) +#define SIOCGHIWAT _IOR('s', 1, u_long) +#define SIOCSLOWAT _IOW('s', 2, u_long) +#define SIOCGLOWAT _IOR('s', 3, u_long) +#define SIOCATMARK _IOR('s', 7, u_long) + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +struct netent { + char * n_name; + char **n_aliases; + short n_addrtype; + u_long n_net; +}; +struct servent { + char *s_name; + char **s_aliases; + short s_port; + char *s_proto; +}; +struct protoent { + char *p_name; + char **p_aliases; + short p_proto; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define IPPROTO_IP 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_GGP 3 +#define IPPROTO_TCP 6 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_ND 77 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 +#define IPPORT_ECHO 7 +#define IPPORT_DISCARD 9 +#define IPPORT_SYSTAT 11 +#define IPPORT_DAYTIME 13 +#define IPPORT_NETSTAT 15 +#define IPPORT_FTP 21 +#define IPPORT_TELNET 23 +#define IPPORT_SMTP 25 +#define IPPORT_TIMESERVER 37 +#define IPPORT_NAMESERVER 42 +#define IPPORT_WHOIS 43 +#define IPPORT_MTP 57 +#define IPPORT_TFTP 69 +#define IPPORT_RJE 77 +#define IPPORT_FINGER 79 +#define IPPORT_TTYLINK 87 +#define IPPORT_SUPDUP 95 +#define IPPORT_EXECSERVER 512 +#define IPPORT_LOGINSERVER 513 +#define IPPORT_CMDSERVER 514 +#define IPPORT_EFSSERVER 520 +#define IPPORT_BIFFUDP 512 +#define IPPORT_WHOSERVER 513 +#define IPPORT_ROUTESERVER 520 +#define IPPORT_RESERVED 1024 +#define IMPLINK_IP 155 +#define IMPLINK_LOWEXPER 156 +#define IMPLINK_HIGHEXPER 158 +struct in_addr { + union { + struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; + struct { u_short s_w1,s_w2; } S_un_w; + u_long S_addr; + } S_un; +#define s_addr S_un.S_addr +#define s_host S_un.S_un_b.s_b2 +#define s_net S_un.S_un_b.s_b1 +#define s_imp S_un.S_un_w.s_w2 +#define s_impno S_un.S_un_b.s_b4 +#define s_lh S_un.S_un_b.s_b3 +}; +#define IN_CLASSA(i) (((long)(i)&0x80000000) == 0) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST 0x00ffffff +#define IN_CLASSA_MAX 128 +#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST 0x0000ffff +#define IN_CLASSB_MAX 65536 +#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST 0xff +#define INADDR_ANY (u_long)0 +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_BROADCAST (u_long)0xffffffff +#define INADDR_NONE 0xffffffff +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 +typedef struct WSAData { + WORD wVersion; + WORD wHighVersion; + char szDescription[WSADESCRIPTION_LEN+1]; + char szSystemStatus[WSASYS_STATUS_LEN+1]; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + char * lpVendorInfo; +} WSADATA; +typedef WSADATA *LPWSADATA; + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define IP_OPTIONS 1 +#define SO_DEBUG 1 +#define SO_ACCEPTCONN 2 +#define SO_REUSEADDR 4 +#define SO_KEEPALIVE 8 +#define SO_DONTROUTE 16 +#define SO_BROADCAST 32 +#define SO_USELOOPBACK 64 +#define SO_LINGER 128 +#define SO_OOBINLINE 256 +#define SO_DONTLINGER (u_int)(~SO_LINGER) +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_SNDTIMEO 0x1005 +#define SO_RCVTIMEO 0x1006 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +/* + * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). + * They will cause errors or unexpected results if used with the + * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. + */ +#define IP_MULTICAST_IF 2 +#define IP_MULTICAST_TTL 3 +#define IP_MULTICAST_LOOP 4 +#define IP_ADD_MEMBERSHIP 5 +#define IP_DROP_MEMBERSHIP 6 + +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_DEFAULT_MULTICAST_LOOP 1 +#define IP_MAX_MEMBERSHIPS 20 +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; +#define INVALID_SOCKET (SOCKET)(~0) +#define SOCKET_ERROR (-1) +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define TCP_NODELAY 0x0001 +#define AF_UNSPEC 0 +#define AF_UNIX 1 +#define AF_INET 2 +#define AF_IMPLINK 3 +#define AF_PUP 4 +#define AF_CHAOS 5 +#define AF_IPX 6 +#define AF_NS 6 +#define AF_ISO 7 +#define AF_OSI AF_ISO +#define AF_ECMA 8 +#define AF_DATAKIT 9 +#define AF_CCITT 10 +#define AF_SNA 11 +#define AF_DECnet 12 +#define AF_DLI 13 +#define AF_LAT 14 +#define AF_HYLINK 15 +#define AF_APPLETALK 16 +#define AF_NETBIOS 17 +#define AF_VOICEVIEW 18 +#define AF_FIREFOX 19 +#define AF_UNKNOWN1 20 +#define AF_BAN 21 +#define AF_ATM 22 +#define AF_INET6 23 +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define AF_MAX 24 +struct sockaddr { + u_short sa_family; + char sa_data[14]; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +}; +#define PF_UNSPEC AF_UNSPEC +#define PF_UNIX AF_UNIX +#define PF_INET AF_INET +#define PF_IMPLINK AF_IMPLINK +#define PF_PUP AF_PUP +#define PF_CHAOS AF_CHAOS +#define PF_NS AF_NS +#define PF_IPX AF_IPX +#define PF_ISO AF_ISO +#define PF_OSI AF_OSI +#define PF_ECMA AF_ECMA +#define PF_DATAKIT AF_DATAKIT +#define PF_CCITT AF_CCITT +#define PF_SNA AF_SNA +#define PF_DECnet AF_DECnet +#define PF_DLI AF_DLI +#define PF_LAT AF_LAT +#define PF_HYLINK AF_HYLINK +#define PF_APPLETALK AF_APPLETALK +#define PF_VOICEVIEW AF_VOICEVIEW +#define PF_FIREFOX AF_FIREFOX +#define PF_UNKNOWN1 AF_UNKNOWN1 +#define PF_BAN AF_BAN +#define PF_ATM AF_ATM +#define PF_INET6 AF_INET6 +#define PF_MAX AF_MAX +#define SOL_SOCKET 0xffff +#define SOMAXCONN 5 +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define MSG_MAXIOVLEN 16 +#define MSG_PARTIAL 0x8000 +#define MAXGETHOSTSTRUCT 1024 +#define FD_READ 1 +#define FD_WRITE 2 +#define FD_OOB 4 +#define FD_ACCEPT 8 +#define FD_CONNECT 16 +#define FD_CLOSE 32 +#ifndef WSABASEERR +#define WSABASEERR 10000 +#define WSAEINTR (WSABASEERR+4) +#define WSAEBADF (WSABASEERR+9) +#define WSAEACCES (WSABASEERR+13) +#define WSAEFAULT (WSABASEERR+14) +#define WSAEINVAL (WSABASEERR+22) +#define WSAEMFILE (WSABASEERR+24) +#define WSAEWOULDBLOCK (WSABASEERR+35) +#define WSAEINPROGRESS (WSABASEERR+36) +#define WSAEALREADY (WSABASEERR+37) +#define WSAENOTSOCK (WSABASEERR+38) +#define WSAEDESTADDRREQ (WSABASEERR+39) +#define WSAEMSGSIZE (WSABASEERR+40) +#define WSAEPROTOTYPE (WSABASEERR+41) +#define WSAENOPROTOOPT (WSABASEERR+42) +#define WSAEPROTONOSUPPORT (WSABASEERR+43) +#define WSAESOCKTNOSUPPORT (WSABASEERR+44) +#define WSAEOPNOTSUPP (WSABASEERR+45) +#define WSAEPFNOSUPPORT (WSABASEERR+46) +#define WSAEAFNOSUPPORT (WSABASEERR+47) +#define WSAEADDRINUSE (WSABASEERR+48) +#define WSAEADDRNOTAVAIL (WSABASEERR+49) +#define WSAENETDOWN (WSABASEERR+50) +#define WSAENETUNREACH (WSABASEERR+51) +#define WSAENETRESET (WSABASEERR+52) +#define WSAECONNABORTED (WSABASEERR+53) +#define WSAECONNRESET (WSABASEERR+54) +#define WSAENOBUFS (WSABASEERR+55) +#define WSAEISCONN (WSABASEERR+56) +#define WSAENOTCONN (WSABASEERR+57) +#define WSAESHUTDOWN (WSABASEERR+58) +#define WSAETOOMANYREFS (WSABASEERR+59) +#define WSAETIMEDOUT (WSABASEERR+60) +#define WSAECONNREFUSED (WSABASEERR+61) +#define WSAELOOP (WSABASEERR+62) +#define WSAENAMETOOLONG (WSABASEERR+63) +#define WSAEHOSTDOWN (WSABASEERR+64) +#define WSAEHOSTUNREACH (WSABASEERR+65) +#define WSAENOTEMPTY (WSABASEERR+66) +#define WSAEPROCLIM (WSABASEERR+67) +#define WSAEUSERS (WSABASEERR+68) +#define WSAEDQUOT (WSABASEERR+69) +#define WSAESTALE (WSABASEERR+70) +#define WSAEREMOTE (WSABASEERR+71) +#define WSAEDISCON (WSABASEERR+101) +#define WSASYSNOTREADY (WSABASEERR+91) +#define WSAVERNOTSUPPORTED (WSABASEERR+92) +#define WSANOTINITIALISED (WSABASEERR+93) +#define WSAHOST_NOT_FOUND (WSABASEERR+1001) +#define WSATRY_AGAIN (WSABASEERR+1002) +#define WSANO_RECOVERY (WSABASEERR+1003) +#define WSANO_DATA (WSABASEERR+1004) +#endif /* !WSABASEERR */ + +#define WSANO_ADDRESS WSANO_DATA +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define h_errno WSAGetLastError() +#define HOST_NOT_FOUND WSAHOST_NOT_FOUND +#define TRY_AGAIN WSATRY_AGAIN +#define NO_RECOVERY WSANO_RECOVERY +#define NO_DATA WSANO_DATA +#define NO_ADDRESS WSANO_ADDRESS +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*); +int PASCAL bind(SOCKET,const struct sockaddr*,int); +int PASCAL closesocket(SOCKET); +int PASCAL connect(SOCKET,const struct sockaddr*,int); +int PASCAL ioctlsocket(SOCKET,long,u_long *); +int PASCAL getpeername(SOCKET,struct sockaddr*,int*); +int PASCAL getsockname(SOCKET,struct sockaddr*,int*); +int PASCAL getsockopt(SOCKET,int,int,char*,int*); +unsigned long PASCAL inet_addr(const char*); +DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr); +int PASCAL listen(SOCKET,int); +int PASCAL recv(SOCKET,char*,int,int); +int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*); +int PASCAL send(SOCKET,const char*,int,int); +int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int); +int PASCAL setsockopt(SOCKET,int,int,const char*,int); +int PASCAL shutdown(SOCKET,int); +SOCKET PASCAL socket(int,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*); +DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*); +DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*); +DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int); +DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*); +int PASCAL WSAStartup(WORD,LPWSADATA); +int PASCAL WSACleanup(void); +void PASCAL WSASetLastError(int); +int PASCAL WSAGetLastError(void); +BOOL PASCAL WSAIsBlocking(void); +int PASCAL WSAUnhookBlockingHook(void); +FARPROC PASCAL WSASetBlockingHook(FARPROC); +int PASCAL WSACancelBlockingCall(void); +HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int); +HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int); +int PASCAL WSACancelAsyncRequest(HANDLE); +int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long); +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +u_long PASCAL htonl(u_long); +u_long PASCAL ntohl(u_long); +u_short PASCAL htons(u_short); +u_short PASCAL ntohs(u_short); +int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*); +int PASCAL gethostname(char*,int); +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e) +#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error) +#define WSAGETASYNCBUFLEN(l) LOWORD(l) +#define WSAGETASYNCERROR(l) HIWORD(l) +#define WSAGETSELECTEVENT(l) LOWORD(l) +#define WSAGETSELECTERROR(l) HIWORD(l) + +typedef struct sockaddr SOCKADDR; +typedef struct sockaddr *PSOCKADDR; +typedef struct sockaddr *LPSOCKADDR; +typedef struct sockaddr_in SOCKADDR_IN; +typedef struct sockaddr_in *PSOCKADDR_IN; +typedef struct sockaddr_in *LPSOCKADDR_IN; +typedef struct linger LINGER; +typedef struct linger *PLINGER; +typedef struct linger *LPLINGER; +typedef struct in_addr IN_ADDR; +typedef struct in_addr *PIN_ADDR; +typedef struct in_addr *LPIN_ADDR; +typedef struct fd_set FD_SET; +typedef struct fd_set *PFD_SET; +typedef struct fd_set *LPFD_SET; +typedef struct hostent HOSTENT; +typedef struct hostent *PHOSTENT; +typedef struct hostent *LPHOSTENT; +typedef struct servent SERVENT; +typedef struct servent *PSERVENT; +typedef struct servent *LPSERVENT; +typedef struct protoent PROTOENT; +typedef struct protoent *PPROTOENT; +typedef struct protoent *LPPROTOENT; +typedef struct timeval TIMEVAL; +typedef struct timeval *PTIMEVAL; +typedef struct timeval *LPTIMEVAL; + +#ifdef __cplusplus +} +#endif +/* + * Recent MSDN docs indicate that the MS-specific extensions exported from + * mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are + * declared in mswsock.h. These extensions are not supported on W9x or WinCE. + * However, code using WinSock 1.1 API may expect the declarations and + * associated defines to be in this header. Thus we include mswsock.h here. + * + * When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions + * are automatically routed to mswsock.dll (on platforms with support). + * The WinSock 2 lib, ws2_32.dll, does not contain any references to + * the mswsock extensions. + */ + +#include + +#endif