libnet4r 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +15 -0
- data/LICENSE +28 -0
- data/README +187 -0
- data/Rakefile +110 -0
- data/ext/extconf.rb +60 -0
- data/ext/libnet.c +705 -0
- data/ext/libnet_arp.c +152 -0
- data/ext/libnet_ethernet.c +115 -0
- data/ext/libnet_ipv4.c +140 -0
- data/ext/libnet_ipv6.c +138 -0
- data/ext/libnet_udp.c +112 -0
- data/ext/libnet_vlan.c +131 -0
- data/lib/libnet4r/header.rb +609 -0
- data/lib/libnet4r/helpers.rb +19 -0
- data/lib/libnet4r/libnet.rb +39 -0
- data/libnet/CVS/Entries +24 -0
- data/libnet/CVS/Repository +1 -0
- data/libnet/CVS/Root +1 -0
- data/libnet/Makefile.am +15 -0
- data/libnet/Makefile.am.common +10 -0
- data/libnet/Makefile.in +443 -0
- data/libnet/README +21 -0
- data/libnet/VERSION +1 -0
- data/libnet/acconfig.h +36 -0
- data/libnet/acinclude.m4 +463 -0
- data/libnet/aclocal.m4 +1337 -0
- data/libnet/autom4te.cache/CVS/Entries +1 -0
- data/libnet/autom4te.cache/CVS/Repository +1 -0
- data/libnet/autom4te.cache/CVS/Root +1 -0
- data/libnet/autom4te.cache/output.0 +6225 -0
- data/libnet/autom4te.cache/requests +111 -0
- data/libnet/autom4te.cache/traces.0 +272 -0
- data/libnet/config.guess +1314 -0
- data/libnet/config.sub +1410 -0
- data/libnet/configure +6225 -0
- data/libnet/configure.in +235 -0
- data/libnet/doc/BUGS +19 -0
- data/libnet/doc/CHANGELOG +527 -0
- data/libnet/doc/CONTRIB +53 -0
- data/libnet/doc/COPYING +31 -0
- data/libnet/doc/CVS/Entries +12 -0
- data/libnet/doc/CVS/Repository +1 -0
- data/libnet/doc/CVS/Root +1 -0
- data/libnet/doc/DESIGN_NOTES +134 -0
- data/libnet/doc/MIGRATION +172 -0
- data/libnet/doc/PACKET_BUILDING +161 -0
- data/libnet/doc/PORTED +45 -0
- data/libnet/doc/RAWSOCKET_NON_SEQUITUR +41 -0
- data/libnet/doc/TODO +96 -0
- data/libnet/doc/html/acconfig_8h-source.html +49 -0
- data/libnet/doc/html/annotated.html +17 -0
- data/libnet/doc/html/bpf_8h-source.html +277 -0
- data/libnet/doc/html/config_8h-source.html +125 -0
- data/libnet/doc/html/doxygen.css +169 -0
- data/libnet/doc/html/doxygen.png +0 -0
- data/libnet/doc/html/files.html +29 -0
- data/libnet/doc/html/functions.html +26 -0
- data/libnet/doc/html/functions_vars.html +26 -0
- data/libnet/doc/html/getopt_8h-source.html +97 -0
- data/libnet/doc/html/globals.html +219 -0
- data/libnet/doc/html/globals_defs.html +104 -0
- data/libnet/doc/html/globals_func.html +136 -0
- data/libnet/doc/html/gnuc_8h-source.html +56 -0
- data/libnet/doc/html/graph_legend.dot +22 -0
- data/libnet/doc/html/graph_legend.html +75 -0
- data/libnet/doc/html/ifaddrlist_8h-source.html +65 -0
- data/libnet/doc/html/in__systm_8h-source.html +90 -0
- data/libnet/doc/html/index.html +17 -0
- data/libnet/doc/html/libnet-asn1_8h-source.html +268 -0
- data/libnet/doc/html/libnet-functions_8h-source.html +742 -0
- data/libnet/doc/html/libnet-functions_8h.html +8844 -0
- data/libnet/doc/html/libnet-headers_8h-source.html +1655 -0
- data/libnet/doc/html/libnet-headers_8h.html +3053 -0
- data/libnet/doc/html/libnet-macros_8h-source.html +161 -0
- data/libnet/doc/html/libnet-macros_8h.html +358 -0
- data/libnet/doc/html/libnet-structures_8h-source.html +233 -0
- data/libnet/doc/html/libnet-types_8h-source.html +58 -0
- data/libnet/doc/html/libnet_8h-source.html +119 -0
- data/libnet/doc/html/libnet_8h.html +24 -0
- data/libnet/doc/html/structlibnet__802__1q__hdr.html +145 -0
- data/libnet/doc/html/structlibnet__802__1x__hdr.html +97 -0
- data/libnet/doc/libnet.doxygen.conf +1102 -0
- data/libnet/doc/man/CVS/Entries +1 -0
- data/libnet/doc/man/CVS/Repository +1 -0
- data/libnet/doc/man/CVS/Root +1 -0
- data/libnet/doc/man/man3/libnet-functions.h.3 +3136 -0
- data/libnet/doc/man/man3/libnet-headers.h.3 +1872 -0
- data/libnet/doc/man/man3/libnet-macros.h.3 +172 -0
- data/libnet/doc/man/man3/libnet.h.3 +17 -0
- data/libnet/doc/man/man3/libnet_802_1q_hdr.3 +53 -0
- data/libnet/doc/man/man3/libnet_802_1x_hdr.3 +41 -0
- data/libnet/include/CVS/Entries +10 -0
- data/libnet/include/CVS/Repository +1 -0
- data/libnet/include/CVS/Root +1 -0
- data/libnet/include/Makefile.am +7 -0
- data/libnet/include/Makefile.in +395 -0
- data/libnet/include/bpf.h +264 -0
- data/libnet/include/config.h.in +118 -0
- data/libnet/include/gnuc.h +43 -0
- data/libnet/include/ifaddrlist.h +52 -0
- data/libnet/include/libnet/CVS/Entries +9 -0
- data/libnet/include/libnet/CVS/Repository +1 -0
- data/libnet/include/libnet/CVS/Root +1 -0
- data/libnet/include/libnet/Makefile.am +12 -0
- data/libnet/include/libnet/Makefile.in +294 -0
- data/libnet/include/libnet/libnet-asn1.h +255 -0
- data/libnet/include/libnet/libnet-functions.h +2157 -0
- data/libnet/include/libnet/libnet-headers.h +1662 -0
- data/libnet/include/libnet/libnet-macros.h +186 -0
- data/libnet/include/libnet/libnet-structures.h +222 -0
- data/libnet/include/libnet/libnet-types.h +45 -0
- data/libnet/include/libnet.h.in +132 -0
- data/libnet/include/stamp-h.in +1 -0
- data/libnet/include/win32/CVS/Entries +5 -0
- data/libnet/include/win32/CVS/Repository +1 -0
- data/libnet/include/win32/CVS/Root +1 -0
- data/libnet/include/win32/config.h +112 -0
- data/libnet/include/win32/getopt.h +84 -0
- data/libnet/include/win32/in_systm.h +77 -0
- data/libnet/include/win32/libnet.h +106 -0
- data/libnet/install-sh +250 -0
- data/libnet/libnet-config.in +62 -0
- data/libnet/libnet.doxygen.conf +1102 -0
- data/libnet/man/CVS/Entries +1 -0
- data/libnet/man/CVS/Repository +1 -0
- data/libnet/man/CVS/Root +1 -0
- data/libnet/missing +283 -0
- data/libnet/mkinstalldirs +40 -0
- data/libnet/sample/CVS/Entries +47 -0
- data/libnet/sample/CVS/Repository +1 -0
- data/libnet/sample/CVS/Root +1 -0
- data/libnet/sample/Makefile.am +63 -0
- data/libnet/sample/Makefile.in +729 -0
- data/libnet/sample/arp-new.c +144 -0
- data/libnet/sample/arp.c +151 -0
- data/libnet/sample/bgp4_hdr.c +225 -0
- data/libnet/sample/bgp4_notification.c +242 -0
- data/libnet/sample/bgp4_open.c +266 -0
- data/libnet/sample/bgp4_update.c +337 -0
- data/libnet/sample/cdp.c +187 -0
- data/libnet/sample/dhcp_discover.c +257 -0
- data/libnet/sample/dns.c +260 -0
- data/libnet/sample/dot1x.c +113 -0
- data/libnet/sample/fddi_tcp1.c +213 -0
- data/libnet/sample/fddi_tcp2.c +209 -0
- data/libnet/sample/get_addr.c +112 -0
- data/libnet/sample/gre.c +410 -0
- data/libnet/sample/icmp6_echoreq.c +184 -0
- data/libnet/sample/icmp_echo_cq.c +201 -0
- data/libnet/sample/icmp_redirect.c +200 -0
- data/libnet/sample/icmp_timeexceed.c +190 -0
- data/libnet/sample/icmp_timestamp.c +157 -0
- data/libnet/sample/icmp_unreach.c +204 -0
- data/libnet/sample/ieee.c +177 -0
- data/libnet/sample/ip_link.c +201 -0
- data/libnet/sample/ip_raw.c +180 -0
- data/libnet/sample/isl.c +167 -0
- data/libnet/sample/libnet_test.h +60 -0
- data/libnet/sample/mpls.c +251 -0
- data/libnet/sample/ntp.c +193 -0
- data/libnet/sample/ospf_hello.c +179 -0
- data/libnet/sample/ospf_lsa.c +190 -0
- data/libnet/sample/ping_of_death.c +171 -0
- data/libnet/sample/rpc_tcp.c +214 -0
- data/libnet/sample/rpc_udp.c +213 -0
- data/libnet/sample/sebek.c +299 -0
- data/libnet/sample/smurf.c +194 -0
- data/libnet/sample/stp.c +227 -0
- data/libnet/sample/synflood.c +200 -0
- data/libnet/sample/synflood6.c +209 -0
- data/libnet/sample/synflood6_frag.c +234 -0
- data/libnet/sample/tcp1.c +227 -0
- data/libnet/sample/tcp2.c +192 -0
- data/libnet/sample/tftp.c +207 -0
- data/libnet/sample/tring_tcp1.c +214 -0
- data/libnet/sample/tring_tcp2.c +210 -0
- data/libnet/sample/udp1.c +223 -0
- data/libnet/sample/udp2.c +232 -0
- data/libnet/sample/win32/CVS/Entries +9 -0
- data/libnet/sample/win32/CVS/Repository +1 -0
- data/libnet/sample/win32/CVS/Root +1 -0
- data/libnet/sample/win32/arp/CVS/Entries +2 -0
- data/libnet/sample/win32/arp/CVS/Repository +1 -0
- data/libnet/sample/win32/arp/CVS/Root +1 -0
- data/libnet/sample/win32/arp/arp.vcproj +136 -0
- data/libnet/sample/win32/cdp/CVS/Entries +2 -0
- data/libnet/sample/win32/cdp/CVS/Repository +1 -0
- data/libnet/sample/win32/cdp/CVS/Root +1 -0
- data/libnet/sample/win32/cdp/cdp.vcproj +136 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Entries +2 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Repository +1 -0
- data/libnet/sample/win32/dhcp_discover/CVS/Root +1 -0
- data/libnet/sample/win32/dhcp_discover/dhcp_discover.vcproj +139 -0
- data/libnet/sample/win32/dns/CVS/Entries +2 -0
- data/libnet/sample/win32/dns/CVS/Repository +1 -0
- data/libnet/sample/win32/dns/CVS/Root +1 -0
- data/libnet/sample/win32/dns/dns.vcproj +139 -0
- data/libnet/sample/win32/get_addr/CVS/Entries +2 -0
- data/libnet/sample/win32/get_addr/CVS/Repository +1 -0
- data/libnet/sample/win32/get_addr/CVS/Root +1 -0
- data/libnet/sample/win32/get_addr/get_addr.vcproj +139 -0
- data/libnet/sample/win32/getopt.c +121 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Entries +2 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Repository +1 -0
- data/libnet/sample/win32/icmp_echo_cq/CVS/Root +1 -0
- data/libnet/sample/win32/icmp_echo_cq/icmp_echo_cq.vcproj +139 -0
- data/libnet/sample/win32/tcp1/CVS/Entries +2 -0
- data/libnet/sample/win32/tcp1/CVS/Repository +1 -0
- data/libnet/sample/win32/tcp1/CVS/Root +1 -0
- data/libnet/sample/win32/tcp1/tcp1.vcproj +142 -0
- data/libnet/sample/win32/udp1/CVS/Entries +3 -0
- data/libnet/sample/win32/udp1/CVS/Repository +1 -0
- data/libnet/sample/win32/udp1/CVS/Root +1 -0
- data/libnet/sample/win32/udp1/dns.vcproj +125 -0
- data/libnet/sample/win32/udp1/udp1.vcproj +139 -0
- data/libnet/src/CVS/Entries +60 -0
- data/libnet/src/CVS/Repository +1 -0
- data/libnet/src/CVS/Root +1 -0
- data/libnet/src/Makefile.am +71 -0
- data/libnet/src/Makefile.in +428 -0
- data/libnet/src/libnet_advanced.c +136 -0
- data/libnet/src/libnet_asn1.c +436 -0
- data/libnet/src/libnet_build_802.1q.c +115 -0
- data/libnet/src/libnet_build_802.1x.c +103 -0
- data/libnet/src/libnet_build_802.2.c +167 -0
- data/libnet/src/libnet_build_802.3.c +101 -0
- data/libnet/src/libnet_build_arp.c +169 -0
- data/libnet/src/libnet_build_bgp.c +350 -0
- data/libnet/src/libnet_build_cdp.c +191 -0
- data/libnet/src/libnet_build_data.c +90 -0
- data/libnet/src/libnet_build_dhcp.c +156 -0
- data/libnet/src/libnet_build_dns.c +129 -0
- data/libnet/src/libnet_build_ethernet.c +173 -0
- data/libnet/src/libnet_build_fddi.c +191 -0
- data/libnet/src/libnet_build_gre.c +427 -0
- data/libnet/src/libnet_build_icmp.c +437 -0
- data/libnet/src/libnet_build_igmp.c +112 -0
- data/libnet/src/libnet_build_ip.c +892 -0
- data/libnet/src/libnet_build_ipsec.c +232 -0
- data/libnet/src/libnet_build_isl.c +113 -0
- data/libnet/src/libnet_build_link.c +90 -0
- data/libnet/src/libnet_build_mpls.c +112 -0
- data/libnet/src/libnet_build_ntp.c +121 -0
- data/libnet/src/libnet_build_ospf.c +699 -0
- data/libnet/src/libnet_build_rip.c +108 -0
- data/libnet/src/libnet_build_rpc.c +138 -0
- data/libnet/src/libnet_build_sebek.c +108 -0
- data/libnet/src/libnet_build_snmp.c +52 -0
- data/libnet/src/libnet_build_stp.c +222 -0
- data/libnet/src/libnet_build_tcp.c +365 -0
- data/libnet/src/libnet_build_token_ring.c +193 -0
- data/libnet/src/libnet_build_udp.c +111 -0
- data/libnet/src/libnet_build_vrrp.c +117 -0
- data/libnet/src/libnet_checksum.c +376 -0
- data/libnet/src/libnet_cq.c +395 -0
- data/libnet/src/libnet_crc.c +113 -0
- data/libnet/src/libnet_dll.c +47 -0
- data/libnet/src/libnet_error.c +55 -0
- data/libnet/src/libnet_if_addr.c +415 -0
- data/libnet/src/libnet_init.c +234 -0
- data/libnet/src/libnet_internal.c +310 -0
- data/libnet/src/libnet_link_bpf.c +348 -0
- data/libnet/src/libnet_link_dlpi.c +785 -0
- data/libnet/src/libnet_link_linux.c +310 -0
- data/libnet/src/libnet_link_nit.c +125 -0
- data/libnet/src/libnet_link_none.c +66 -0
- data/libnet/src/libnet_link_pf.c +179 -0
- data/libnet/src/libnet_link_snit.c +149 -0
- data/libnet/src/libnet_link_snoop.c +166 -0
- data/libnet/src/libnet_link_win32.c +346 -0
- data/libnet/src/libnet_pblock.c +511 -0
- data/libnet/src/libnet_port_list.c +295 -0
- data/libnet/src/libnet_prand.c +106 -0
- data/libnet/src/libnet_raw.c +257 -0
- data/libnet/src/libnet_resolve.c +414 -0
- data/libnet/src/libnet_version.c +54 -0
- data/libnet/src/libnet_write.c +502 -0
- data/libnet/version.h.in +6 -0
- data/libnet/win32/CVS/Entries +15 -0
- data/libnet/win32/CVS/Repository +1 -0
- data/libnet/win32/CVS/Root +1 -0
- data/libnet/win32/Libnet-1.1.1-2002.sln +77 -0
- data/libnet/win32/Libnet-1.1.1-2003.ncb +0 -0
- data/libnet/win32/Libnet-1.1.1-2003.sln +84 -0
- data/libnet/win32/Libnet-1.1.1-2003.suo +0 -0
- data/libnet/win32/Libnet-1.1.1.vcproj +311 -0
- data/libnet/win32/Libnet-latest.ncb +0 -0
- data/libnet/win32/Libnet-latest.opt +0 -0
- data/libnet/win32/Libnet-latest.sln +77 -0
- data/libnet/win32/Libnet-latest.suo +0 -0
- data/libnet/win32/Libnet-latest.vcproj +311 -0
- data/libnet/win32/Libnet.dsp +337 -0
- data/libnet/win32/Libnet.dsw +32 -0
- data/libnet/win32/README.txt +57 -0
- data/libnet/win32/libnet_dll.def +164 -0
- data/test/tc_arp.rb +169 -0
- data/test/tc_class.rb +219 -0
- data/test/tc_ethernet.rb +97 -0
- data/test/tc_header.rb +163 -0
- data/test/tc_init.rb +25 -0
- data/test/tc_ipv4.rb +219 -0
- data/test/tc_ipv6.rb +235 -0
- data/test/tc_udp.rb +229 -0
- data/test/tc_vlan.rb +118 -0
- data/test/ts_all.rb +15 -0
- metadata +401 -0
@@ -0,0 +1,502 @@
|
|
1
|
+
/*
|
2
|
+
* $Id: libnet_write.c,v 1.13 2004/02/20 18:53:50 mike Exp $
|
3
|
+
*
|
4
|
+
* libnet
|
5
|
+
* libnet_write.c - writes a prebuilt packet to the network
|
6
|
+
*
|
7
|
+
* Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
|
8
|
+
* All rights reserved.
|
9
|
+
* win32 specific code
|
10
|
+
* Copyright (c) 2002 - 2003 Roberto Larcher <roberto.larcher@libero.it>
|
11
|
+
*
|
12
|
+
* Redistribution and use in source and binary forms, with or without
|
13
|
+
* modification, are permitted provided that the following conditions
|
14
|
+
* are met:
|
15
|
+
* 1. Redistributions of source code must retain the above copyright
|
16
|
+
* notice, this list of conditions and the following disclaimer.
|
17
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
18
|
+
* notice, this list of conditions and the following disclaimer in the
|
19
|
+
* documentation and/or other materials provided with the distribution.
|
20
|
+
*
|
21
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
22
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
23
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
24
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
25
|
+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
26
|
+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
27
|
+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
28
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
29
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
30
|
+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
31
|
+
* SUCH DAMAGE.
|
32
|
+
*
|
33
|
+
*/
|
34
|
+
|
35
|
+
#if (HAVE_CONFIG_H)
|
36
|
+
#include "../include/config.h"
|
37
|
+
#endif
|
38
|
+
#if (!(_WIN32) || (__CYGWIN__))
|
39
|
+
#include "../include/libnet.h"
|
40
|
+
#else
|
41
|
+
#include "../include/win32/libnet.h"
|
42
|
+
#include "../include/win32/config.h"
|
43
|
+
#include "packet32.h"
|
44
|
+
#include "Ntddndis.h"
|
45
|
+
#endif
|
46
|
+
|
47
|
+
int
|
48
|
+
libnet_open_socket(libnet_t *l)
|
49
|
+
{
|
50
|
+
if (l == NULL) {
|
51
|
+
return -1;
|
52
|
+
}
|
53
|
+
|
54
|
+
switch (l->injection_type)
|
55
|
+
{
|
56
|
+
case LIBNET_LINK:
|
57
|
+
case LIBNET_LINK_ADV:
|
58
|
+
if (libnet_select_device(l) == -1)
|
59
|
+
{
|
60
|
+
return -1;
|
61
|
+
}
|
62
|
+
if (libnet_open_link(l) == -1)
|
63
|
+
{
|
64
|
+
return -1;
|
65
|
+
}
|
66
|
+
break;
|
67
|
+
case LIBNET_RAW4:
|
68
|
+
case LIBNET_RAW4_ADV:
|
69
|
+
if (libnet_open_raw4(l) == -1)
|
70
|
+
{
|
71
|
+
return -1;
|
72
|
+
}
|
73
|
+
break;
|
74
|
+
case LIBNET_RAW6:
|
75
|
+
case LIBNET_RAW6_ADV:
|
76
|
+
if (libnet_open_raw6(l) == -1)
|
77
|
+
{
|
78
|
+
return -1;
|
79
|
+
}
|
80
|
+
break;
|
81
|
+
default:
|
82
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
83
|
+
"%s(): unsupported injection type\n", __func__);
|
84
|
+
return -1;
|
85
|
+
break;
|
86
|
+
}
|
87
|
+
|
88
|
+
return 1;
|
89
|
+
}
|
90
|
+
|
91
|
+
int
|
92
|
+
libnet_write(libnet_t *l)
|
93
|
+
{
|
94
|
+
int c;
|
95
|
+
u_int32_t len;
|
96
|
+
u_int8_t *packet = NULL;
|
97
|
+
|
98
|
+
/* corey: move check for UID/EUID of 0 from libnet_init() to here */
|
99
|
+
if (getuid() && geteuid())
|
100
|
+
{
|
101
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
102
|
+
"%s(): UID or EUID of 0 required\n", __func__);
|
103
|
+
return -1;
|
104
|
+
}
|
105
|
+
|
106
|
+
if (l == NULL)
|
107
|
+
{
|
108
|
+
return (-1);
|
109
|
+
}
|
110
|
+
|
111
|
+
/* corey: open socket if necessary */
|
112
|
+
if (l->fd == -1) {
|
113
|
+
if (libnet_open_socket(l) == -1) {
|
114
|
+
return -1;
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
c = libnet_pblock_coalesce(l, &packet, &len);
|
119
|
+
if (c == - 1)
|
120
|
+
{
|
121
|
+
/* err msg set in libnet_pblock_coalesce() */
|
122
|
+
return (-1);
|
123
|
+
}
|
124
|
+
|
125
|
+
/* assume error */
|
126
|
+
c = -1;
|
127
|
+
switch (l->injection_type)
|
128
|
+
{
|
129
|
+
case LIBNET_RAW4:
|
130
|
+
case LIBNET_RAW4_ADV:
|
131
|
+
if (len > LIBNET_MAX_PACKET)
|
132
|
+
{
|
133
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
134
|
+
"%s(): packet is too large (%d bytes)\n",
|
135
|
+
__func__, len);
|
136
|
+
goto done;
|
137
|
+
}
|
138
|
+
c = libnet_write_raw_ipv4(l, packet, len);
|
139
|
+
break;
|
140
|
+
case LIBNET_RAW6:
|
141
|
+
case LIBNET_RAW6_ADV:
|
142
|
+
c = libnet_write_raw_ipv6(l, packet, len);
|
143
|
+
break;
|
144
|
+
case LIBNET_LINK:
|
145
|
+
case LIBNET_LINK_ADV:
|
146
|
+
c = libnet_write_link(l, packet, len);
|
147
|
+
break;
|
148
|
+
default:
|
149
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
150
|
+
"%s(): unsuported injection type\n", __func__);
|
151
|
+
goto done;
|
152
|
+
}
|
153
|
+
|
154
|
+
/* do statistics */
|
155
|
+
if (c == len)
|
156
|
+
{
|
157
|
+
l->stats.packets_sent++;
|
158
|
+
l->stats.bytes_written += c;
|
159
|
+
}
|
160
|
+
else
|
161
|
+
{
|
162
|
+
l->stats.packet_errors++;
|
163
|
+
/*
|
164
|
+
* XXX - we probably should have a way to retrieve the number of
|
165
|
+
* bytes actually written (since we might have written something).
|
166
|
+
*/
|
167
|
+
if (c > 0)
|
168
|
+
{
|
169
|
+
l->stats.bytes_written += c;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
done:
|
173
|
+
/*
|
174
|
+
* Restore original pointer address so free won't complain about a
|
175
|
+
* modified chunk pointer.
|
176
|
+
*/
|
177
|
+
if (l->aligner > 0)
|
178
|
+
{
|
179
|
+
packet = packet - l->aligner;
|
180
|
+
}
|
181
|
+
free(packet);
|
182
|
+
return (c);
|
183
|
+
}
|
184
|
+
|
185
|
+
#if defined (__WIN32__)
|
186
|
+
libnet_ptag_t
|
187
|
+
libnet_win32_build_fake_ethernet(u_int8_t *dst, u_int8_t *src, u_int16_t type,
|
188
|
+
u_int8_t *payload, u_int32_t payload_s, u_int8_t *packet, libnet_t *l,
|
189
|
+
libnet_ptag_t ptag)
|
190
|
+
{
|
191
|
+
struct libnet_ethernet_hdr eth_hdr;
|
192
|
+
|
193
|
+
if (!packet)
|
194
|
+
{
|
195
|
+
return (-1);
|
196
|
+
}
|
197
|
+
|
198
|
+
memset(ð_hdr, 0, sizeof(eth_hdr));
|
199
|
+
eth_hdr.ether_type = htons(type);
|
200
|
+
memcpy(eth_hdr.ether_dhost, dst, ETHER_ADDR_LEN); /* destination address */
|
201
|
+
memcpy(eth_hdr.ether_shost, src, ETHER_ADDR_LEN); /* source address */
|
202
|
+
|
203
|
+
if (payload && payload_s)
|
204
|
+
{
|
205
|
+
/*
|
206
|
+
* Unchecked runtime error for buf + ETH_H payload to be greater than
|
207
|
+
* the allocated heap memory.
|
208
|
+
*/
|
209
|
+
memcpy(packet + LIBNET_ETH_H, payload, payload_s);
|
210
|
+
}
|
211
|
+
memcpy(packet, ð_hdr, sizeof(eth_hdr));
|
212
|
+
return (1);
|
213
|
+
}
|
214
|
+
|
215
|
+
libnet_ptag_t
|
216
|
+
libnet_win32_build_fake_token(u_int8_t *dst, u_int8_t *src, u_int16_t type,
|
217
|
+
u_int8_t *payload, u_int32_t payload_s, u_int8_t *packet, libnet_t *l,
|
218
|
+
libnet_ptag_t ptag)
|
219
|
+
{
|
220
|
+
struct libnet_token_ring_hdr token_ring_hdr;
|
221
|
+
|
222
|
+
if (!packet)
|
223
|
+
{
|
224
|
+
return (-1);
|
225
|
+
}
|
226
|
+
|
227
|
+
memset(&token_ring_hdr, 0, sizeof(token_ring_hdr));
|
228
|
+
token_ring_hdr.token_ring_access_control = 0x10;
|
229
|
+
token_ring_hdr.token_ring_frame_control = 0x40;
|
230
|
+
token_ring_hdr.token_ring_llc_dsap = 0xaa;
|
231
|
+
token_ring_hdr.token_ring_llc_ssap = 0xaa;
|
232
|
+
token_ring_hdr.token_ring_llc_control_field = 0x03;
|
233
|
+
token_ring_hdr.token_ring_type = htons(type);
|
234
|
+
memcpy(token_ring_hdr.token_ring_dhost, dst, ETHER_ADDR_LEN);
|
235
|
+
memcpy(token_ring_hdr.token_ring_shost, libnet_get_hwaddr(l),
|
236
|
+
ETHER_ADDR_LEN);
|
237
|
+
|
238
|
+
if (payload && payload_s)
|
239
|
+
{
|
240
|
+
/*
|
241
|
+
* Unchecked runtime error for buf + ETH_H payload to be greater than
|
242
|
+
* the allocated heap memory.
|
243
|
+
*/
|
244
|
+
memcpy(packet + LIBNET_TOKEN_RING_H, payload, payload_s);
|
245
|
+
}
|
246
|
+
memcpy(packet, &token_ring_hdr, sizeof(token_ring_hdr));
|
247
|
+
return (1);
|
248
|
+
}
|
249
|
+
|
250
|
+
|
251
|
+
int
|
252
|
+
libnet_win32_write_raw_ipv4(libnet_t *l, u_int8_t *payload, u_int32_t payload_s)
|
253
|
+
{
|
254
|
+
static BYTE dst[ETHER_ADDR_LEN];
|
255
|
+
static BYTE src[ETHER_ADDR_LEN];
|
256
|
+
|
257
|
+
u_int8_t *packet = NULL;
|
258
|
+
u_int32_t packet_s;
|
259
|
+
|
260
|
+
LPPACKET lpPacket = NULL;
|
261
|
+
DWORD remoteip = 0;
|
262
|
+
DWORD BytesTransfered;
|
263
|
+
NetType type;
|
264
|
+
struct libnet_ipv4_hdr *ip_hdr = NULL;
|
265
|
+
|
266
|
+
memset(dst, 0, sizeof(dst));
|
267
|
+
memset(src, 0, sizeof(src));
|
268
|
+
|
269
|
+
packet_s = payload_s + l->link_offset;
|
270
|
+
packet = (u_int8_t *)malloc(packet_s);
|
271
|
+
if (packet == NULL)
|
272
|
+
{
|
273
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
274
|
+
"%s(): failed to allocate packet\n", __func__);
|
275
|
+
return (-1);
|
276
|
+
}
|
277
|
+
|
278
|
+
/* we have to do the IP checksum */
|
279
|
+
if (libnet_do_checksum(l, payload, IPPROTO_IP, LIBNET_IPV4_H) == -1)
|
280
|
+
{
|
281
|
+
/* error msg set in libnet_do_checksum */
|
282
|
+
return (-1);
|
283
|
+
}
|
284
|
+
|
285
|
+
/* MACs, IPs and other stuff... */
|
286
|
+
ip_hdr = (struct libnet_ipv4_hdr *)payload;
|
287
|
+
memcpy(src, libnet_get_hwaddr(l), sizeof(src));
|
288
|
+
remoteip = ip_hdr->ip_dst.S_un.S_addr;
|
289
|
+
|
290
|
+
/* check if the remote station is the local station */
|
291
|
+
if (remoteip == libnet_get_ipaddr4(l))
|
292
|
+
{
|
293
|
+
memcpy(dst, src, sizeof(dst));
|
294
|
+
}
|
295
|
+
else
|
296
|
+
{
|
297
|
+
memcpy(dst, libnet_win32_get_remote_mac(l, remoteip), sizeof(dst));
|
298
|
+
}
|
299
|
+
|
300
|
+
PacketGetNetType(l->lpAdapter, &type);
|
301
|
+
|
302
|
+
switch(type.LinkType)
|
303
|
+
{
|
304
|
+
case NdisMedium802_3:
|
305
|
+
libnet_win32_build_fake_ethernet(dst, src, ETHERTYPE_IP, payload,
|
306
|
+
payload_s, packet, l , 0);
|
307
|
+
break;
|
308
|
+
case NdisMedium802_5:
|
309
|
+
libnet_win32_build_fake_token(dst, src, ETHERTYPE_IP, payload,
|
310
|
+
payload_s, packet, l, 0);
|
311
|
+
break;
|
312
|
+
case NdisMediumFddi:
|
313
|
+
break;
|
314
|
+
case NdisMediumWan:
|
315
|
+
case NdisMediumAtm:
|
316
|
+
case NdisMediumArcnet878_2:
|
317
|
+
default:
|
318
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
319
|
+
"%s(): network type (%d) is not supported\n", __func__,
|
320
|
+
type.LinkType);
|
321
|
+
return (-1);
|
322
|
+
break;
|
323
|
+
}
|
324
|
+
|
325
|
+
BytesTransfered = -1;
|
326
|
+
if ((lpPacket = PacketAllocatePacket()) == NULL)
|
327
|
+
{
|
328
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
329
|
+
"%s(): failed to allocate the LPPACKET structure\n", __func__);
|
330
|
+
return (-1);
|
331
|
+
}
|
332
|
+
|
333
|
+
PacketInitPacket(lpPacket, packet, packet_s);
|
334
|
+
|
335
|
+
/* PacketSendPacket returns a BOOLEAN */
|
336
|
+
if (PacketSendPacket(l->lpAdapter, lpPacket, TRUE))
|
337
|
+
{
|
338
|
+
BytesTransfered = packet_s;
|
339
|
+
}
|
340
|
+
|
341
|
+
PacketFreePacket(lpPacket);
|
342
|
+
free(packet);
|
343
|
+
|
344
|
+
return (BytesTransfered);
|
345
|
+
}
|
346
|
+
|
347
|
+
int
|
348
|
+
libnet_write_raw_ipv4(libnet_t *l, u_int8_t *packet, u_int32_t size)
|
349
|
+
{
|
350
|
+
return (libnet_win32_write_raw_ipv4(l, packet, size));
|
351
|
+
}
|
352
|
+
|
353
|
+
int
|
354
|
+
libnet_write_raw_ipv6(libnet_t *l, u_int8_t *packet, u_int32_t size)
|
355
|
+
{
|
356
|
+
/* no difference in win32 */
|
357
|
+
return (libnet_write_raw_ipv4(l, packet, size));
|
358
|
+
}
|
359
|
+
|
360
|
+
#else /* __WIN32__ */
|
361
|
+
|
362
|
+
int
|
363
|
+
libnet_write_raw_ipv4(libnet_t *l, u_int8_t *packet, u_int32_t size)
|
364
|
+
{
|
365
|
+
int c;
|
366
|
+
struct sockaddr_in sin;
|
367
|
+
struct libnet_ipv4_hdr *ip_hdr;
|
368
|
+
|
369
|
+
/* corey: move check for UID/EUID of 0 from libnet_init() to here */
|
370
|
+
if (getuid() && geteuid())
|
371
|
+
{
|
372
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
373
|
+
"%s(): UID or EUID of 0 required\n", __func__);
|
374
|
+
return -1;
|
375
|
+
}
|
376
|
+
|
377
|
+
if (l == NULL)
|
378
|
+
{
|
379
|
+
return (-1);
|
380
|
+
}
|
381
|
+
|
382
|
+
/* corey: open socket if necessary */
|
383
|
+
if (l->fd == -1) {
|
384
|
+
if (libnet_open_socket(l) == -1) {
|
385
|
+
return -1;
|
386
|
+
}
|
387
|
+
}
|
388
|
+
|
389
|
+
ip_hdr = (struct libnet_ipv4_hdr *)packet;
|
390
|
+
|
391
|
+
#if (LIBNET_BSD_BYTE_SWAP)
|
392
|
+
/*
|
393
|
+
* For link access, we don't need to worry about the inconsistencies of
|
394
|
+
* certain BSD kernels. However, raw socket nuances abound. Certain
|
395
|
+
* BSD implmentations require the ip_len and ip_off fields to be in host
|
396
|
+
* byte order.
|
397
|
+
*/
|
398
|
+
ip_hdr->ip_len = FIX(ip_hdr->ip_len);
|
399
|
+
ip_hdr->ip_off = FIX(ip_hdr->ip_off);
|
400
|
+
#endif /* LIBNET_BSD_BYTE_SWAP */
|
401
|
+
|
402
|
+
memset(&sin, 0, sizeof(sin));
|
403
|
+
sin.sin_family = AF_INET;
|
404
|
+
sin.sin_addr.s_addr = ip_hdr->ip_dst.s_addr;
|
405
|
+
#if (__WIN32__)
|
406
|
+
/* set port for TCP */
|
407
|
+
/*
|
408
|
+
* XXX - should first check to see if there's a pblock for a TCP
|
409
|
+
* header, if not we can use a dummy value for the port.
|
410
|
+
*/
|
411
|
+
if (ip_hdr->ip_p == 6)
|
412
|
+
{
|
413
|
+
struct libnet_tcp_hdr *tcph_p =
|
414
|
+
(struct libnet_tcp_hdr *)(packet + (ip_hdr->ip_hl << 2));
|
415
|
+
sin.sin_port = tcph_p->th_dport;
|
416
|
+
}
|
417
|
+
/* set port for UDP */
|
418
|
+
/*
|
419
|
+
* XXX - should first check to see if there's a pblock for a UDP
|
420
|
+
* header, if not we can use a dummy value for the port.
|
421
|
+
*/
|
422
|
+
else if (ip_hdr->ip_p == 17)
|
423
|
+
{
|
424
|
+
struct libnet_udp_hdr *udph_p =
|
425
|
+
(struct libnet_udp_hdr *)(packet + (ip_hdr->ip_hl << 2));
|
426
|
+
sin.sin_port = udph_p->uh_dport;
|
427
|
+
}
|
428
|
+
#endif /* __WIN32__ */
|
429
|
+
|
430
|
+
c = sendto(l->fd, packet, size, 0, (struct sockaddr *)&sin,
|
431
|
+
sizeof(struct sockaddr));
|
432
|
+
|
433
|
+
#if (LIBNET_BSD_BYTE_SWAP)
|
434
|
+
ip_hdr->ip_len = UNFIX(ip_hdr->ip_len);
|
435
|
+
ip_hdr->ip_off = UNFIX(ip_hdr->ip_off);
|
436
|
+
#endif /* LIBNET_BSD_BYTE_SWAP */
|
437
|
+
|
438
|
+
if (c != size)
|
439
|
+
{
|
440
|
+
#if !(__WIN32__)
|
441
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
442
|
+
"%s(): %d bytes written (%s)\n", __func__, c,
|
443
|
+
strerror(errno));
|
444
|
+
#else /* __WIN32__ */
|
445
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
446
|
+
"%s(): %d bytes written (%d)\n", __func__, c,
|
447
|
+
WSAGetLastError());
|
448
|
+
#endif /* !__WIN32__ */
|
449
|
+
}
|
450
|
+
return (c);
|
451
|
+
}
|
452
|
+
|
453
|
+
int
|
454
|
+
libnet_write_raw_ipv6(libnet_t *l, u_int8_t *packet, u_int32_t size)
|
455
|
+
{
|
456
|
+
#if defined HAVE_SOLARIS && !defined HAVE_SOLARIS_IPV6
|
457
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE, "%s(): no IPv6 support\n",
|
458
|
+
__func__, strerror(errno));
|
459
|
+
return (-1);
|
460
|
+
}
|
461
|
+
#else
|
462
|
+
int c;
|
463
|
+
struct sockaddr_in6 sin;
|
464
|
+
struct libnet_ipv6_hdr *ip_hdr;
|
465
|
+
|
466
|
+
if (l == NULL)
|
467
|
+
{
|
468
|
+
return (-1);
|
469
|
+
}
|
470
|
+
|
471
|
+
/* corey: open socket if necessary */
|
472
|
+
if (l->fd == -1) {
|
473
|
+
if (libnet_open_socket(l) == -1) {
|
474
|
+
return -1;
|
475
|
+
}
|
476
|
+
}
|
477
|
+
|
478
|
+
ip_hdr = (struct libnet_ipv6_hdr *)packet;
|
479
|
+
|
480
|
+
memset(&sin, 0, sizeof(sin));
|
481
|
+
sin.sin6_family = AF_INET6;
|
482
|
+
memcpy(sin.sin6_addr.s6_addr, ip_hdr->ip_dst.libnet_s6_addr,
|
483
|
+
sizeof(ip_hdr->ip_dst.libnet_s6_addr));
|
484
|
+
|
485
|
+
c = sendto(l->fd, packet, size, 0, (struct sockaddr *)&sin, sizeof(sin));
|
486
|
+
if (c != size)
|
487
|
+
{
|
488
|
+
#if !(__WIN32__)
|
489
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
490
|
+
"%s(): %d bytes written (%s)\n", __func__, c,
|
491
|
+
strerror(errno));
|
492
|
+
#else /* __WIN32__ */
|
493
|
+
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
|
494
|
+
"%s(): %d bytes written (%d)\n", __func__, c,
|
495
|
+
WSAGetLastError());
|
496
|
+
#endif /* !__WIN32__ */
|
497
|
+
}
|
498
|
+
return (c);
|
499
|
+
}
|
500
|
+
#endif
|
501
|
+
#endif
|
502
|
+
/* EOF */
|
data/libnet/version.h.in
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
/Libnet-1.1.1-2002.sln/1.1/Tue Sep 16 17:00:47 2003//
|
2
|
+
/Libnet-1.1.1-2003.sln/1.2/Tue Oct 21 04:15:15 2003//
|
3
|
+
/Libnet-latest.ncb/1.3/Tue Sep 16 17:00:47 2003/-kb/
|
4
|
+
/Libnet-latest.opt/1.1/Wed Sep 10 18:30:37 2003/-kb/
|
5
|
+
/Libnet-latest.sln/1.3/Wed Sep 10 18:30:37 2003//
|
6
|
+
/Libnet-latest.suo/1.3/Tue Sep 16 17:00:47 2003/-kb/
|
7
|
+
/Libnet.dsp/1.2/Wed Oct 22 21:19:30 2003//
|
8
|
+
/Libnet.dsw/1.2/Tue Oct 21 04:14:28 2003//
|
9
|
+
/README.txt/1.2/Tue Oct 21 18:54:06 2003//
|
10
|
+
/Libnet-latest.vcproj/1.4/Wed Jan 21 21:37:18 2004//
|
11
|
+
/Libnet-1.1.1-2003.ncb/1.4/Thu Mar 4 21:34:53 2004/-kb/
|
12
|
+
/Libnet-1.1.1-2003.suo/1.4/Thu Mar 4 21:34:53 2004/-kb/
|
13
|
+
/Libnet-1.1.1.vcproj/1.5/Thu Mar 4 21:34:53 2004//
|
14
|
+
/libnet_dll.def/1.7/Thu Mar 4 21:34:53 2004//
|
15
|
+
D
|
@@ -0,0 +1 @@
|
|
1
|
+
/usr/local/CVS/libnet/win32
|
@@ -0,0 +1 @@
|
|
1
|
+
mike@66.234.207.232:/usr/local/CVS
|
@@ -0,0 +1,77 @@
|
|
1
|
+
Microsoft Visual Studio Solution File, Format Version 7.00
|
2
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet-latest-006", "Libnet-latest.vcproj", "{6A0551E1-E416-4125-BCC0-F18F2D601806}"
|
3
|
+
EndProject
|
4
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arp", "..\sample\win32\arp\arp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}"
|
5
|
+
EndProject
|
6
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdp", "..\sample\win32\cdp\cdp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}"
|
7
|
+
EndProject
|
8
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhcp_discover", "..\sample\win32\dhcp_discover\dhcp_discover.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
9
|
+
EndProject
|
10
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_addr", "..\sample\win32\get_addr\get_addr.vcproj", "{DA921F29-B6BE-4E55-9040-B6DD434F1E43}"
|
11
|
+
EndProject
|
12
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icmp_echo_cq", "..\sample\win32\icmp_echo_cq\icmp_echo_cq.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
13
|
+
EndProject
|
14
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcp1", "..\sample\win32\tcp1\tcp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
15
|
+
EndProject
|
16
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "udp1", "..\sample\win32\udp1\udp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
17
|
+
EndProject
|
18
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dns", "..\sample\win32\dns\dns.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
19
|
+
EndProject
|
20
|
+
Global
|
21
|
+
GlobalSection(SolutionConfiguration) = preSolution
|
22
|
+
ConfigName.0 = Debug
|
23
|
+
ConfigName.1 = Release
|
24
|
+
EndGlobalSection
|
25
|
+
GlobalSection(ProjectDependencies) = postSolution
|
26
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
27
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
28
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
29
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
30
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
31
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
32
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
33
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.0 = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
34
|
+
EndGlobalSection
|
35
|
+
GlobalSection(ProjectConfiguration) = postSolution
|
36
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.ActiveCfg = Debug|Win32
|
37
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.Build.0 = Debug|Win32
|
38
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.ActiveCfg = Debug|Win32
|
39
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.Build.0 = Debug|Win32
|
40
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32
|
41
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32
|
42
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32
|
43
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32
|
44
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32
|
45
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32
|
46
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32
|
47
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32
|
48
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
49
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
50
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
51
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
52
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.ActiveCfg = Debug|Win32
|
53
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.Build.0 = Debug|Win32
|
54
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.ActiveCfg = Release|Win32
|
55
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.Build.0 = Release|Win32
|
56
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
57
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
58
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
59
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
60
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
61
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
62
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
63
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
64
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
65
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
66
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
67
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
68
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
69
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
70
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
71
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
72
|
+
EndGlobalSection
|
73
|
+
GlobalSection(ExtensibilityGlobals) = postSolution
|
74
|
+
EndGlobalSection
|
75
|
+
GlobalSection(ExtensibilityAddIns) = postSolution
|
76
|
+
EndGlobalSection
|
77
|
+
EndGlobal
|
Binary file
|
@@ -0,0 +1,84 @@
|
|
1
|
+
Microsoft Visual Studio Solution File, Format Version 8.00
|
2
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arp", "..\sample\win32\arp\arp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}"
|
3
|
+
ProjectSection(ProjectDependencies) = postProject
|
4
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
5
|
+
EndProjectSection
|
6
|
+
EndProject
|
7
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdp", "..\sample\win32\cdp\cdp.vcproj", "{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}"
|
8
|
+
ProjectSection(ProjectDependencies) = postProject
|
9
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
10
|
+
EndProjectSection
|
11
|
+
EndProject
|
12
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhcp_discover", "..\sample\win32\dhcp_discover\dhcp_discover.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
13
|
+
ProjectSection(ProjectDependencies) = postProject
|
14
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
15
|
+
EndProjectSection
|
16
|
+
EndProject
|
17
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_addr", "..\sample\win32\get_addr\get_addr.vcproj", "{DA921F29-B6BE-4E55-9040-B6DD434F1E43}"
|
18
|
+
ProjectSection(ProjectDependencies) = postProject
|
19
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
20
|
+
EndProjectSection
|
21
|
+
EndProject
|
22
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icmp_echo_cq", "..\sample\win32\icmp_echo_cq\icmp_echo_cq.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
23
|
+
ProjectSection(ProjectDependencies) = postProject
|
24
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
25
|
+
EndProjectSection
|
26
|
+
EndProject
|
27
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcp1", "..\sample\win32\tcp1\tcp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
28
|
+
ProjectSection(ProjectDependencies) = postProject
|
29
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
30
|
+
EndProjectSection
|
31
|
+
EndProject
|
32
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "udp1", "..\sample\win32\udp1\udp1.vcproj", "{482A29C5-AAD2-478A-AE7B-089BE39F25B4}"
|
33
|
+
ProjectSection(ProjectDependencies) = postProject
|
34
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806} = {6A0551E1-E416-4125-BCC0-F18F2D601806}
|
35
|
+
EndProjectSection
|
36
|
+
EndProject
|
37
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Libnet-1.1.1", "Libnet-1.1.1.vcproj", "{6A0551E1-E416-4125-BCC0-F18F2D601806}"
|
38
|
+
ProjectSection(ProjectDependencies) = postProject
|
39
|
+
EndProjectSection
|
40
|
+
EndProject
|
41
|
+
Global
|
42
|
+
GlobalSection(SolutionConfiguration) = preSolution
|
43
|
+
Debug = Debug
|
44
|
+
Release = Release
|
45
|
+
EndGlobalSection
|
46
|
+
GlobalSection(ProjectConfiguration) = postSolution
|
47
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32
|
48
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32
|
49
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32
|
50
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32
|
51
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.ActiveCfg = Debug|Win32
|
52
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Debug.Build.0 = Debug|Win32
|
53
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.ActiveCfg = Release|Win32
|
54
|
+
{8DB5763E-7AA2-43BE-9D7A-1F4138DEA904}.Release.Build.0 = Release|Win32
|
55
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
56
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
57
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
58
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
59
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.ActiveCfg = Debug|Win32
|
60
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Debug.Build.0 = Debug|Win32
|
61
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.ActiveCfg = Release|Win32
|
62
|
+
{DA921F29-B6BE-4E55-9040-B6DD434F1E43}.Release.Build.0 = Release|Win32
|
63
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
64
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
65
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
66
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
67
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
68
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
69
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
70
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
71
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.ActiveCfg = Debug|Win32
|
72
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Debug.Build.0 = Debug|Win32
|
73
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.ActiveCfg = Release|Win32
|
74
|
+
{482A29C5-AAD2-478A-AE7B-089BE39F25B4}.Release.Build.0 = Release|Win32
|
75
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.ActiveCfg = Debug|Win32
|
76
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Debug.Build.0 = Debug|Win32
|
77
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.ActiveCfg = Release|Win32
|
78
|
+
{6A0551E1-E416-4125-BCC0-F18F2D601806}.Release.Build.0 = Release|Win32
|
79
|
+
EndGlobalSection
|
80
|
+
GlobalSection(ExtensibilityGlobals) = postSolution
|
81
|
+
EndGlobalSection
|
82
|
+
GlobalSection(ExtensibilityAddIns) = postSolution
|
83
|
+
EndGlobalSection
|
84
|
+
EndGlobal
|
Binary file
|