From 04fca822b1c551c52f2bd3b0176bfc7f7413ba76 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 24 Oct 2012 16:37:45 -0700 Subject: Replace usage of non-standard uint type with uint32_t. --- libnet/include/libnet/libnet-functions.h | 22 +++++++++++----------- libnet/include/libnet/libnet-headers.h | 30 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/libnet/include/libnet/libnet-functions.h b/libnet/include/libnet/libnet-functions.h index e9c0340..914e177 100644 --- a/libnet/include/libnet/libnet-functions.h +++ b/libnet/include/libnet/libnet-functions.h @@ -1406,7 +1406,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); */ libnet_ptag_t libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts, -uint8_t priority, uint dead_int, uint32_t des_rtr, uint32_t bkup_rtr, +uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1422,7 +1422,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); */ libnet_ptag_t libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type, -uint seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, +uint32_t seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1436,7 +1436,7 @@ libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsr(uint type, uint lsid, uint32_t advrtr, +libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1448,7 +1448,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsu(uint num, const uint8_t* payload, uint32_t payload_s, +libnet_build_ospfv2_lsu(uint32_t num, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1468,7 +1468,7 @@ libnet_t *l, libnet_ptag_t ptag); */ libnet_ptag_t libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type, -uint lsid, uint32_t advrtr, uint seqnum, uint16_t sum, uint16_t len, +uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1486,8 +1486,8 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint id, -uint data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload, +libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint32_t id, +uint32_t data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1500,7 +1500,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsa_net(uint32_t nmask, uint rtrid, const uint8_t* payload, +libnet_build_ospfv2_lsa_net(uint32_t nmask, uint32_t rtrid, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1514,7 +1514,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint metric, uint tos, +libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** @@ -1529,8 +1529,8 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @return protocol tag value on success, -1 on error */ libnet_ptag_t -libnet_build_ospfv2_lsa_as(uint32_t nmask, uint metric, uint32_t fwdaddr, -uint tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l, +libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr, +uint32_t tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); /** diff --git a/libnet/include/libnet/libnet-headers.h b/libnet/include/libnet/libnet-headers.h index ebc778e..e1076e9 100644 --- a/libnet/include/libnet/libnet-headers.h +++ b/libnet/include/libnet/libnet-headers.h @@ -1374,7 +1374,7 @@ struct libnet_auth_hdr uint16_t ospf_auth_null; /* NULL */ uint8_t ospf_auth_keyid; /* authentication key ID */ uint8_t ospf_auth_len; /* auth data length */ - uint ospf_auth_seq; /* cryptographic sequence number */ + uint32_t ospf_auth_seq; /* cryptographic sequence number */ }; @@ -1389,7 +1389,7 @@ struct libnet_ospf_hello_hdr uint16_t hello_intrvl; /* num of seconds between routers last packet */ uint8_t hello_opts; /* Options for HELLO packets (look above) */ uint8_t hello_rtr_pri; /* router's priority (if 0, can't be backup) */ - uint hello_dead_intvl; /* # of secs a router is silent till deemed down */ + uint32_t hello_dead_intvl; /* # of secs a router is silent till deemed down */ struct in_addr hello_des_rtr; /* Designated router on the network */ struct in_addr hello_bkup_rtr; /* Backup router */ struct in_addr hello_nbr; /* neighbor router, memcpy more as needed */ @@ -1407,7 +1407,7 @@ struct libnet_dbd_hdr #define LIBNET_DBD_IBI 0x01 /* init */ #define LIBNET_DBD_MBIT 0x02 /* more DBD packets are to come */ #define LIBNET_DBD_MSBIT 0x04 /* If 1, sender is the master in the exchange */ - uint dbd_seq; /* DBD sequence number */ + uint32_t dbd_seq; /* DBD sequence number */ }; @@ -1426,8 +1426,8 @@ struct libnet_dbd_hdr */ struct libnet_lsr_hdr { - uint lsr_type; /* type of LS being requested */ - uint lsr_lsid; /* link state ID */ + uint32_t lsr_type; /* type of LS being requested */ + uint32_t lsr_lsid; /* link state ID */ struct in_addr lsr_adrtr; /* advertising router (memcpy more as needed) */ }; @@ -1437,7 +1437,7 @@ struct libnet_lsr_hdr */ struct libnet_lsu_hdr { - uint lsu_num; /* number of LSAs that will be broadcasted */ + uint32_t lsu_num; /* number of LSAs that will be broadcasted */ }; @@ -1449,9 +1449,9 @@ struct libnet_lsa_hdr uint16_t lsa_age; /* time in seconds since the LSA was originated */ uint8_t lsa_opts; /* look above for OPTS_* */ uint8_t lsa_type; /* look below for LS_TYPE_* */ - uint lsa_id; /* link State ID */ + uint32_t lsa_id; /* link State ID */ struct in_addr lsa_adv; /* router ID of Advertising router */ - uint lsa_seq; /* LSA sequence number to detect old/bad ones */ + uint32_t lsa_seq; /* LSA sequence number to detect old/bad ones */ uint16_t lsa_sum; /* "Fletcher Checksum" of all fields minus age */ uint16_t lsa_len; /* length in bytes including the 20 byte header */ }; @@ -1470,11 +1470,11 @@ struct libnet_rtr_lsa_hdr #define LIBNET_RTR_FLAGS_E 0x0200 /* E bit */ #define LIBNET_RTR_FLAGS_B 0x0400 /* B bit */ uint16_t rtr_num; /* number of links within that packet */ - uint rtr_link_id; /* describes link_data (look below) */ + uint32_t rtr_link_id; /* describes link_data (look below) */ #define LIBNET_LINK_ID_NBR_ID 1 /* Neighbors router ID, also can be 4 */ #define LIBNET_LINK_ID_IP_DES 2 /* IP address of designated router */ #define LIBNET_LINK_ID_SUB 3 /* IP subnet number */ - uint rtr_link_data; /* Depending on link_id, info is here */ + uint32_t rtr_link_data; /* Depending on link_id, info is here */ uint8_t rtr_type; /* Description of router link */ #define LIBNET_RTR_TYPE_PTP 1 /* Point-To-Point */ #define LIBNET_RTR_TYPE_TRANS 2 /* Connection to a "transit network" */ @@ -1491,7 +1491,7 @@ struct libnet_rtr_lsa_hdr struct libnet_net_lsa_hdr { struct in_addr net_nmask; /* Netmask for that network */ - uint net_rtr_id; /* ID of router attached to that network */ + uint32_t net_rtr_id; /* ID of router attached to that network */ }; @@ -1501,8 +1501,8 @@ struct libnet_net_lsa_hdr struct libnet_sum_lsa_hdr { struct in_addr sum_nmask; /* Netmask of destination IP address */ - uint sum_metric; /* Same as in rtr_lsa (&0xfff to use last 24bit */ - uint sum_tos_metric; /* first 8bits are TOS, 24bits are TOS Metric */ + uint32_t sum_metric; /* Same as in rtr_lsa (&0xfff to use last 24bit */ + uint32_t sum_tos_metric; /* first 8bits are TOS, 24bits are TOS Metric */ }; @@ -1513,10 +1513,10 @@ struct libnet_sum_lsa_hdr struct libnet_as_lsa_hdr { struct in_addr as_nmask; /* Netmask for advertised destination */ - uint as_metric; /* May have to set E bit in first 8bits */ + uint32_t as_metric; /* May have to set E bit in first 8bits */ #define LIBNET_AS_E_BIT_ON 0x80000000 /* as_metric */ struct in_addr as_fwd_addr; /* Forwarding address */ - uint as_rte_tag; /* External route tag */ + uint32_t as_rte_tag; /* External route tag */ }; -- cgit v1.2.1 From 6fd90cd70a085a1e3a37d773d233ef6caad743bd Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Thu, 25 Oct 2012 16:28:00 -0700 Subject: Documentation typo, valid should be invalid. --- libnet/include/libnet/libnet-functions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libnet/include/libnet/libnet-functions.h b/libnet/include/libnet/libnet-functions.h index 914e177..5115ccc 100644 --- a/libnet/include/libnet/libnet-functions.h +++ b/libnet/include/libnet/libnet-functions.h @@ -2254,7 +2254,7 @@ libnet_do_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len); * * Finding that protocol requires that the IP header be well-formed... so this * won't work well for invalid packets. But then, what is the valid checksum - * for a valid packet, anyhow? + * for a invalid packet, anyhow? * * This doesn't work well for non-inet checksums, sorry, that's an original design * flaw. pblock_t needs a pointer in it, to a packet assembly function that can be -- cgit v1.2.1 From f492108cf3ec0d3ca56433932de4a43d7b3f5bc0 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Thu, 25 Oct 2012 16:28:53 -0700 Subject: Add build instructions for Visual Studio 2010 --- libnet/win32/README.txt | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/libnet/win32/README.txt b/libnet/win32/README.txt index 074827a..9752083 100644 --- a/libnet/win32/README.txt +++ b/libnet/win32/README.txt @@ -25,7 +25,21 @@ Platform SDK : http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 4. To properly setup the winpcap/libpcap dependencies. - Visual Studio .NET Instructions. +- Visual Studio 2010 Instructions. + + Select libnet project + Right-click, and select Properties + Under Configuration Properties, select VC++ Directories + + Select Include files. + Add the following path + wpdpack\Include + Select Library paths. + Add the following path + wpdpack\Lib + +- Visual Studio .NET Instructions. + Select Tools/Options Under the options dialog, select Projects and then VC++ Directories Select Include files. @@ -35,10 +49,14 @@ Platform SDK : http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Add the following path wpdpack\Lib - Visual C++ 6.0 Instructions +- Visual C++ 6.0 Instructions + You will need to also install the Microsoft Platform SDK in order to have iphlpapi.h + The platform SDK is available here: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ - NOTE: The include order is important, or you will get redefinition errors. Put the platform sdk's directory first. + + NOTE: The include order is important, or you will get redefinition errors. Put the platform sdk's directory first. + Select Tools/Options Select the Directories Tab Select Include files. @@ -51,7 +69,3 @@ Platform SDK : http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Program Files\Microsoft SDK\Lib - - - - -- cgit v1.2.1 From d9de9df515a4305582fbd9880055a9705f11cb64 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Thu, 25 Oct 2012 16:36:48 -0700 Subject: Compiled on win32 with Visual Studio 2010. First pass, builds, don't know if it runs. There are remaining problems with functions modifying const arguments, and some hacks around libnet's use of uint. --- libnet/include/win32/libnet.h | 11 ++ libnet/include/win32/stdint.h | 247 +++++++++++++++++++++++++++++++++++++++++ libnet/src/common.h | 8 +- libnet/src/libnet_link_win32.c | 21 ++-- libnet/src/libnet_pblock.c | 1 + libnet/src/libnet_resolve.c | 11 +- libnet/src/libnet_write.c | 10 +- 7 files changed, 291 insertions(+), 18 deletions(-) create mode 100644 libnet/include/win32/stdint.h diff --git a/libnet/include/win32/libnet.h b/libnet/include/win32/libnet.h index 4f0c10a..0025ffe 100644 --- a/libnet/include/win32/libnet.h +++ b/libnet/include/win32/libnet.h @@ -58,11 +58,13 @@ extern "C" { /* Some UNIX to Win32 conversions */ #define STDOUT_FILENO stdout #define snprintf _snprintf +#define strdup _strdup #define write _write #define open _open #define random rand #define close closesocket #define __func__ __FUNCTION__ +#define _CRT_SECURE_NO_WARNINGS /* __FUNCTION__ available in VC ++ 7.0 (.NET) and greater */ #if _MSC_VER < 1300 @@ -90,6 +92,15 @@ extern "C" { #include #include #include + +#include "stdint.h" + +typedef uint32_t uint; /* FIXME all uses of uint need to be fixed, it not portable */ + +/* Libnet's unnamespaced ICMP6_ macros stomp on the enumerated versions of + these names in the MS headers, so pre-include this header. */ +#include /* From the Microsoft Platform SDK */ + #include "../libnet/libnet-macros.h" #include "../libnet/libnet-headers.h" #include "../libnet/libnet-structures.h" diff --git a/libnet/include/win32/stdint.h b/libnet/include/win32/stdint.h new file mode 100644 index 0000000..d02608a --- /dev/null +++ b/libnet/include/win32/stdint.h @@ -0,0 +1,247 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2008 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. The name of the author may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include + +// For Visual Studio 6 in C++ mode and for many Visual Studio versions when +// compiling for ARM we should wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#ifdef __cplusplus +extern "C" { +#endif +# include +#ifdef __cplusplus +} +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types + +// Visual Studio 6 and Embedded Visual C++ 4 doesn't +// realize that, e.g. char has the same size as __int8 +// so we give up on __intX for them. +#if (_MSC_VER < 1300) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; +#else + typedef signed __int8 int8_t; + typedef signed __int16 int16_t; + typedef signed __int32 int32_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; +#endif +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; + + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef signed __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 signed int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] diff --git a/libnet/src/common.h b/libnet/src/common.h index 1d7b4d3..704f68e 100644 --- a/libnet/src/common.h +++ b/libnet/src/common.h @@ -27,15 +27,17 @@ * */ -#include "../include/config.h" - #if (_WIN32) || (__CYGWIN__) -#include "../include/win32/libnet.h" +/* MSVC warns about snprintf */ +#define _CRT_SECURE_NO_WARNINGS + #include "../include/win32/config.h" +#include "../include/win32/libnet.h" #else +#include "../include/config.h" #include "../include/libnet.h" #include diff --git a/libnet/src/libnet_link_win32.c b/libnet/src/libnet_link_win32.c index f707f4a..390372c 100644 --- a/libnet/src/libnet_link_win32.c +++ b/libnet/src/libnet_link_win32.c @@ -32,10 +32,17 @@ * */ -#include "common.h" +/* MSVC warns about snprintf. This needs to be defined before the declaration of _snprintf is seen. */ +#define _CRT_SECURE_NO_WARNINGS +/* Libnet's unnamespaced ICMP6_ macros stomp on the enumerated versions of + these names in the MS headers, so pre-include this header. */ #include #include /* From the Microsoft Platform SDK */ + +#include "common.h" + +#include #include #include #include @@ -148,8 +155,9 @@ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size) { snprintf(l->err_buf, LIBNET_ERRBUF_SIZE, "%s(): failed to allocate the LPPACKET structure\n", __func__); - return (-1); + return (-1); } + /* FIXME Packet* arguments aren't const, are they actually modified? That would be a problem, we can't modify our input */ PacketInitPacket(lpPacket, packet, size); /* PacketSendPacket returns a BOOLEAN */ @@ -226,15 +234,10 @@ libnet_get_hwaddr(libnet_t *l) mac->ether_addr_octet[i] = OidData->Data[i]; } } - free(OidData); - return(mac); + free(OidData); + return(mac); } -struct hostent *gethostbyname2(const int8_t *name, int af) -{ - /* XXX not implemented */ - return(NULL); -} BYTE * libnet_win32_get_remote_mac(libnet_t *l, DWORD DestIP) diff --git a/libnet/src/libnet_pblock.c b/libnet/src/libnet_pblock.c index 09e880d..a777001 100644 --- a/libnet/src/libnet_pblock.c +++ b/libnet/src/libnet_pblock.c @@ -31,6 +31,7 @@ */ #include "common.h" +#include libnet_pblock_t * libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, uint32_t b_len, uint8_t type) diff --git a/libnet/src/libnet_resolve.c b/libnet/src/libnet_resolve.c index 9a78f1f..d565f4a 100644 --- a/libnet/src/libnet_resolve.c +++ b/libnet/src/libnet_resolve.c @@ -117,7 +117,7 @@ libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name) struct in_addr addr; struct hostent *host_ent; uint32_t m; - uint val; + uint32_t val; int i; if (use_name == LIBNET_RESOLVE) @@ -127,7 +127,14 @@ libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name) if (!(host_ent = gethostbyname(host_name))) { snprintf(l->err_buf, LIBNET_ERRBUF_SIZE, - "%s(): %s\n", __func__, hstrerror(h_errno)); + "%s(): %s\n", __func__, +#if (_WIN32) + "gethostbyname failure" +#else + /* FIXME doesn't exist on windows, needs WSAGetLastError()/FormatMessage */ + hstrerror(h_errno) +#endif + ); /* XXX - this is actually 255.255.255.255 */ return (-1); } diff --git a/libnet/src/libnet_write.c b/libnet/src/libnet_write.c index 6e6d1f3..2417bfd 100644 --- a/libnet/src/libnet_write.c +++ b/libnet/src/libnet_write.c @@ -121,7 +121,7 @@ done: #if defined (__WIN32__) libnet_ptag_t libnet_win32_build_fake_ethernet(uint8_t *dst, uint8_t *src, uint16_t type, -uint8_t *payload, uint32_t payload_s, uint8_t *packet, libnet_t *l, +const uint8_t *payload, uint32_t payload_s, uint8_t *packet, libnet_t *l, libnet_ptag_t ptag) { struct libnet_ethernet_hdr eth_hdr; @@ -150,7 +150,7 @@ libnet_ptag_t ptag) libnet_ptag_t libnet_win32_build_fake_token(uint8_t *dst, uint8_t *src, uint16_t type, -uint8_t *payload, uint32_t payload_s, uint8_t *packet, libnet_t *l, +const uint8_t *payload, uint32_t payload_s, uint8_t *packet, libnet_t *l, libnet_ptag_t ptag) { struct libnet_token_ring_hdr token_ring_hdr; @@ -209,9 +209,11 @@ libnet_win32_write_raw_ipv4(libnet_t *l, const uint8_t *payload, uint32_t payloa "%s(): failed to allocate packet\n", __func__); return (-1); } - + /* FIXME all the return paths below, except the last, leak 'packet' */ + /* we have to do the IP checksum */ - if (libnet_do_checksum(l, payload, IPPROTO_IP, LIBNET_IPV4_H) == -1) + /* FIXME MSVC warning is correct, checksum modifies its input. Fix is to build checksum inside the allocated 'packet' */ + if (libnet_inet_checksum(l, payload, IPPROTO_IP, LIBNET_IPV4_H, payload, payload+payload_s) == -1) { /* error msg set in libnet_do_checksum */ return (-1); -- cgit v1.2.1 From 3b41127aa2c1cfb63635ede6e86b0dc3ff2815e6 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Mon, 29 Oct 2012 11:15:47 -0700 Subject: Convert uses of non-standard uint to uint32_t. --- libnet/include/win32/libnet.h | 2 -- libnet/sample/tftp.c | 2 +- libnet/src/libnet_build_dns.c | 2 +- libnet/src/libnet_build_ospf.c | 8 ++++---- libnet/src/libnet_cq.c | 4 ++-- libnet/src/libnet_crc.c | 2 +- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/libnet/include/win32/libnet.h b/libnet/include/win32/libnet.h index 0025ffe..fe37c91 100644 --- a/libnet/include/win32/libnet.h +++ b/libnet/include/win32/libnet.h @@ -95,8 +95,6 @@ extern "C" { #include "stdint.h" -typedef uint32_t uint; /* FIXME all uses of uint need to be fixed, it not portable */ - /* Libnet's unnamespaced ICMP6_ macros stomp on the enumerated versions of these names in the MS headers, so pre-include this header. */ #include /* From the Microsoft Platform SDK */ diff --git a/libnet/sample/tftp.c b/libnet/sample/tftp.c index f190a86..30d3393 100644 --- a/libnet/sample/tftp.c +++ b/libnet/sample/tftp.c @@ -49,7 +49,7 @@ main(int argc, char *argv[]) char *filename = "/etc/passwd"; char mode[] = "netascii"; u_char *payload = NULL; - uint payload_s = 0; + uint32_t payload_s = 0; printf("libnet 1.1 packet shaping: UDP + payload[raw] == TFTP\n"); diff --git a/libnet/src/libnet_build_dns.c b/libnet/src/libnet_build_dns.c index bb282cc..26c6f3a 100644 --- a/libnet/src/libnet_build_dns.c +++ b/libnet/src/libnet_build_dns.c @@ -41,7 +41,7 @@ libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags, { uint32_t n, h; - uint offset; + uint32_t offset; libnet_pblock_t *p; struct libnet_dnsv4_hdr dns_hdr; diff --git a/libnet/src/libnet_build_ospf.c b/libnet/src/libnet_build_ospf.c index 9806714..8f9fe90 100644 --- a/libnet/src/libnet_build_ospf.c +++ b/libnet/src/libnet_build_ospf.c @@ -201,7 +201,7 @@ bad: libnet_ptag_t -libnet_build_ospfv2_lsr(uint32_t type, uint lsid, uint32_t advrtr, +libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag) { uint32_t n, h; @@ -295,7 +295,7 @@ bad: libnet_ptag_t -libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type, uint lsid, +libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type, uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag) { @@ -460,7 +460,7 @@ bad: libnet_ptag_t -libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint tos, +libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag) { uint32_t n, h; @@ -509,7 +509,7 @@ bad: libnet_ptag_t -libnet_build_ospfv2_lsa_as(uint32_t nmask, uint metric, uint32_t fwdaddr, +libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr, uint32_t tag, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag) { diff --git a/libnet/src/libnet_cq.c b/libnet/src/libnet_cq.c index a4580b8..7b59aba 100644 --- a/libnet/src/libnet_cq.c +++ b/libnet/src/libnet_cq.c @@ -44,7 +44,7 @@ static libnet_cqd_t l_cqd = {0, CQ_LOCK_UNLOCKED, NULL}; static int -set_cq_lock(uint x) +set_cq_lock(uint32_t x) { if (check_cq_lock(x)) { @@ -56,7 +56,7 @@ set_cq_lock(uint x) } static int -clear_cq_lock(uint x) +clear_cq_lock(uint32_t x) { if (!check_cq_lock(x)) { diff --git a/libnet/src/libnet_crc.c b/libnet/src/libnet_crc.c index 886f5dc..85c3056 100644 --- a/libnet/src/libnet_crc.c +++ b/libnet/src/libnet_crc.c @@ -33,7 +33,7 @@ #include "common.h" /* CRC routines based off of sample code in appendix of RFC 2083 */ -static uint crc_table[256] = +static uint32_t crc_table[256] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, -- cgit v1.2.1 From 3604b6cd6cefc274fe0bdc9027b033b4bda400b0 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Mon, 29 Oct 2012 11:41:57 -0700 Subject: visual studio 2010 project files --- libnet/win32/Libnet-2010.sln | 20 +++++ libnet/win32/Libnet.vcxproj | 207 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100755 libnet/win32/Libnet-2010.sln create mode 100755 libnet/win32/Libnet.vcxproj diff --git a/libnet/win32/Libnet-2010.sln b/libnet/win32/Libnet-2010.sln new file mode 100755 index 0000000..5aef8b0 --- /dev/null +++ b/libnet/win32/Libnet-2010.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet", "Libnet.vcxproj", "{2403312B-415B-27DC-E2B0-34A36FDFE2E9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Debug|Win32.ActiveCfg = Debug|Win32 + {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Debug|Win32.Build.0 = Debug|Win32 + {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Release|Win32.ActiveCfg = Release|Win32 + {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/libnet/win32/Libnet.vcxproj b/libnet/win32/Libnet.vcxproj new file mode 100755 index 0000000..74706e6 --- /dev/null +++ b/libnet/win32/Libnet.vcxproj @@ -0,0 +1,207 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + + + + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + + + + + + + + + + + + + .\Release\ + .\Release\ + false + + + .\Debug\ + .\Debug\ + true + $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;..\..\WpdPack\Include + $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;..\..\WpdPack\Lib + + + + MultiThreaded + OnlyExplicitInline + true + true + MaxSpeed + true + Level3 + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBNET_EXPORTS;%(PreprocessorDefinitions) + .\Release\ + .\Release\Libnet.pch + + + .\Release\ + .\Release\ + + + true + NDEBUG;%(PreprocessorDefinitions) + .\Release\Libnet.tlb + true + Win32 + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\Release\Libnet.bsc + + + true + true + Console + Release/Libnet-1.1.1.dll + .\Release\Libnet-1.1.1.lib + .\libnet_dll.def + + + + + MultiThreadedDebug + Default + false + Disabled + true + Level3 + true + EditAndContinue + WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBNET_EXPORTS;%(PreprocessorDefinitions) + .\Debug\ + .\Debug\Libnet.pch + + + .\Debug\ + .\Debug\ + EnableFastChecks + + + true + _DEBUG;%(PreprocessorDefinitions) + .\Debug\Libnet.tlb + true + Win32 + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\Debug\Libnet.bsc + + + true + true + true + Console + .\Debug\Libnet.dll + .\Debug\Libnet.lib + .\libnet_dll.def + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.1 From 0c8e5e8a80dee9554b4669429a08b88e174ec396 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Mon, 29 Oct 2012 13:31:49 -0700 Subject: Libnet.vcxproj file gained a ProjectGUID property. Hm. --- libnet/win32/Libnet.vcxproj | 1 + 1 file changed, 1 insertion(+) diff --git a/libnet/win32/Libnet.vcxproj b/libnet/win32/Libnet.vcxproj index 74706e6..7d17e57 100755 --- a/libnet/win32/Libnet.vcxproj +++ b/libnet/win32/Libnet.vcxproj @@ -13,6 +13,7 @@ + {2403312B-415B-27DC-E2B0-34A36FDFE2E9} -- cgit v1.2.1 From 26c12d203cf4be13fba4b886a78632a8bef77c68 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Tue, 30 Oct 2012 12:45:11 -0700 Subject: Don't need iphlpapi.h included. --- libnet/include/win32/libnet.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libnet/include/win32/libnet.h b/libnet/include/win32/libnet.h index fe37c91..a8704ff 100644 --- a/libnet/include/win32/libnet.h +++ b/libnet/include/win32/libnet.h @@ -55,6 +55,9 @@ extern "C" { #define LIBNET_LIL_ENDIAN 1 #define HAVE_CONFIG_H 1 +/* TODO Definitions and includes below should be in a private header, libnet src needs them, libnet + library users don't (and they have negative side effects). + */ /* Some UNIX to Win32 conversions */ #define STDOUT_FILENO stdout #define snprintf _snprintf @@ -64,7 +67,9 @@ extern "C" { #define random rand #define close closesocket #define __func__ __FUNCTION__ +#ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS +#endif /* __FUNCTION__ available in VC ++ 7.0 (.NET) and greater */ #if _MSC_VER < 1300 @@ -95,9 +100,6 @@ extern "C" { #include "stdint.h" -/* Libnet's unnamespaced ICMP6_ macros stomp on the enumerated versions of - these names in the MS headers, so pre-include this header. */ -#include /* From the Microsoft Platform SDK */ #include "../libnet/libnet-macros.h" #include "../libnet/libnet-headers.h" -- cgit v1.2.1 From b7bbcd557cb901e16f41f89a889627b96ecbdb59 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Tue, 30 Oct 2012 12:46:05 -0700 Subject: ignore visual studio output artifacts --- libnet/win32/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 libnet/win32/.gitignore diff --git a/libnet/win32/.gitignore b/libnet/win32/.gitignore new file mode 100644 index 0000000..7514aff --- /dev/null +++ b/libnet/win32/.gitignore @@ -0,0 +1,3 @@ +*.suo +*.user +Debug -- cgit v1.2.1 From c24f52acbfa05a785fdd1c0a68b043b9af8ed124 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Tue, 30 Oct 2012 13:14:57 -0700 Subject: Build lua binding on win32. --- .gitignore | 4 ++++ lua/msvcbuild.bat | 20 ++++++++++++++++++++ lua/net.c | 10 ++++++++++ 3 files changed, 34 insertions(+) create mode 100644 lua/msvcbuild.bat diff --git a/.gitignore b/.gitignore index 73d2906..dd31b2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,12 @@ *.a +*.dll +*.exp *.la +*.lib *.lo *.loT *.o +*.obj *.out.dSYM *.so.dSYM *~ diff --git a/lua/msvcbuild.bat b/lua/msvcbuild.bat new file mode 100644 index 0000000..b03ba07 --- /dev/null +++ b/lua/msvcbuild.bat @@ -0,0 +1,20 @@ +@rem Script to build Lua under "Visual Studio .NET Command Prompt". +@rem Dependencies are: +@rem Lua +@rem winpcap, specifically, the winpcap developer pack +@rem dnet, Dug Song's net library, aka libdumbnet + +@setlocal +@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE +@set MYLINK=link /nologo +@set MYMT=mt /nologo + +@set LUA=..\..\lua-5.1\src +@set WINPCAP=..\..\WpdPack +@set DNET=..\..\libdnet-1.11-win32 + +%MYCOMPILE% /I..\libnet\include\win32 /I..\libnet\include /I%LUA% /I%WINPCAP%\Include /I%DNET%\include *.c +%MYLINK% /DLL /libpath:%WINPCAP%\Lib /out:net.dll *.obj %LUA%\lua51.lib ..\libnet\win32\Debug\Libnet.lib %DNET%\lib\dnet.lib +if exist net.dll.manifest^ + %MYMT% -manifest net.dll.manifest -outputresource:net.dll;2 + diff --git a/lua/net.c b/lua/net.c index 48759ec..c009122 100644 --- a/lua/net.c +++ b/lua/net.c @@ -36,6 +36,9 @@ THE POSSIBILITY OF SUCH DAMAGE. #include "libnet_decode.h" #include + +#define LUA_BUILD_AS_DLL /* To pull in LUA_API definitions for modules */ + #include "lua.h" #include "lauxlib.h" #include "lualib.h" @@ -1294,6 +1297,8 @@ static int lnet_chksum(lua_State *L) return 1; } +#ifndef _WIN32 +/* TODO see http://stackoverflow.com/questions/7827062/is-there-a-windows-equivalent-of-nanosleep */ /*- -- remaining = net.nanosleep(seconds) @@ -1324,6 +1329,7 @@ static int lnet_nanosleep(lua_State *L) } } +/* TODO use GetSystemTime or GetSystemTimeAsFileTime */ /*- t = net.gettimeofday() @@ -1343,6 +1349,8 @@ static int lnet_gettimeofday(lua_State *L) } } +#endif + /*- -- net.init(injection, device) @@ -1415,8 +1423,10 @@ static const luaL_reg net[] = {"pton", lnet_pton}, {"htons", lnet_htons}, {"checksum", lnet_chksum}, +#ifndef _WIN32 {"nanosleep", lnet_nanosleep}, {"gettimeofday", lnet_gettimeofday}, +#endif {"init", lnet_init}, {NULL, NULL} }; -- cgit v1.2.1 From 34376b0ca1cb2f65e43c4579fba38ceeebb1ae95 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 10:38:09 -0700 Subject: Note about libnet_get_prand being secure only on windows. --- libnet/src/libnet_prand.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libnet/src/libnet_prand.c b/libnet/src/libnet_prand.c index 4fb7329..b5da4c6 100644 --- a/libnet/src/libnet_prand.c +++ b/libnet/src/libnet_prand.c @@ -62,7 +62,11 @@ libnet_seed_prand(libnet_t *l) return (1); } - +/* FIXME this code makes no sense. On unix we use random(), which + * is intended to have no security, and under win32 we use cryptographically + * strong entropy source? If necessary, why aren't we using /dev/random + * on unix? What's going on here? + */ uint32_t libnet_get_prand(int mod) { -- cgit v1.2.1 From 22b56165c7edabc6c44378402c0a9305f0d0a362 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 10:40:39 -0700 Subject: Use LIBNET_API on public functions, instead of an export file. --- libnet/include/libnet.h.in | 4 + libnet/include/libnet/libnet-functions.h | 146 ++++++++++++++++++++++++++++++- libnet/include/win32/libnet.h | 17 ++-- 3 files changed, 157 insertions(+), 10 deletions(-) diff --git a/libnet/include/libnet.h.in b/libnet/include/libnet.h.in index 8992e6f..04dbd64 100644 --- a/libnet/include/libnet.h.in +++ b/libnet/include/libnet.h.in @@ -111,6 +111,10 @@ extern "C" { #define @ENDIANESS@ 1 +#ifndef LIBNET_API +#define LIBNET_API +#endif + #include "./libnet/libnet-types.h" #include "./libnet/libnet-macros.h" #include "./libnet/libnet-headers.h" diff --git a/libnet/include/libnet/libnet-functions.h b/libnet/include/libnet/libnet-functions.h index 5115ccc..c067798 100644 --- a/libnet/include/libnet/libnet-functions.h +++ b/libnet/include/libnet/libnet-functions.h @@ -60,6 +60,7 @@ * @param err_buf will contain an error message on failure * @return libnet context ready for use or NULL on error. */ +LIBNET_API libnet_t * libnet_init(int injection_type, const char *device, char *err_buf); @@ -68,6 +69,7 @@ libnet_init(int injection_type, const char *device, char *err_buf); * interface and frees all internal memory structures associated with l. * @param l pointer to a libnet context */ +LIBNET_API void libnet_destroy(libnet_t *l); @@ -77,6 +79,7 @@ libnet_destroy(libnet_t *l); * a different type using the same context. * @param l pointer to a libnet context */ +LIBNET_API void libnet_clear_packet(libnet_t *l); @@ -86,6 +89,7 @@ libnet_clear_packet(libnet_t *l); * @param l pointer to a libnet context * @param ls pointer to a libnet statistics structure */ +LIBNET_API void libnet_stats(libnet_t *l, struct libnet_stats *ls); @@ -94,6 +98,7 @@ libnet_stats(libnet_t *l, struct libnet_stats *ls); * @param l pointer to a libnet context * @return the file number of the file descriptor used for packet injection */ +LIBNET_API int libnet_getfd(libnet_t *l); @@ -103,6 +108,7 @@ libnet_getfd(libnet_t *l); * @return the canonical name of the device used for packet injection. Note * it can be NULL without being an error. */ +LIBNET_API const char * libnet_getdevice(libnet_t *l); @@ -114,6 +120,7 @@ libnet_getdevice(libnet_t *l); * @param ptag the ptag reference number * @return a pointer to the pblock buffer or NULL on error */ +LIBNET_API uint8_t * libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag); @@ -125,6 +132,7 @@ libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag); * @param ptag the ptag reference number * @return the size of the pblock buffer */ +LIBNET_API uint32_t libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag); @@ -135,6 +143,7 @@ libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return an error string or NULL if no error has occured */ +LIBNET_API char * libnet_geterror(libnet_t *l); @@ -144,6 +153,7 @@ libnet_geterror(libnet_t *l); * @param l pointer to a libnet context * @return the size of the packet in l */ +LIBNET_API uint32_t libnet_getpacket_size(libnet_t *l); @@ -152,6 +162,7 @@ libnet_getpacket_size(libnet_t *l); * @param l pointer to a libnet context * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_seed_prand(libnet_t *l); @@ -168,6 +179,7 @@ libnet_seed_prand(libnet_t *l); * @param mod one the of LIBNET_PR* constants * @return 1 on success, -1 on failure */ +LIBNET_API uint32_t libnet_get_prand(int mod); @@ -192,6 +204,7 @@ libnet_get_prand(int mod); * @param mode LIBNET_ON or LIBNET_OFF * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode); @@ -207,6 +220,7 @@ libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode); * @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE * @return a pointer to presentation format string */ +LIBNET_API char * libnet_addr2name4(uint32_t in, uint8_t use_name); @@ -223,6 +237,7 @@ libnet_addr2name4(uint32_t in, uint8_t use_name); * @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE * @return network byte ordered IPv4 address or -1 (2^32 - 1) on error */ +LIBNET_API uint32_t libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name); @@ -233,6 +248,7 @@ extern const struct libnet_in6_addr in6addr_error; * @param addr address to check * @return 1 if addr is in6addr_error, 0 if it is not */ +LIBNET_API int libnet_in6_is_error(struct libnet_in6_addr addr); @@ -249,12 +265,14 @@ libnet_in6_is_error(struct libnet_in6_addr addr); * @param use_name LIBNET_RESOLVE or LIBNET_DONT_RESOLVE * @return network byte ordered IPv6 address structure */ +LIBNET_API struct libnet_in6_addr libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name); /** * Should document this baby right here. */ +LIBNET_API void libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name, char *host_name, int host_name_len); @@ -274,6 +292,7 @@ char *host_name, int host_name_len); * @param token_list string containing the port list primitive * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list); @@ -288,6 +307,7 @@ libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list); * @param eport will contain the ending port number or 0 * @return 1 on success, 0 if empty, -1 on failure */ +LIBNET_API int libnet_plist_chain_next_pair(libnet_plist_t *plist, uint16_t *bport, uint16_t *eport); @@ -298,6 +318,7 @@ uint16_t *eport); * @param plist previously created portlist * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_plist_chain_dump(libnet_plist_t *plist); @@ -309,6 +330,7 @@ libnet_plist_chain_dump(libnet_plist_t *plist); * @return a printable string containing the port list contents on success * NULL on error */ +LIBNET_API char * libnet_plist_chain_dump_string(libnet_plist_t *plist); @@ -317,6 +339,7 @@ libnet_plist_chain_dump_string(libnet_plist_t *plist); * @param plist previously created portlist * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_plist_chain_free(libnet_plist_t *plist); @@ -407,6 +430,7 @@ libnet_plist_chain_free(libnet_plist_t *plist); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_802_1q(const uint8_t *dst, const uint8_t *src, uint16_t tpi, uint8_t priority, uint8_t cfi, uint16_t vlan_id, uint16_t len_proto, @@ -423,6 +447,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_802_1x(uint8_t eap_ver, uint8_t eap_type, uint16_t length, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -438,6 +463,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_802_2(uint8_t dsap, uint8_t ssap, uint8_t control, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -455,6 +481,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_802_2snap(uint8_t dsap, uint8_t ssap, uint8_t control, uint8_t *oui, uint16_t type, const uint8_t* payload, uint32_t payload_s, @@ -475,6 +502,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_802_3(const uint8_t *dst, const uint8_t *src, uint16_t len, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -494,6 +522,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ethernet(const uint8_t *dst, const uint8_t *src, uint16_t type, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -509,6 +538,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l); @@ -528,6 +558,7 @@ libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_fddi(uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t* payload, @@ -545,6 +576,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_fddi(uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l); @@ -568,6 +600,7 @@ uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_arp(uint16_t hrd, uint16_t pro, uint8_t hln, uint8_t pln, uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa, @@ -585,6 +618,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_arp(uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, uint8_t *tpa, libnet_t *l); @@ -606,6 +640,7 @@ uint8_t *tpa, libnet_t *l); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_tcp(uint16_t sp, uint16_t dp, uint32_t seq, uint32_t ack, uint8_t control, uint16_t win, uint16_t sum, uint16_t urg, uint16_t len, @@ -626,6 +661,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_tcp_options(const uint8_t *options, uint32_t options_s, libnet_t *l, libnet_ptag_t ptag); @@ -642,6 +678,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_udp(uint16_t sp, uint16_t dp, uint16_t len, uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -665,6 +702,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_cdp(uint8_t version, uint8_t ttl, uint16_t sum, uint16_t type, uint16_t value_s, const uint8_t *value, const uint8_t* payload, uint32_t payload_s, @@ -684,6 +722,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_echo(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, const uint8_t* payload, uint32_t payload_s, @@ -704,6 +743,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_mask(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint32_t mask, const uint8_t* payload, @@ -722,6 +762,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_unreach(uint8_t type, uint8_t code, uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -740,6 +781,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_redirect(uint8_t type, uint8_t code, uint16_t sum, uint32_t gateway, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -759,6 +801,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_timeexceed(uint8_t type, uint8_t code, uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -780,6 +823,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime, @@ -799,6 +843,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -816,6 +861,7 @@ libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -834,6 +880,7 @@ uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code, uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag); @@ -853,6 +900,7 @@ libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code, * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code, uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_t *payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag); @@ -866,6 +914,7 @@ libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code, * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option, uint32_t option_s, libnet_t* l, libnet_ptag_t ptag); @@ -883,6 +932,7 @@ libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option, * * @note 'reserved' was previously called 'code', which it is not, in any IGMP version. */ +LIBNET_API libnet_ptag_t libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -906,6 +956,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv4(uint16_t ip_len, uint8_t tos, uint16_t id, uint16_t frag, uint8_t ttl, uint8_t prot, uint16_t sum, uint32_t src, uint32_t dst, @@ -929,6 +980,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv4_options(const uint8_t *options, uint32_t options_s, libnet_t *l, libnet_ptag_t ptag); @@ -946,6 +998,7 @@ libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l); @@ -964,6 +1017,7 @@ libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv6(uint8_t tc, uint32_t fl, uint16_t len, uint8_t nh, uint8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, @@ -981,6 +1035,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv6_frag(uint8_t nh, uint8_t reserved, uint16_t frag, uint32_t id, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1003,6 +1058,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv6_routing(uint8_t nh, uint8_t len, uint8_t rtype, uint8_t segments, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1021,6 +1077,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv6_destopts(uint8_t nh, uint8_t len, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1039,6 +1096,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1059,6 +1117,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst, libnet_t *l, libnet_ptag_t ptag); @@ -1080,6 +1139,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_isl(uint8_t *dhost, uint8_t type, uint8_t user, uint8_t *shost, uint16_t len, const uint8_t *snap, uint16_t vid, @@ -1097,6 +1157,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipsec_esp_hdr(uint32_t spi, uint32_t seq, uint32_t iv, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1112,6 +1173,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipsec_esp_ftr(uint8_t len, uint8_t nh, int8_t *auth, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1130,6 +1192,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ipsec_ah(uint8_t nh, uint8_t len, uint16_t res, uint32_t spi, uint32_t seq, uint32_t auth, const uint8_t* payload, @@ -1151,6 +1214,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags, uint16_t num_q, uint16_t num_anws_rr, uint16_t num_auth_rr, @@ -1174,6 +1238,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_rip(uint8_t cmd, uint8_t version, uint16_t rd, uint16_t af, uint16_t rt, uint32_t addr, uint32_t mask, uint32_t next_hop, @@ -1202,6 +1267,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_rpc_call(uint32_t rm, uint32_t xid, uint32_t prog_num, uint32_t prog_vers, uint32_t procedure, uint32_t cflavor, uint32_t clength, @@ -1230,6 +1296,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_stp_conf(uint16_t id, uint8_t version, uint8_t bpdu_type, uint8_t flags, const uint8_t *root_id, uint32_t root_pc, const uint8_t *bridge_id, @@ -1250,6 +1317,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_stp_tcn(uint16_t id, uint8_t version, uint8_t bpdu_type, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1271,6 +1339,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, @@ -1289,6 +1358,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, @@ -1313,6 +1383,7 @@ libnet_t *l); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_vrrp(uint8_t version, uint8_t type, uint8_t vrouter_id, uint8_t priority, uint8_t ip_count, uint8_t auth_type, uint8_t advert_int, @@ -1331,6 +1402,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_mpls(uint32_t label, uint8_t experimental, uint8_t bos, uint8_t ttl, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1363,6 +1435,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ntp(uint8_t leap_indicator, uint8_t version, uint8_t mode, uint8_t stratum, uint8_t poll, uint8_t precision, uint16_t delay_int, @@ -1385,6 +1458,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2(uint16_t len, uint8_t type, uint32_t rtr_id, uint32_t area_id, uint16_t sum, uint16_t autype, const uint8_t* payload, @@ -1404,6 +1478,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts, uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, @@ -1420,6 +1495,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type, uint32_t seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1435,6 +1511,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1447,6 +1524,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsu(uint32_t num, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1466,6 +1544,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type, uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len, @@ -1485,6 +1564,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint32_t id, uint32_t data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload, @@ -1499,6 +1579,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_net(uint32_t nmask, uint32_t rtrid, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1513,6 +1594,7 @@ uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1528,6 +1610,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr, uint32_t tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1544,6 +1627,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_data(const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1569,6 +1653,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, @@ -1597,6 +1682,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, @@ -1608,6 +1694,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param fv see libnet_build_gre(). * @return size, see libnet_build_gre(). */ +LIBNET_API uint32_t libnet_getgre_length(uint16_t fv); @@ -1633,6 +1720,7 @@ libnet_getgre_length(uint16_t fv); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_gre(uint16_t fv, uint16_t type, uint16_t sum, uint16_t offset, uint32_t key, uint32_t seq, uint16_t len, @@ -1659,6 +1747,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_egre(uint16_t fv, uint16_t type, uint16_t sum, uint16_t offset, uint32_t key, uint32_t seq, uint16_t len, @@ -1675,6 +1764,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_gre_sre(uint16_t af, uint8_t offset, uint8_t length, uint8_t *routing, const uint8_t* payload, uint32_t payload_s, libnet_t *l, @@ -1685,6 +1775,7 @@ libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag); @@ -1709,6 +1800,7 @@ libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_bgp4_header(uint8_t marker[LIBNET_BGP4_MARKER_SIZE], uint16_t len, uint8_t type, const uint8_t* payload, uint32_t payload_s, @@ -1730,6 +1822,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_bgp4_open(uint8_t version, uint16_t src_as, uint16_t hold_time, uint32_t bgp_id, uint8_t opt_len, const uint8_t* payload, uint32_t payload_s, @@ -1750,6 +1843,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_bgp4_update(uint16_t unfeasible_rt_len, const uint8_t *withdrawn_rt, uint16_t total_path_attr_len, const uint8_t *path_attributes, uint16_t info_len, @@ -1768,6 +1862,7 @@ libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_bgp4_notification(uint8_t err_code, uint8_t err_subcode, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1793,6 +1888,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_sebek(uint32_t magic, uint16_t version, uint16_t type, uint32_t counter, uint32_t time_sec, uint32_t time_usec, uint32_t pid, @@ -1818,6 +1914,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_hsrp(uint8_t version, uint8_t opcode, uint8_t state, uint8_t hello_time, uint8_t hold_time, uint8_t priority, uint8_t group, @@ -1838,6 +1935,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param ptag protocol tag to modify an existing header, 0 to build a new one * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_build_link(const uint8_t *dst, const uint8_t *src, const uint8_t *oui, uint16_t type, const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); @@ -1852,6 +1950,7 @@ const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag); * @param l pointer to a libnet context * @return protocol tag value on success, -1 on error */ +LIBNET_API libnet_ptag_t libnet_autobuild_link(const uint8_t *dst, const uint8_t *oui, uint16_t type, libnet_t *l); @@ -1868,6 +1967,7 @@ libnet_t *l); * @param l pointer to a libnet context * @return the number of bytes written, -1 on error */ +LIBNET_API int libnet_write(libnet_t *l); @@ -1879,6 +1979,7 @@ libnet_write(libnet_t *l); * @param l pointer to a libnet context * @return a big endian IP address suitable for use in a libnet_build function or -1 */ +LIBNET_API uint32_t libnet_get_ipaddr4(libnet_t *l); @@ -1892,6 +1993,7 @@ libnet_get_ipaddr4(libnet_t *l); * @param l pointer to a libnet context * @return well, nothing yet */ +LIBNET_API struct libnet_in6_addr libnet_get_ipaddr6(libnet_t *l); @@ -1903,6 +2005,7 @@ libnet_get_ipaddr6(libnet_t *l); * @param l pointer to a libnet context * @return a pointer to the MAC address or NULL */ +LIBNET_API struct libnet_ether_addr * libnet_get_hwaddr(libnet_t *l); @@ -1915,6 +2018,7 @@ libnet_get_hwaddr(libnet_t *l); * @param len the resulting size of the returned byte string * @return a byte string or NULL on failure */ +LIBNET_API uint8_t * libnet_hex_aton(const char *s, int *len); @@ -1922,6 +2026,7 @@ libnet_hex_aton(const char *s, int *len); * Returns the version of libnet. * @return the libnet version */ +LIBNET_API const char * libnet_version(void); @@ -1940,6 +2045,7 @@ libnet_version(void); * @param packet_s will contain the packet size * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s); @@ -1955,6 +2061,7 @@ libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s); * @param header_s will contain the header size * @return 1 on success, -1 on failure */ +LIBNET_API int libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, uint8_t **header, uint32_t *header_s); @@ -1972,6 +2079,7 @@ uint32_t *header_s); * @param packet_s the size of the packet * @return the number of bytes written, or -1 on failure */ +LIBNET_API int libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s); @@ -1988,6 +2096,7 @@ libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s); * @param packet_s the size of the packet * @return the number of bytes written, or -1 on failure */ +LIBNET_API int libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s); @@ -1997,6 +2106,7 @@ libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s) * @param l pointer to a libnet context * @param packet a pointer to the packet to free */ +LIBNET_API void libnet_adv_free_packet(libnet_t *l, uint8_t *packet); @@ -2030,6 +2140,7 @@ libnet_cq_add(libnet_t *l, char *label); * @param l pointer to a libnet context * @return the pointer to the removed libnet context, NULL on failure */ +LIBNET_API libnet_t * libnet_cq_remove(libnet_t *l); @@ -2043,7 +2154,8 @@ libnet_cq_remove(libnet_t *l); * will fail. * @param label canonical name of the context to remove * @return the pointer to the removed libnet context, NULL on failure - */ + */ +LIBNET_API libnet_t * libnet_cq_remove_by_label(char *label); @@ -2052,7 +2164,8 @@ libnet_cq_remove_by_label(char *label); * Returns the canonical label associated with the context. * @param l pointer to a libnet context * @return pointer to the libnet context's label - */ + */ +LIBNET_API const char * libnet_cq_getlabel(libnet_t *l); @@ -2062,6 +2175,7 @@ libnet_cq_getlabel(libnet_t *l); * @param label canonical label of the libnet context to retrieve * @return the expected libnet context, NULL on failure */ +LIBNET_API libnet_t * libnet_cq_find_by_label(char *label); @@ -2070,6 +2184,7 @@ libnet_cq_find_by_label(char *label); * Destroys the entire context queue, calling libnet_destroy() on each * member context. */ +LIBNET_API void libnet_cq_destroy(void); @@ -2092,6 +2207,7 @@ libnet_cq_destroy(void); * in a single loop. * @return the head of the context queue */ +LIBNET_API libnet_t * libnet_cq_head(void); @@ -2100,6 +2216,7 @@ libnet_cq_head(void); * Check whether the iterator is at the last context in the queue. * @return 1 if at the end of the context queue, 0 otherwise */ +LIBNET_API int libnet_cq_last(void); @@ -2108,6 +2225,7 @@ libnet_cq_last(void); * Get next context from the context queue. * @return the next context from the context queue */ +LIBNET_API libnet_t * libnet_cq_next(void); @@ -2116,12 +2234,14 @@ libnet_cq_next(void); * Function returns the number of libnet contexts that are in the queue. * @return the number of libnet contexts currently in the queue */ +LIBNET_API uint32_t libnet_cq_size(void); /** * [Context Queue] */ +LIBNET_API uint32_t libnet_cq_end_loop(void); @@ -2130,6 +2250,7 @@ libnet_cq_end_loop(void); * Prints the contents of the given context. * @param l pointer to a libnet context */ +LIBNET_API void libnet_diag_dump_context(libnet_t *l); @@ -2138,6 +2259,7 @@ libnet_diag_dump_context(libnet_t *l); * Prints the contents of every pblock. * @param l pointer to a libnet context */ +LIBNET_API void libnet_diag_dump_pblock(libnet_t *l); @@ -2147,6 +2269,7 @@ libnet_diag_dump_pblock(libnet_t *l); * @param type pblock type * @return a string representing the pblock type type or "unknown" for an unknown value */ +LIBNET_API char * libnet_diag_dump_pblock_type(uint8_t type); @@ -2169,18 +2292,21 @@ libnet_diag_dump_hex(const uint8_t *packet, uint32_t len, int swap, FILE *stream /* * [Internal] */ +LIBNET_API int libnet_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t size); /* * [Internal] */ +LIBNET_API int libnet_write_raw_ipv6(libnet_t *l, const uint8_t *packet, uint32_t size); /* * [Internal] */ +LIBNET_API int libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size); @@ -2201,6 +2327,7 @@ libnet_open_raw4(libnet_t *l); /* * [Internal] */ +LIBNET_API int libnet_close_raw4(libnet_t *l); @@ -2260,24 +2387,28 @@ libnet_do_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len); * flaw. pblock_t needs a pointer in it, to a packet assembly function that can be * called at runtime to do assembly and checksumming. */ +LIBNET_API int libnet_inet_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len, const uint8_t *beg, const uint8_t * end); /* * [Internal] */ +LIBNET_API uint32_t libnet_compute_crc(uint8_t *buf, uint32_t len); /* * [Internal] */ +LIBNET_API uint16_t libnet_ip_check(uint16_t *addr, int len); /* * [Internal] */ +LIBNET_API int libnet_in_cksum(uint16_t *addr, int len); @@ -2288,6 +2419,7 @@ libnet_in_cksum(uint16_t *addr, int len); * function will search the pblock list for the specified protocol block * and return a pointer to it. */ +LIBNET_API libnet_pblock_t * libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, uint32_t b_len, uint8_t type); @@ -2297,6 +2429,7 @@ uint8_t type); * Function creates the pblock list if l->protocol_blocks == NULL or appends * an entry to the doubly linked list. */ +LIBNET_API libnet_pblock_t * libnet_pblock_new(libnet_t *l, uint32_t b_len); @@ -2304,6 +2437,7 @@ libnet_pblock_new(libnet_t *l, uint32_t b_len); * [Internal] * Function swaps two pblocks in memory. */ +LIBNET_API int libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2); @@ -2311,6 +2445,7 @@ libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2); * [Internal] * Function inserts ptag2 before ptag1 in the doubly linked list. */ +LIBNET_API int libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2); @@ -2319,6 +2454,7 @@ libnet_ptag_t ptag2); * [Internal] * Function removes a pblock from context */ +LIBNET_API void libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p); @@ -2328,6 +2464,7 @@ libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p); * ptag with a monotonically increasing variable kept in l. This way each * pblock has a succesively increasing ptag identifier. */ +LIBNET_API libnet_ptag_t libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, uint32_t h, uint8_t type); @@ -2336,6 +2473,7 @@ libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, uint32_t h, uint8_t type); * [Internal] * Function locates a given block by it's ptag. */ +LIBNET_API libnet_pblock_t * libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag); @@ -2343,6 +2481,7 @@ libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag); * [Internal] * Function copies protocol block data over. */ +LIBNET_API int libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint32_t len); @@ -2350,6 +2489,7 @@ libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint32_t * [Internal] * Function sets pblock flags. */ +LIBNET_API void libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags); @@ -2358,6 +2498,7 @@ libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags); * Function returns the protocol number for the protocol block type. If * the type is unknown, the function defaults to returning IPPROTO_IP. */ +LIBNET_API int libnet_pblock_p2p(uint8_t type); @@ -2366,6 +2507,7 @@ libnet_pblock_p2p(uint8_t type); * Function assembles the protocol blocks into a packet, checksums are * calculated if that was requested. */ +LIBNET_API int libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size); diff --git a/libnet/include/win32/libnet.h b/libnet/include/win32/libnet.h index a8704ff..9f3c57f 100644 --- a/libnet/include/win32/libnet.h +++ b/libnet/include/win32/libnet.h @@ -82,7 +82,8 @@ extern "C" { #pragma comment (lib,"packet") /* "@LIBNET_VERSION@" will not work in VC++, so version.h doesn't get populated */ -#define VERSION "1.1.1" +/* FIXME this is not correct, it needs manual updating. */ +#define LIBNET_VERSION "1.1.1" /* To use Win32 native versions */ #define WPCAP 1 @@ -98,14 +99,14 @@ extern "C" { #include #include -#include "stdint.h" +#define LIBNET_API __declspec(dllexport) - -#include "../libnet/libnet-macros.h" -#include "../libnet/libnet-headers.h" -#include "../libnet/libnet-structures.h" -#include "../libnet/libnet-asn1.h" -#include "../libnet/libnet-functions.h" +#include "libnet/stdint.h" +#include "libnet/libnet-macros.h" +#include "libnet/libnet-headers.h" +#include "libnet/libnet-structures.h" +#include "libnet/libnet-asn1.h" +#include "libnet/libnet-functions.h" #ifdef __cplusplus } -- cgit v1.2.1 From 06087af56b4440b55c1af114a1085b07dc711b34 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 10:48:50 -0700 Subject: Use simple batch file to build for win32. The project files are a painful and unmaintainable mess, they are replaced with a batch file, msvcbuild.bat, and the redundant version handling code is removed. --- .gitignore | 1 + libnet/Makefile.am | 2 +- libnet/README.win32 | 14 ++ libnet/configure.in | 4 +- libnet/include/win32/in_systm.h | 77 --------- libnet/include/win32/libnet.h | 6 +- libnet/msvcbuild.bat | 22 +++ libnet/src/libnet_version.c | 12 +- libnet/version.h.in | 7 - libnet/win32/.gitignore | 3 - libnet/win32/Libnet-1.1.1-2002.sln | 77 --------- libnet/win32/Libnet-1.1.1-2003.ncb | Bin 797696 -> 0 bytes libnet/win32/Libnet-1.1.1-2003.sln | 84 --------- libnet/win32/Libnet-1.1.1-2003.suo | Bin 29184 -> 0 bytes libnet/win32/Libnet-1.1.1.vcproj | 311 ---------------------------------- libnet/win32/Libnet-2010.sln | 20 --- libnet/win32/Libnet-latest.ncb | Bin 936960 -> 0 bytes libnet/win32/Libnet-latest.opt | Bin 49664 -> 0 bytes libnet/win32/Libnet-latest.sln | 77 --------- libnet/win32/Libnet-latest.suo | Bin 44032 -> 0 bytes libnet/win32/Libnet-latest.vcproj | 311 ---------------------------------- libnet/win32/Libnet.dsp | 337 ------------------------------------- libnet/win32/Libnet.dsw | 32 ---- libnet/win32/Libnet.vcxproj | 208 ----------------------- libnet/win32/Makefile.am | 6 - libnet/win32/README.txt | 71 -------- libnet/win32/libnet_dll.def | 164 ------------------ lua/dnet.h.win32 | 1 + lua/msvcbuild.bat | 7 +- lua/net.c | 3 +- 30 files changed, 53 insertions(+), 1804 deletions(-) create mode 100644 libnet/README.win32 delete mode 100644 libnet/include/win32/in_systm.h create mode 100644 libnet/msvcbuild.bat delete mode 100644 libnet/version.h.in delete mode 100644 libnet/win32/.gitignore delete mode 100644 libnet/win32/Libnet-1.1.1-2002.sln delete mode 100644 libnet/win32/Libnet-1.1.1-2003.ncb delete mode 100644 libnet/win32/Libnet-1.1.1-2003.sln delete mode 100644 libnet/win32/Libnet-1.1.1-2003.suo delete mode 100644 libnet/win32/Libnet-1.1.1.vcproj delete mode 100755 libnet/win32/Libnet-2010.sln delete mode 100644 libnet/win32/Libnet-latest.ncb delete mode 100644 libnet/win32/Libnet-latest.opt delete mode 100644 libnet/win32/Libnet-latest.sln delete mode 100644 libnet/win32/Libnet-latest.suo delete mode 100644 libnet/win32/Libnet-latest.vcproj delete mode 100644 libnet/win32/Libnet.dsp delete mode 100644 libnet/win32/Libnet.dsw delete mode 100755 libnet/win32/Libnet.vcxproj delete mode 100644 libnet/win32/Makefile.am delete mode 100644 libnet/win32/README.txt delete mode 100644 libnet/win32/libnet_dll.def create mode 100644 lua/dnet.h.win32 diff --git a/.gitignore b/.gitignore index dd31b2e..7ebddb7 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ libnet/doc/html/*.html libnet/doc/html/*.png libnet/doc/man/man3/*.3 libnet/include/libnet.h +libnet/include/libnet/stdint.h libnet/m4 libnet/sample/arp libnet/sample/bgp4_hdr diff --git a/libnet/Makefile.am b/libnet/Makefile.am index 8ebc25c..2e628a1 100644 --- a/libnet/Makefile.am +++ b/libnet/Makefile.am @@ -8,7 +8,7 @@ include $(top_srcdir)/Makefile.am.common -SUBDIRS = include src sample doc win32 +SUBDIRS = include src sample doc EXTRA_DIST = Makefile.am.common diff --git a/libnet/README.win32 b/libnet/README.win32 new file mode 100644 index 0000000..4f22f0e --- /dev/null +++ b/libnet/README.win32 @@ -0,0 +1,14 @@ +Run msvcbuild.bat to build for Win32 with MSVC. + +The batch file depends on the MSVC build environment being set (PATH, etc.), +this can be done with Visual Studio's vsvars32.bat, or by starting a Visual +Studio shell. + +Also, the batch file hard-codes the location of the WinPcap developer's tools, +you may have to modify it for your environment, or install the developer's +pack in the expected location. + +For Visual Studio 2010, the shell can be found at: + + Program Files >> Microsoft Visual Studio 2010 >> Visual Studio Tools >> Visual Studio Command Prompt + diff --git a/libnet/configure.in b/libnet/configure.in index 9b160ff..0a3edca 100644 --- a/libnet/configure.in +++ b/libnet/configure.in @@ -300,10 +300,10 @@ AC_ARG_ENABLE([samples], AM_CONDITIONAL([INSTALL_SAMPLES], [test x"$enable_samples" = xyes]) -AC_OUTPUT(Makefile src/Makefile win32/Makefile \ +AC_OUTPUT(Makefile src/Makefile \ include/Makefile \ include/libnet/Makefile include/win32/Makefile \ sample/Makefile doc/Makefile \ doc/man/Makefile doc/man/man3/Makefile doc/html/Makefile \ - version.h include/libnet.h libnet-config) + include/libnet.h libnet-config) dnl EOF diff --git a/libnet/include/win32/in_systm.h b/libnet/include/win32/in_systm.h deleted file mode 100644 index b0ee1a2..0000000 --- a/libnet/include/win32/in_systm.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)in_systm.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/netinet/in_systm.h,v 1.9 1999/12/29 04:41:00 peter Exp $ - */ - -#ifdef _WIN32 -#ifndef _NETINET_IN_SYSTM_H_ -#define _NETINET_IN_SYSTM_H_ - -typedef unsigned char u_int8_t; -typedef unsigned short u_int16_t; -typedef unsigned int u_int32_t; -typedef unsigned __int64 u_int64_t; - -typedef __int64 int64_t; -typedef int64_t rlim_t; - - -typedef u_int32_t in_addr_t; -typedef u_int32_t in_port_t; - -/* - * Miscellaneous internetwork - * definitions for kernel. - */ - -/* - * Network types. - * - * Internally the system keeps counters in the headers with the bytes - * swapped so that VAX instructions will work on them. It reverses - * the bytes before transmission at each protocol level. The n_ types - * represent the types with the bytes in ``high-ender'' order. - */ -typedef u_int16_t n_short; /* short as received from the net */ -typedef u_int32_t n_long; /* long as received from the net */ - -typedef u_int32_t n_time; /* ms since 00:00 GMT, byte rev */ - -#ifdef _KERNEL -n_time iptime __P((void)); -#endif - -#endif - -#endif diff --git a/libnet/include/win32/libnet.h b/libnet/include/win32/libnet.h index 9f3c57f..9b8cc77 100644 --- a/libnet/include/win32/libnet.h +++ b/libnet/include/win32/libnet.h @@ -37,7 +37,6 @@ #include #include #include -#include "in_systm.h" #include "pcap.h" @@ -81,9 +80,8 @@ extern "C" { #pragma comment (lib,"wpcap") /* Winpcap */ #pragma comment (lib,"packet") -/* "@LIBNET_VERSION@" will not work in VC++, so version.h doesn't get populated */ -/* FIXME this is not correct, it needs manual updating. */ -#define LIBNET_VERSION "1.1.1" +/* FIXME this needs manual update during release packaging. */ +#define LIBNET_VERSION "1.1.6" /* To use Win32 native versions */ #define WPCAP 1 diff --git a/libnet/msvcbuild.bat b/libnet/msvcbuild.bat new file mode 100644 index 0000000..e2d62df --- /dev/null +++ b/libnet/msvcbuild.bat @@ -0,0 +1,22 @@ +@rem Script to build libnet under "Visual Studio .NET Command Prompt". +@rem Dependencies are: +@rem winpcap, specifically, the winpcap developer pack + +@setlocal +@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE +@set MYLINK=link /nologo +@set MYMT=mt /nologo + +@rem relative to C code in src/ +@set WINPCAP=..\..\..\WpdPack + +copy include\win32\libnet.h include\ +copy include\win32\stdint.h include\libnet\ + +cd src +%MYCOMPILE% /I..\include /I%WINPCAP%\Include libnet_a*.c libnet_build_*.c libnet_c*.c libnet_dll.c libnet_error.c libnet_i*.c libnet_link_win32.c libnet_p*.c libnet_raw.c libnet_resolve.c libnet_version.c libnet_write.c +%MYLINK% /DLL /libpath:%WINPCAP%\Lib /out:libnet.dll *.obj Advapi32.lib +if exist libnet.dll.manifest^ + %MYMT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2 +cd .. + diff --git a/libnet/src/libnet_version.c b/libnet/src/libnet_version.c index 87782ed..7631a7b 100644 --- a/libnet/src/libnet_version.c +++ b/libnet/src/libnet_version.c @@ -30,19 +30,16 @@ * */ -#if (!(_WIN32) || (__CYGWIN__)) -#include -#include "../version.h" -#else -#include "../include/win32/libnet.h" -#endif +#include "common.h" #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif -static const char banner[] = "libnet version "VERSION""; +static const char banner[] = "libnet version " LIBNET_VERSION ""; +#if 0 +/* FIXME can find no sign this is used anywhere */ void __libnet_print_vers(void) { @@ -55,6 +52,7 @@ __libnet_print_vers(void) (void)write(STDOUT_FILENO, banner, sizeof(banner) - 1); #endif } +#endif const char * libnet_version(void) diff --git a/libnet/version.h.in b/libnet/version.h.in deleted file mode 100644 index 7e7992e..0000000 --- a/libnet/version.h.in +++ /dev/null @@ -1,7 +0,0 @@ -/* - * $Id: version.h.in,v 1.1.1.1 2003/06/26 21:55:10 route Exp $ - * @configure_input@ - */ - -#define VERSION "@PACKAGE_VERSION@" - diff --git a/libnet/win32/.gitignore b/libnet/win32/.gitignore deleted file mode 100644 index 7514aff..0000000 --- a/libnet/win32/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.suo -*.user -Debug diff --git a/libnet/win32/Libnet-1.1.1-2002.sln b/libnet/win32/Libnet-1.1.1-2002.sln deleted file mode 100644 index 831677d..0000000 --- a/libnet/win32/Libnet-1.1.1-2002.sln +++ /dev/null @@ -1,77 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet-latest-006", "Libnet-latest.vcproj", "{6A0551E1-E416-4125-BCC0-F18F2D601806}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arp", "..\sample\win32\arp\arp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdp", "..\sample\win32\cdp\cdp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhcp_discover", "..\sample\win32\dhcp_discover\dhcp_discover.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_addr", "..\sample\win32\get_addr\get_addr.vcproj", "{DA921F29-B6BE-4E55-9040-B6DD434F1E43}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icmp_echo_cq", "..\sample\win32\icmp_echo_cq\icmp_echo_cq.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcp1", "..\sample\win32\tcp1\tcp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "udp1", "..\sample\win32\udp1\udp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dns", "..\sample\win32\dns\dns.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - ConfigName.0 = Debug - ConfigName.1 = Release - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.ActiveCfg = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.Build.0 = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.ActiveCfg = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.ActiveCfg = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.Build.0 = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.ActiveCfg = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/libnet/win32/Libnet-1.1.1-2003.ncb b/libnet/win32/Libnet-1.1.1-2003.ncb deleted file mode 100644 index 71d907f..0000000 Binary files a/libnet/win32/Libnet-1.1.1-2003.ncb and /dev/null differ diff --git a/libnet/win32/Libnet-1.1.1-2003.sln b/libnet/win32/Libnet-1.1.1-2003.sln deleted file mode 100644 index 78de55b..0000000 --- a/libnet/win32/Libnet-1.1.1-2003.sln +++ /dev/null @@ -1,84 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arp", "..\sample\win32\arp\arp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdp", "..\sample\win32\cdp\cdp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhcp_discover", "..\sample\win32\dhcp_discover\dhcp_discover.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_addr", "..\sample\win32\get_addr\get_addr.vcproj", "{DA921F29-B6BE-4E55-9040-B6DD434F1E43}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icmp_echo_cq", "..\sample\win32\icmp_echo_cq\icmp_echo_cq.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcp1", "..\sample\win32\tcp1\tcp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "udp1", "..\sample\win32\udp1\udp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" - ProjectSection(ProjectDependencies) = postProject - {6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet-1.1.1", "Libnet-1.1.1.vcproj", "{6A0551E1-E416-4125-BCC0-F18F2D601806}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.ActiveCfg = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.Build.0 = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.ActiveCfg = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.ActiveCfg = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.Build.0 = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.ActiveCfg = Release|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/libnet/win32/Libnet-1.1.1-2003.suo b/libnet/win32/Libnet-1.1.1-2003.suo deleted file mode 100644 index 10d53e2..0000000 Binary files a/libnet/win32/Libnet-1.1.1-2003.suo and /dev/null differ diff --git a/libnet/win32/Libnet-1.1.1.vcproj b/libnet/win32/Libnet-1.1.1.vcproj deleted file mode 100644 index 09b4899..0000000 --- a/libnet/win32/Libnet-1.1.1.vcproj +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libnet/win32/Libnet-2010.sln b/libnet/win32/Libnet-2010.sln deleted file mode 100755 index 5aef8b0..0000000 --- a/libnet/win32/Libnet-2010.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet", "Libnet.vcxproj", "{2403312B-415B-27DC-E2B0-34A36FDFE2E9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Debug|Win32.ActiveCfg = Debug|Win32 - {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Debug|Win32.Build.0 = Debug|Win32 - {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Release|Win32.ActiveCfg = Release|Win32 - {2403312B-415B-27DC-E2B0-34A36FDFE2E9}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/libnet/win32/Libnet-latest.ncb b/libnet/win32/Libnet-latest.ncb deleted file mode 100644 index d14a41e..0000000 Binary files a/libnet/win32/Libnet-latest.ncb and /dev/null differ diff --git a/libnet/win32/Libnet-latest.opt b/libnet/win32/Libnet-latest.opt deleted file mode 100644 index 30d86d9..0000000 Binary files a/libnet/win32/Libnet-latest.opt and /dev/null differ diff --git a/libnet/win32/Libnet-latest.sln b/libnet/win32/Libnet-latest.sln deleted file mode 100644 index 831677d..0000000 --- a/libnet/win32/Libnet-latest.sln +++ /dev/null @@ -1,77 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet-latest-006", "Libnet-latest.vcproj", "{6A0551E1-E416-4125-BCC0-F18F2D601806}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arp", "..\sample\win32\arp\arp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdp", "..\sample\win32\cdp\cdp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhcp_discover", "..\sample\win32\dhcp_discover\dhcp_discover.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_addr", "..\sample\win32\get_addr\get_addr.vcproj", "{DA921F29-B6BE-4E55-9040-B6DD434F1E43}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icmp_echo_cq", "..\sample\win32\icmp_echo_cq\icmp_echo_cq.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcp1", "..\sample\win32\tcp1\tcp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "udp1", "..\sample\win32\udp1\udp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dns", "..\sample\win32\dns\dns.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}" -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - ConfigName.0 = Debug - ConfigName.1 = Release - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806} - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.ActiveCfg = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.Build.0 = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.ActiveCfg = Debug|Win32 - {6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32 - {8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.ActiveCfg = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.Build.0 = Debug|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.ActiveCfg = Release|Win32 - {DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32 - {482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/libnet/win32/Libnet-latest.suo b/libnet/win32/Libnet-latest.suo deleted file mode 100644 index d591cf6..0000000 Binary files a/libnet/win32/Libnet-latest.suo and /dev/null differ diff --git a/libnet/win32/Libnet-latest.vcproj b/libnet/win32/Libnet-latest.vcproj deleted file mode 100644 index 56c3d7a..0000000 --- a/libnet/win32/Libnet-latest.vcproj +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libnet/win32/Libnet.dsp b/libnet/win32/Libnet.dsp deleted file mode 100644 index b221637..0000000 --- a/libnet/win32/Libnet.dsp +++ /dev/null @@ -1,337 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Libnet" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=Libnet - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "Libnet.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "Libnet.mak" CFG="Libnet - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "Libnet - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "Libnet - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "Libnet - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBNET_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBNET_EXPORTS" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 /nologo /dll /machine:I386 /out:"Release/Libnet-1.1.1.dll" - -!ELSEIF "$(CFG)" == "Libnet - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBNET_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBNET_EXPORTS" /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "Libnet - Win32 Release" -# Name "Libnet - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\src\libnet_advanced.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_asn1.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_802.1q.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_802.1x.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_802.2.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_802.3.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_arp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_bgp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_cdp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_data.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_dhcp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_dns.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_ethernet.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_fddi.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_gre.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_icmp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_igmp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_ip.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_ipsec.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_isl.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_link.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_mpls.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_ntp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_ospf.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_rip.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_rpc.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_snmp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_stp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_tcp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_token_ring.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_udp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_build_vrrp.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_checksum.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_cq.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_crc.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_dll.c -# End Source File -# Begin Source File - -SOURCE=.\libnet_dll.def -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_error.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_if_addr.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_init.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_internal.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_link_win32.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_pblock.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_port_list.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_prand.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_raw.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_resolve.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_version.c -# End Source File -# Begin Source File - -SOURCE=..\src\libnet_write.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\include\win32\config.h -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-asn1.h" -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-functions.h" -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-headers.h" -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-macros.h" -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-structures.h" -# End Source File -# Begin Source File - -SOURCE="..\include\libnet\libnet-types.h" -# End Source File -# Begin Source File - -SOURCE=..\include\win32\libnet.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Source File - -SOURCE=.\ReadMe.txt -# End Source File -# End Target -# End Project diff --git a/libnet/win32/Libnet.dsw b/libnet/win32/Libnet.dsw deleted file mode 100644 index 7a07d7a..0000000 --- a/libnet/win32/Libnet.dsw +++ /dev/null @@ -1,32 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "Libnet"=".\Libnet.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name wpcap - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/libnet/win32/Libnet.vcxproj b/libnet/win32/Libnet.vcxproj deleted file mode 100755 index 7d17e57..0000000 --- a/libnet/win32/Libnet.vcxproj +++ /dev/null @@ -1,208 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - - - {2403312B-415B-27DC-E2B0-34A36FDFE2E9} - - - - DynamicLibrary - false - MultiByte - - - DynamicLibrary - false - MultiByte - - - - - - - - - - - - - - - .\Release\ - .\Release\ - false - - - .\Debug\ - .\Debug\ - true - $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;..\..\WpdPack\Include - $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;..\..\WpdPack\Lib - - - - MultiThreaded - OnlyExplicitInline - true - true - MaxSpeed - true - Level3 - WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBNET_EXPORTS;%(PreprocessorDefinitions) - .\Release\ - .\Release\Libnet.pch - - - .\Release\ - .\Release\ - - - true - NDEBUG;%(PreprocessorDefinitions) - .\Release\Libnet.tlb - true - Win32 - - - 0x0409 - NDEBUG;%(PreprocessorDefinitions) - - - true - .\Release\Libnet.bsc - - - true - true - Console - Release/Libnet-1.1.1.dll - .\Release\Libnet-1.1.1.lib - .\libnet_dll.def - - - - - MultiThreadedDebug - Default - false - Disabled - true - Level3 - true - EditAndContinue - WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBNET_EXPORTS;%(PreprocessorDefinitions) - .\Debug\ - .\Debug\Libnet.pch - - - .\Debug\ - .\Debug\ - EnableFastChecks - - - true - _DEBUG;%(PreprocessorDefinitions) - .\Debug\Libnet.tlb - true - Win32 - - - 0x0409 - _DEBUG;%(PreprocessorDefinitions) - - - true - .\Debug\Libnet.bsc - - - true - true - true - Console - .\Debug\Libnet.dll - .\Debug\Libnet.lib - .\libnet_dll.def - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libnet/win32/Makefile.am b/libnet/win32/Makefile.am deleted file mode 100644 index 6c55ce6..0000000 --- a/libnet/win32/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -EXTRA_DIST = Libnet-1.1.1-2002.sln Libnet-1.1.1-2003.ncb \ - Libnet-1.1.1-2003.sln Libnet-1.1.1-2003.suo \ - Libnet-1.1.1.vcproj libnet_dll.def Libnet.dsp \ - Libnet.dsw Libnet-latest.ncb Libnet-latest.opt \ - Libnet-latest.sln Libnet-latest.suo Libnet-latest.vcproj README.txt - diff --git a/libnet/win32/README.txt b/libnet/win32/README.txt deleted file mode 100644 index 9752083..0000000 --- a/libnet/win32/README.txt +++ /dev/null @@ -1,71 +0,0 @@ -Libnet 1.1.1 VC++ Build instructions. -Kirby Kuehl vacuum@users.sourceforge.net - - -Tested Platforms: -Windows 2000 SP4, Windows XP SP1 - -Tested IDEs: -VC++ 6.0 Service Pack 5 -Visual Studio .NET 2003 -Visual Studio .NET 2002 - -Winpcap 3.01 Developers pack: http://winpcap.polito.it/install/default.htm -Platform SDK : http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ - - -1. Extract Libnet tarball. (Probably unnecessary since you are reading this.) - -2. Download and extract Winpcap 3.x developer's pack from http://winpcap.polito.it/install/default.htm - NOTE: Must download 3.x developer's pack. Do not use earlier versions. - -3. Open Libnet-1.1.1/win32/Libnet.dsw (If you are using VC++6.0) - Libnet-1.1.1/win32/Libnet-1.1.1-2002.sln (If youa are using Visual Studio .NET 20002) - Libnet-1.1.1/win32/Libnet-1.1.1-2003.sln (If youa are using Visual Studio .NET 20003) - -4. To properly setup the winpcap/libpcap dependencies. - -- Visual Studio 2010 Instructions. - - Select libnet project - Right-click, and select Properties - Under Configuration Properties, select VC++ Directories - - Select Include files. - Add the following path - wpdpack\Include - Select Library paths. - Add the following path - wpdpack\Lib - -- Visual Studio .NET Instructions. - - Select Tools/Options - Under the options dialog, select Projects and then VC++ Directories - Select Include files. - Add the following path - wpdpack\Include - Select Library paths. - Add the following path - wpdpack\Lib - -- Visual C++ 6.0 Instructions - - You will need to also install the Microsoft Platform SDK in order to have iphlpapi.h - - The platform SDK is available here: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ - - NOTE: The include order is important, or you will get redefinition errors. Put the platform sdk's directory first. - - Select Tools/Options - Select the Directories Tab - Select Include files. - Add the following path - wpdpack\Include - Program Files\Microsoft SDK\include - Select Library paths. - Add the following path - wpdpack\Lib - Program Files\Microsoft SDK\Lib - - diff --git a/libnet/win32/libnet_dll.def b/libnet/win32/libnet_dll.def deleted file mode 100644 index f312fc8..0000000 --- a/libnet/win32/libnet_dll.def +++ /dev/null @@ -1,164 +0,0 @@ -LIBRARY Libnet - -EXPORTS - gethostbyname2 - libnet_addr2name4_r - libnet_addr2name4 - libnet_addr2name6_r - libnet_adv_cull_header - libnet_adv_cull_packet - libnet_adv_free_packet - libnet_adv_write_link - libnet_autobuild_arp - libnet_autobuild_ethernet - libnet_autobuild_fddi - libnet_autobuild_ipv4 - libnet_autobuild_ipv6 - libnet_autobuild_link - libnet_autobuild_token_ring - libnet_build_802_1q - libnet_build_802_1x - libnet_build_802_2snap - libnet_build_802_2 - libnet_build_802_3 - libnet_build_arp - libnet_build_asn1_bitstring - libnet_build_asn1_header - libnet_build_asn1_int - libnet_build_asn1_length - libnet_build_asn1_null - libnet_build_asn1_objid - libnet_build_asn1_sequence - libnet_build_asn1_string - libnet_build_asn1_uint - libnet_build_bgp4_header - libnet_build_bgp4_notification - libnet_build_bgp4_open - libnet_build_bgp4_update - libnet_build_bootpv4 - libnet_build_cdp - libnet_build_cdp_value - libnet_build_data - libnet_build_dhcpv4 - libnet_build_dnsv4 - libnet_build_egre - libnet_build_ethernet - libnet_build_fddi - libnet_build_gre_last_sre - libnet_build_gre_sre - libnet_build_gre - libnet_build_icmpv4_echo - libnet_build_icmpv4_mask - libnet_build_icmpv4_redirect - libnet_build_icmpv4_timeexceed - libnet_build_icmpv4_timestamp - libnet_build_icmpv4_unreach - libnet_build_igmp - libnet_build_ipsec_ah - libnet_build_ipsec_esp_ftr - libnet_build_ipsec_esp_hdr - libnet_build_ipv4_options - libnet_build_ipv4 - libnet_build_ipv6 - libnet_build_ipv6_destopts - libnet_build_ipv6_frag - libnet_build_ipv6_hbhopts - libnet_build_ipv6_routing - libnet_build_isl - libnet_build_link - libnet_build_mpls - libnet_build_ntp - libnet_build_ospfv2_dbd - libnet_build_ospfv2_hello - libnet_build_ospfv2_lsa_as - libnet_build_ospfv2_lsa_net - libnet_build_ospfv2_lsa_rtr - libnet_build_ospfv2_lsa_sum - libnet_build_ospfv2_lsa - libnet_build_ospfv2_lsr - libnet_build_ospfv2_lsu - libnet_build_ospfv2 - libnet_build_rip - libnet_build_rpc_call - libnet_build_snmp - libnet_build_stp_conf - libnet_build_stp_tcn - libnet_build_tcp_options - libnet_build_tcp - libnet_build_token_ring - libnet_build_udp - libnet_build_vrrp - libnet_clear_packet - libnet_close_link_interface - libnet_close_raw4 - libnet_close_raw6 - libnet_compute_crc - libnet_cq_add - libnet_cq_destroy - libnet_cq_find_by_label - libnet_cq_getlabel - libnet_cq_head - libnet_cq_last - libnet_cq_next - libnet_cq_remove_by_label - libnet_cq_remove - libnet_cq_size - libnet_destroy - libnet_diag_dump_context - libnet_diag_dump_hex - libnet_diag_dump_pblock - libnet_diag_dump_pblock_type - libnet_do_checksum - libnet_getdevice - libnet_geterror - libnet_getfd - libnet_getgre_length - libnet_getpacket_size - libnet_get_hwaddr - libnet_get_ipaddr4 - libnet_get_ipaddr6 - libnet_getpbuf - libnet_getpbuf_size - libnet_get_prand - libnet_hex_aton - libnet_ifaddrlist - libnet_in_cksum - libnet_init - libnet_ip_check - libnet_name2addr4 - libnet_name2addr6 - libnet_open_link - libnet_open_raw4 - libnet_open_raw6 - libnet_pblock_append - libnet_pblock_coalesce - libnet_pblock_delete - libnet_pblock_find - libnet_pblock_insert_before - libnet_pblock_new - libnet_pblock_p2p - libnet_pblock_probe - libnet_pblock_setflags - libnet_pblock_swap - libnet_pblock_update - libnet_plist_chain_dump - libnet_plist_chain_dump_string - libnet_plist_chain_free - libnet_plist_chain_new - libnet_plist_chain_next_pair - libnet_seed_prand - libnet_select_device - libnet_stats - libnet_toggle_checksum - libnet_win32_build_fake_ethernet - libnet_win32_build_fake_token - libnet_win32_get_remote_mac - libnet_win32_write_raw_ipv4 - libnet_write - libnet_write_link - libnet_write_raw_ipv4 - libnet_write_raw_ipv6 - __libnet_print_vers - - - diff --git a/lua/dnet.h.win32 b/lua/dnet.h.win32 new file mode 100644 index 0000000..de5498f --- /dev/null +++ b/lua/dnet.h.win32 @@ -0,0 +1 @@ +#include diff --git a/lua/msvcbuild.bat b/lua/msvcbuild.bat index b03ba07..5480984 100644 --- a/lua/msvcbuild.bat +++ b/lua/msvcbuild.bat @@ -1,4 +1,4 @@ -@rem Script to build Lua under "Visual Studio .NET Command Prompt". +@rem Script to build lua binding under "Visual Studio .NET Command Prompt". @rem Dependencies are: @rem Lua @rem winpcap, specifically, the winpcap developer pack @@ -13,8 +13,9 @@ @set WINPCAP=..\..\WpdPack @set DNET=..\..\libdnet-1.11-win32 -%MYCOMPILE% /I..\libnet\include\win32 /I..\libnet\include /I%LUA% /I%WINPCAP%\Include /I%DNET%\include *.c -%MYLINK% /DLL /libpath:%WINPCAP%\Lib /out:net.dll *.obj %LUA%\lua51.lib ..\libnet\win32\Debug\Libnet.lib %DNET%\lib\dnet.lib +copy dnet.h.win32 dnet.h +%MYCOMPILE% /I..\libnet\include /I%LUA% /I%WINPCAP%\Include /I%DNET%\include *.c +%MYLINK% /DLL /export:luaopen_net /libpath:%WINPCAP%\Lib /out:net.dll *.obj %LUA%\lua51.lib ..\libnet\src\libnet.lib %DNET%\lib\dnet.lib if exist net.dll.manifest^ %MYMT% -manifest net.dll.manifest -outputresource:net.dll;2 diff --git a/lua/net.c b/lua/net.c index c009122..bbfa710 100644 --- a/lua/net.c +++ b/lua/net.c @@ -37,8 +37,7 @@ THE POSSIBILITY OF SUCH DAMAGE. #include -#define LUA_BUILD_AS_DLL /* To pull in LUA_API definitions for modules */ - +#define LUA_LIB /* To pull in LUA_API definitions for modules */ #include "lua.h" #include "lauxlib.h" #include "lualib.h" -- cgit v1.2.1 From d5e11ff432ef8333a33b07d1e9c01525186675b3 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 15:11:57 -0700 Subject: Interface selection was ignoring interfaces with ipv6. --- libnet/src/libnet_if_addr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libnet/src/libnet_if_addr.c b/libnet/src/libnet_if_addr.c index ea9cf94..4bfc06c 100644 --- a/libnet/src/libnet_if_addr.c +++ b/libnet/src/libnet_if_addr.c @@ -311,7 +311,9 @@ register char *errbuf) /* Scan the list printing every entry */ for (d = alldevs; d; d = d->next) { - if((!d->addresses) || (d->addresses->addr->sa_family != AF_INET)) + if(!d->addresses) + continue; + if(d->addresses->addr->sa_family != AF_INET && d->addresses->addr->sa_family != AF_INET6) continue; if(d->flags & PCAP_IF_LOOPBACK) continue; -- cgit v1.2.1 From 8d227679012650faa954a37a36c66e4ca2ec2d84 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 15:13:25 -0700 Subject: Reformatted and commented win32 specific code. --- libnet/src/libnet_if_addr.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/libnet/src/libnet_if_addr.c b/libnet/src/libnet_if_addr.c index 4bfc06c..5128b71 100644 --- a/libnet/src/libnet_if_addr.c +++ b/libnet/src/libnet_if_addr.c @@ -104,8 +104,7 @@ libnet_check_iface(libnet_t *l) #endif int -libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, -register char *errbuf) +libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, register char *errbuf) { register struct libnet_ifaddr_list *al; struct ifreq *ifr, *lifr, *pifr, nifr; @@ -274,6 +273,9 @@ register char *errbuf) return (nipaddr); } #else +/* WIN32 support * +/* TODO move win32 support into win32 specific source file */ + /* From tcptraceroute, convert a numeric IP address to a string */ #define IPTOSBUFFERS 12 static int8_t *iptos(uint32_t in) @@ -290,14 +292,13 @@ static int8_t *iptos(uint32_t in) } int -libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, -register char *errbuf) +libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, register char *errbuf) { - int nipaddr = 0; int i = 0; - + int nipaddr = 0; + int i = 0; static struct libnet_ifaddr_list ifaddrlist[MAX_IPADDR]; - pcap_if_t *alldevs; - pcap_if_t *d; + pcap_if_t *alldevs = NULL; + pcap_if_t *d = NULL; int8_t err[PCAP_ERRBUF_SIZE]; /* Retrieve the interfaces list */ @@ -309,7 +310,7 @@ register char *errbuf) } /* Scan the list printing every entry */ - for (d = alldevs; d; d = d->next) + for (d = alldevs; d; d = d->next) { if(!d->addresses) continue; @@ -370,7 +371,7 @@ libnet_select_device(libnet_t *l) else if (c == 0) { snprintf(l->err_buf, LIBNET_ERRBUF_SIZE, - "%s(): no network interface found\n", __func__); + "%s(): no network interfaces found\n", __func__); return (-1); } -- cgit v1.2.1 From 008c9945ce6f4295196872b85ea28c783f68db4a Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 15:14:18 -0700 Subject: uint32 address properly initialized with an address Previous code converted address to presentation format, and then strduped it, and assigned it to the uint32_t address field... that can't have been right, I hope the current implementation is. --- libnet/src/libnet_if_addr.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libnet/src/libnet_if_addr.c b/libnet/src/libnet_if_addr.c index 5128b71..254a4a7 100644 --- a/libnet/src/libnet_if_addr.c +++ b/libnet/src/libnet_if_addr.c @@ -319,11 +319,8 @@ libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, regis if(d->flags & PCAP_IF_LOOPBACK) continue; - /* XXX - strdup */ ifaddrlist[i].device = strdup(d->name); - ifaddrlist[i].addr = (uint32_t) - strdup(iptos(((struct sockaddr_in *) - d->addresses->addr)->sin_addr.s_addr)); + ifaddrlist[i].addr = ((struct sockaddr_in *)d->addresses->addr)->sin_addr.s_addr; ++i; ++nipaddr; } -- cgit v1.2.1 From 18cbe497dd84afc471a5320e4ef3a7cde87c2c4e Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Wed, 31 Oct 2012 15:15:56 -0700 Subject: memory leak fixed, device list needs to freed after use --- libnet/src/libnet_if_addr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libnet/src/libnet_if_addr.c b/libnet/src/libnet_if_addr.c index 254a4a7..d97d2e1 100644 --- a/libnet/src/libnet_if_addr.c +++ b/libnet/src/libnet_if_addr.c @@ -325,6 +325,8 @@ libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, regis ++nipaddr; } + pcap_freealldevs(alldevs); + *ipaddrp = ifaddrlist; return (nipaddr); } -- cgit v1.2.1 From 9c744c8e212184571ee804cc9f580f9704325bc8 Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Thu, 1 Nov 2012 13:08:55 -0700 Subject: Make interface selection work for interfaces with multiple addresses on them. Windows supports IPv4 and IPv6 by default, so interfaces will have two addresses, and libnet failed when the first address was IPv6. --- libnet/src/libnet_if_addr.c | 65 +++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/libnet/src/libnet_if_addr.c b/libnet/src/libnet_if_addr.c index d97d2e1..9807539 100644 --- a/libnet/src/libnet_if_addr.c +++ b/libnet/src/libnet_if_addr.c @@ -292,43 +292,58 @@ static int8_t *iptos(uint32_t in) } int -libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev, register char *errbuf) +libnet_ifaddrlist(register struct libnet_ifaddr_list **ipaddrp, char *dev_unused, register char *errbuf) { int nipaddr = 0; int i = 0; static struct libnet_ifaddr_list ifaddrlist[MAX_IPADDR]; - pcap_if_t *alldevs = NULL; - pcap_if_t *d = NULL; + pcap_if_t *devlist = NULL; + pcap_if_t *dev = NULL; int8_t err[PCAP_ERRBUF_SIZE]; /* Retrieve the interfaces list */ - if (pcap_findalldevs(&alldevs, err) == -1) + if (pcap_findalldevs(&devlist, err) == -1) { snprintf(errbuf, LIBNET_ERRBUF_SIZE, "%s(): error in pcap_findalldevs: %s\n", __func__, err); return (-1); } - /* Scan the list printing every entry */ - for (d = alldevs; d; d = d->next) + for (dev = devlist; dev; dev = dev->next) { - if(!d->addresses) - continue; - if(d->addresses->addr->sa_family != AF_INET && d->addresses->addr->sa_family != AF_INET6) - continue; - if(d->flags & PCAP_IF_LOOPBACK) - continue; - - ifaddrlist[i].device = strdup(d->name); - ifaddrlist[i].addr = ((struct sockaddr_in *)d->addresses->addr)->sin_addr.s_addr; - ++i; - ++nipaddr; + struct pcap_addr* pcapaddr; + for(pcapaddr = dev->addresses; pcapaddr; pcapaddr = pcapaddr->next) { + struct sockaddr* addr = pcapaddr->addr; +#if 0 + printf("if name '%s' description '%s' loop? %d\n", dev->name, dev->description, dev->flags); + { + char p[NI_MAXHOST] = ""; + int sz = sizeof(struct sockaddr_storage); + int r; + r = getnameinfo(addr, sz, p, sizeof(p), NULL,0, NI_NUMERICHOST); + printf(" addr %s\n", r ? gai_strerror(r) : p); + } +#endif + + if(dev->flags & PCAP_IF_LOOPBACK) + continue; + + /* this code ignores IPv6 addresses, a limitation of the libnet_ifaddr_list struct */ + + if(addr->sa_family == AF_INET) { + ifaddrlist[i].device = strdup(dev->name); + ifaddrlist[i].addr = ((struct sockaddr_in *)addr)->sin_addr.s_addr; + ++i; + ++nipaddr; + } + } } - pcap_freealldevs(alldevs); + pcap_freealldevs(devlist); *ipaddrp = ifaddrlist; - return (nipaddr); + + return nipaddr; } #endif /* __WIN32__ */ @@ -364,7 +379,6 @@ libnet_select_device(libnet_t *l) c = libnet_ifaddrlist(&address_list, l->device, err_buf); if (c < 0) { - /* err msg set in libnet_ifaddrlist() */ return (-1); } else if (c == 0) @@ -377,16 +391,15 @@ libnet_select_device(libnet_t *l) al = address_list; if (l->device) { - /* - * Then we have an IP address in l->device => do lookup - */ addr = libnet_name2addr4(l, l->device, 0); for (i = c; i; --i, ++address_list) { - if (((addr == -1) && !(strncmp(l->device, address_list->device, - strlen(l->device)))) || - (address_list->addr == addr)) + if ( + 0 == strcmp(l->device, address_list->device) + || + address_list->addr == addr + ) { /* free the "user supplied device" - see libnet_init() */ free(l->device); -- cgit v1.2.1 From 0bfd1c210962d38bca5e5f4a8815b5b45e1f69df Mon Sep 17 00:00:00 2001 From: Sam Roberts Date: Thu, 15 Nov 2012 13:00:33 -0800 Subject: Pass build errors to caller of batch files. --- libnet/msvcbuild.bat | 2 ++ lua/msvcbuild.bat | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libnet/msvcbuild.bat b/libnet/msvcbuild.bat index e2d62df..2cfc3dc 100644 --- a/libnet/msvcbuild.bat +++ b/libnet/msvcbuild.bat @@ -20,3 +20,5 @@ if exist libnet.dll.manifest^ %MYMT% -manifest libnet.dll.manifest -outputresource:libnet.dll;2 cd .. +exit /b %errorlevel% + diff --git a/lua/msvcbuild.bat b/lua/msvcbuild.bat index 5480984..0206ecf 100644 --- a/lua/msvcbuild.bat +++ b/lua/msvcbuild.bat @@ -9,9 +9,9 @@ @set MYLINK=link /nologo @set MYMT=mt /nologo -@set LUA=..\..\lua-5.1\src +@set LUA=..\..\lua\src @set WINPCAP=..\..\WpdPack -@set DNET=..\..\libdnet-1.11-win32 +@set DNET=..\..\libdnet copy dnet.h.win32 dnet.h %MYCOMPILE% /I..\libnet\include /I%LUA% /I%WINPCAP%\Include /I%DNET%\include *.c @@ -19,3 +19,5 @@ copy dnet.h.win32 dnet.h if exist net.dll.manifest^ %MYMT% -manifest net.dll.manifest -outputresource:net.dll;2 +exit /b %errorlevel% + -- cgit v1.2.1