Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
ae5e93e3
Commit
ae5e93e3
authored
Nov 13, 1999
by
Francois Gouget
Committed by
Alexandre Julliard
Nov 13, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use BSD headers for ICMP portability.
parent
111f0e35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
412 additions
and
2 deletions
+412
-2
configure
configure
+0
-0
configure.in
configure.in
+4
-0
icmp_main.c
dlls/icmp/icmp_main.c
+30
-2
ip.h
dlls/icmp/ip.h
+184
-0
ip_icmp.h
dlls/icmp/ip_icmp.h
+190
-0
config.h.in
include/config.h.in
+4
-0
No files found.
configure
View file @
ae5e93e3
This diff is collapsed.
Click to expand it.
configure.in
View file @
ae5e93e3
...
...
@@ -507,6 +507,10 @@ then
AC_DEFINE(NO_REENTRANT_X11)
fi
dnl **** Check for endianness ****
AC_C_BIGENDIAN
dnl **** Check for functions ****
AC_FUNC_ALLOCA()
...
...
dlls/icmp/icmp_main.c
View file @
ae5e93e3
...
...
@@ -30,8 +30,7 @@
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <sys/time.h>
#include <malloc.h>
#include <string.h>
...
...
@@ -52,6 +51,35 @@
#include "wine/icmpapi.h"
#include "debugtools.h"
#undef BIG_ENDIAN
#undef LITTLE_ENDIAN
#undef BYTE_ORDER
/* Set up endiannes macros for the ip and ip_icmp BSD headers */
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
#ifndef LITTLE_ENDIAN
#define LITTLE_ENDIAN 1234
#endif
#ifndef BYTE_ORDER
#include "config.h"
#ifdef WORDS_BIGENDIAN
#define BYTE_ORDER BIG_ENDIAN
#else
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#endif
/* BYTE_ORDER */
/* These are BSD headers. We use these here because they are needed on
* libc5 Linux systems. On other platforms they are usually simply more
* complete than the native stuff, and cause less portability problems
* so we use them anyway.
*/
#include "ip.h"
#include "ip_icmp.h"
DEFAULT_DEBUG_CHANNEL
(
icmp
)
/* Define the following macro to use the winsock functions */
...
...
dlls/icmp/ip.h
0 → 100644
View file @
ae5e93e3
/*
* 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.
*
* @(#)ip.h 8.2 (Berkeley) 6/1/94
* $FreeBSD: src/sys/netinet/ip.h,v 1.16 1999/08/28 00:49:19 peter Exp $
*/
#ifndef _NETINET_IP_H_
#define _NETINET_IP_H_
/*
* Definitions for internet protocol version 4.
* Per RFC 791, September 1981.
*/
#define IPVERSION 4
/*
* Structure of an internet header, naked of options.
*/
struct
ip
{
#ifdef _IP_VHL
u_char
ip_vhl
;
/* version << 4 | header length >> 2 */
#else
#if BYTE_ORDER == LITTLE_ENDIAN
u_int
ip_hl
:
4
,
/* header length */
ip_v
:
4
;
/* version */
#endif
#if BYTE_ORDER == BIG_ENDIAN
u_int
ip_v
:
4
,
/* version */
ip_hl
:
4
;
/* header length */
#endif
#endif
/* not _IP_VHL */
u_char
ip_tos
;
/* type of service */
u_short
ip_len
;
/* total length */
u_short
ip_id
;
/* identification */
u_short
ip_off
;
/* fragment offset field */
#define IP_RF 0x8000
/* reserved fragment flag */
#define IP_DF 0x4000
/* dont fragment flag */
#define IP_MF 0x2000
/* more fragments flag */
#define IP_OFFMASK 0x1fff
/* mask for fragmenting bits */
u_char
ip_ttl
;
/* time to live */
u_char
ip_p
;
/* protocol */
u_short
ip_sum
;
/* checksum */
struct
in_addr
ip_src
,
ip_dst
;
/* source and dest address */
};
#ifdef _IP_VHL
#define IP_MAKE_VHL(v, hl) ((v) << 4 | (hl))
#define IP_VHL_HL(vhl) ((vhl) & 0x0f)
#define IP_VHL_V(vhl) ((vhl) >> 4)
#define IP_VHL_BORING 0x45
#endif
#define IP_MAXPACKET 65535
/* maximum packet size */
/*
* Definitions for IP type of service (ip_tos)
*/
#define IPTOS_LOWDELAY 0x10
#define IPTOS_THROUGHPUT 0x08
#define IPTOS_RELIABILITY 0x04
#define IPTOS_MINCOST 0x02
/*
* Definitions for IP precedence (also in ip_tos) (hopefully unused)
*/
#define IPTOS_PREC_NETCONTROL 0xe0
#define IPTOS_PREC_INTERNETCONTROL 0xc0
#define IPTOS_PREC_CRITIC_ECP 0xa0
#define IPTOS_PREC_FLASHOVERRIDE 0x80
#define IPTOS_PREC_FLASH 0x60
#define IPTOS_PREC_IMMEDIATE 0x40
#define IPTOS_PREC_PRIORITY 0x20
#define IPTOS_PREC_ROUTINE 0x00
/*
* Definitions for options.
*/
#define IPOPT_COPIED(o) ((o)&0x80)
#define IPOPT_CLASS(o) ((o)&0x60)
#define IPOPT_NUMBER(o) ((o)&0x1f)
#define IPOPT_CONTROL 0x00
#define IPOPT_RESERVED1 0x20
#define IPOPT_DEBMEAS 0x40
#define IPOPT_RESERVED2 0x60
#define IPOPT_EOL 0
/* end of option list */
#define IPOPT_NOP 1
/* no operation */
#define IPOPT_RR 7
/* record packet route */
#define IPOPT_TS 68
/* timestamp */
#define IPOPT_SECURITY 130
/* provide s,c,h,tcc */
#define IPOPT_LSRR 131
/* loose source route */
#define IPOPT_SATID 136
/* satnet id */
#define IPOPT_SSRR 137
/* strict source route */
#define IPOPT_RA 148
/* router alert */
/*
* Offsets to fields in options other than EOL and NOP.
*/
#define IPOPT_OPTVAL 0
/* option ID */
#define IPOPT_OLEN 1
/* option length */
#define IPOPT_OFFSET 2
/* offset within option */
#define IPOPT_MINOFF 4
/* min value of above */
/*
* Time stamp option structure.
*/
struct
ip_timestamp
{
u_char
ipt_code
;
/* IPOPT_TS */
u_char
ipt_len
;
/* size of structure (variable) */
u_char
ipt_ptr
;
/* index of current entry */
#if BYTE_ORDER == LITTLE_ENDIAN
u_int
ipt_flg
:
4
,
/* flags, see below */
ipt_oflw
:
4
;
/* overflow counter */
#endif
#if BYTE_ORDER == BIG_ENDIAN
u_int
ipt_oflw
:
4
,
/* overflow counter */
ipt_flg
:
4
;
/* flags, see below */
#endif
union
ipt_timestamp
{
n_long
ipt_time
[
1
];
struct
ipt_ta
{
struct
in_addr
ipt_addr
;
n_long
ipt_time
;
}
ipt_ta
[
1
];
}
ipt_timestamp
;
};
/* flag bits for ipt_flg */
#define IPOPT_TS_TSONLY 0
/* timestamps only */
#define IPOPT_TS_TSANDADDR 1
/* timestamps and addresses */
#define IPOPT_TS_PRESPEC 3
/* specified modules only */
/* bits for security (not byte swapped) */
#define IPOPT_SECUR_UNCLASS 0x0000
#define IPOPT_SECUR_CONFID 0xf135
#define IPOPT_SECUR_EFTO 0x789a
#define IPOPT_SECUR_MMMM 0xbc4d
#define IPOPT_SECUR_RESTR 0xaf13
#define IPOPT_SECUR_SECRET 0xd788
#define IPOPT_SECUR_TOPSECRET 0x6bc5
/*
* Internet implementation parameters.
*/
#define MAXTTL 255
/* maximum time to live (seconds) */
#define IPDEFTTL 64
/* default ttl, from RFC 1340 */
#define IPFRAGTTL 60
/* time to live for frags, slowhz */
#define IPTTLDEC 1
/* subtracted when forwarding */
#define IP_MSS 576
/* default maximum segment size */
#endif
dlls/icmp/ip_icmp.h
0 → 100644
View file @
ae5e93e3
/*
* 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.
*
* @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93
* $FreeBSD: src/sys/netinet/ip_icmp.h,v 1.13 1999/08/28 00:49:24 peter Exp $
*/
#ifndef _NETINET_IP_ICMP_H_
#define _NETINET_IP_ICMP_H_
/*
* Interface Control Message Protocol Definitions.
* Per RFC 792, September 1981.
*/
/*
* Internal of an ICMP Router Advertisement
*/
struct
icmp_ra_addr
{
u_int32_t
ira_addr
;
u_int32_t
ira_preference
;
};
/*
* Structure of an icmp header.
*/
struct
icmp
{
u_char
icmp_type
;
/* type of message, see below */
u_char
icmp_code
;
/* type sub code */
u_short
icmp_cksum
;
/* ones complement cksum of struct */
union
{
u_char
ih_pptr
;
/* ICMP_PARAMPROB */
struct
in_addr
ih_gwaddr
;
/* ICMP_REDIRECT */
struct
ih_idseq
{
n_short
icd_id
;
n_short
icd_seq
;
}
ih_idseq
;
int
ih_void
;
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
struct
ih_pmtu
{
n_short
ipm_void
;
n_short
ipm_nextmtu
;
}
ih_pmtu
;
struct
ih_rtradv
{
u_char
irt_num_addrs
;
u_char
irt_wpa
;
u_int16_t
irt_lifetime
;
}
ih_rtradv
;
}
icmp_hun
;
#define icmp_pptr icmp_hun.ih_pptr
#define icmp_gwaddr icmp_hun.ih_gwaddr
#define icmp_id icmp_hun.ih_idseq.icd_id
#define icmp_seq icmp_hun.ih_idseq.icd_seq
#define icmp_void icmp_hun.ih_void
#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
union
{
struct
id_ts
{
n_time
its_otime
;
n_time
its_rtime
;
n_time
its_ttime
;
}
id_ts
;
struct
id_ip
{
struct
ip
idi_ip
;
/* options and then 64 bits of data */
}
id_ip
;
struct
icmp_ra_addr
id_radv
;
u_int32_t
id_mask
;
char
id_data
[
1
];
}
icmp_dun
;
#define icmp_otime icmp_dun.id_ts.its_otime
#define icmp_rtime icmp_dun.id_ts.its_rtime
#define icmp_ttime icmp_dun.id_ts.its_ttime
#define icmp_ip icmp_dun.id_ip.idi_ip
#define icmp_radv icmp_dun.id_radv
#define icmp_mask icmp_dun.id_mask
#define icmp_data icmp_dun.id_data
};
/*
* Lower bounds on packet lengths for various types.
* For the error advice packets must first insure that the
* packet is large enough to contain the returned ip header.
* Only then can we do the check to see if 64 bits of packet
* data have been returned, since we need to check the returned
* ip header length.
*/
#define ICMP_MINLEN 8
/* abs minimum */
#define ICMP_TSLEN (8 + 3 * sizeof (n_time))
/* timestamp */
#define ICMP_MASKLEN 12
/* address mask */
#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8)
/* min */
#ifndef _IP_VHL
#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
/* N.B.: must separately check that ip_hl >= 5 */
#else
#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8)
/* N.B.: must separately check that header length >= 5 */
#endif
/*
* Definition of type and code field values.
*/
#define ICMP_ECHOREPLY 0
/* echo reply */
#define ICMP_UNREACH 3
/* dest unreachable, codes: */
#define ICMP_UNREACH_NET 0
/* bad net */
#define ICMP_UNREACH_HOST 1
/* bad host */
#define ICMP_UNREACH_PROTOCOL 2
/* bad protocol */
#define ICMP_UNREACH_PORT 3
/* bad port */
#define ICMP_UNREACH_NEEDFRAG 4
/* IP_DF caused drop */
#define ICMP_UNREACH_SRCFAIL 5
/* src route failed */
#define ICMP_UNREACH_NET_UNKNOWN 6
/* unknown net */
#define ICMP_UNREACH_HOST_UNKNOWN 7
/* unknown host */
#define ICMP_UNREACH_ISOLATED 8
/* src host isolated */
#define ICMP_UNREACH_NET_PROHIB 9
/* prohibited access */
#define ICMP_UNREACH_HOST_PROHIB 10
/* ditto */
#define ICMP_UNREACH_TOSNET 11
/* bad tos for net */
#define ICMP_UNREACH_TOSHOST 12
/* bad tos for host */
#define ICMP_UNREACH_FILTER_PROHIB 13
/* admin prohib */
#define ICMP_UNREACH_HOST_PRECEDENCE 14
/* host prec vio. */
#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15
/* prec cutoff */
#define ICMP_SOURCEQUENCH 4
/* packet lost, slow down */
#define ICMP_REDIRECT 5
/* shorter route, codes: */
#define ICMP_REDIRECT_NET 0
/* for network */
#define ICMP_REDIRECT_HOST 1
/* for host */
#define ICMP_REDIRECT_TOSNET 2
/* for tos and net */
#define ICMP_REDIRECT_TOSHOST 3
/* for tos and host */
#define ICMP_ECHO 8
/* echo service */
#define ICMP_ROUTERADVERT 9
/* router advertisement */
#define ICMP_ROUTERSOLICIT 10
/* router solicitation */
#define ICMP_TIMXCEED 11
/* time exceeded, code: */
#define ICMP_TIMXCEED_INTRANS 0
/* ttl==0 in transit */
#define ICMP_TIMXCEED_REASS 1
/* ttl==0 in reass */
#define ICMP_PARAMPROB 12
/* ip header bad */
#define ICMP_PARAMPROB_OPTABSENT 1
/* req. opt. absent */
#define ICMP_TSTAMP 13
/* timestamp request */
#define ICMP_TSTAMPREPLY 14
/* timestamp reply */
#define ICMP_IREQ 15
/* information request */
#define ICMP_IREQREPLY 16
/* information reply */
#define ICMP_MASKREQ 17
/* address mask request */
#define ICMP_MASKREPLY 18
/* address mask reply */
#define ICMP_MAXTYPE 18
#define ICMP_INFOTYPE(type) \
((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
#ifdef KERNEL
void
icmp_error
__P
((
struct
mbuf
*
,
int
,
int
,
n_long
,
struct
ifnet
*
));
void
icmp_input
__P
((
struct
mbuf
*
,
int
));
#endif
#endif
include/config.h.in
View file @
ae5e93e3
...
...
@@ -37,6 +37,10 @@
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if your processor stores words with the most significant
byte first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Define if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment