mirror of
https://github.com/nmap/nmap.git
synced 2025-12-07 13:11:28 +00:00
Move definitions of struct ip and struct icmp to struct_ip.h.
This was failing to compile to platforms where HAVE_STRUCT_IP is true but HAVE_STRUCT_ICMP is false, because struct ip was not being defined (by a system header) before struct icmp.
This commit is contained in:
110
struct_ip.h
110
struct_ip.h
@@ -43,3 +43,113 @@ struct ip {
|
|||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
#include <netinet/ip_icmp.h>
|
#include <netinet/ip_icmp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRUCT_IP
|
||||||
|
#define HAVE_STRUCT_IP
|
||||||
|
|
||||||
|
/* From Linux glibc, which apparently borrowed it from
|
||||||
|
BSD code. Slightly modified for portability --fyodor@insecure.org */
|
||||||
|
/*
|
||||||
|
* Structure of an internet header, naked of options.
|
||||||
|
*/
|
||||||
|
struct ip
|
||||||
|
{
|
||||||
|
#if WORDS_BIGENDIAN
|
||||||
|
u_int8_t ip_v:4; /* version */
|
||||||
|
u_int8_t ip_hl:4; /* header length */
|
||||||
|
#else
|
||||||
|
u_int8_t ip_hl:4; /* header length */
|
||||||
|
u_int8_t ip_v:4; /* version */
|
||||||
|
#endif
|
||||||
|
u_int8_t 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_int8_t ip_ttl; /* time to live */
|
||||||
|
u_int8_t ip_p; /* protocol */
|
||||||
|
u_short ip_sum; /* checksum */
|
||||||
|
struct in_addr ip_src, ip_dst; /* source and dest address */
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* HAVE_STRUCT_IP */
|
||||||
|
|
||||||
|
#ifndef HAVE_STRUCT_ICMP
|
||||||
|
#define HAVE_STRUCT_ICMP
|
||||||
|
/* From Linux /usr/include/netinet/ip_icmp.h GLIBC */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Internal of an ICMP Router Advertisement
|
||||||
|
*/
|
||||||
|
struct icmp_ra_addr
|
||||||
|
{
|
||||||
|
u_int32_t ira_addr;
|
||||||
|
u_int32_t ira_preference;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct icmp
|
||||||
|
{
|
||||||
|
u_int8_t icmp_type; /* type of message, see below */
|
||||||
|
u_int8_t icmp_code; /* type sub code */
|
||||||
|
u_int16_t icmp_cksum; /* ones complement checksum of struct */
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct ih_idseq /* echo datagram */
|
||||||
|
{
|
||||||
|
u_int16_t icd_id;
|
||||||
|
u_int16_t icd_seq;
|
||||||
|
} ih_idseq;
|
||||||
|
u_int32_t ih_void;
|
||||||
|
|
||||||
|
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
|
||||||
|
struct ih_pmtu
|
||||||
|
{
|
||||||
|
u_int16_t ipm_void;
|
||||||
|
u_int16_t ipm_nextmtu;
|
||||||
|
} ih_pmtu;
|
||||||
|
|
||||||
|
struct ih_rtradv
|
||||||
|
{
|
||||||
|
u_int8_t irt_num_addrs;
|
||||||
|
u_int8_t irt_wpa;
|
||||||
|
u_int16_t irt_lifetime;
|
||||||
|
} ih_rtradv;
|
||||||
|
} icmp_hun;
|
||||||
|
/* Removed icmp_pptr and icmp_gwaddr from union and #defines because they conflict with dnet */
|
||||||
|
#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
|
||||||
|
{
|
||||||
|
u_int32_t its_otime;
|
||||||
|
u_int32_t its_rtime;
|
||||||
|
u_int32_t its_ttime;
|
||||||
|
} id_ts;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct ip idi_ip;
|
||||||
|
/* options and then 64 bits of data */
|
||||||
|
} id_ip;
|
||||||
|
struct icmp_ra_addr id_radv;
|
||||||
|
u_int32_t id_mask;
|
||||||
|
u_int8_t 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
|
||||||
|
};
|
||||||
|
#endif /* HAVE_STRUCT_ICMP */
|
||||||
|
|||||||
110
tcpip.h
110
tcpip.h
@@ -245,116 +245,6 @@ class PacketCounter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifndef HAVE_STRUCT_IP
|
|
||||||
#define HAVE_STRUCT_IP
|
|
||||||
|
|
||||||
/* From Linux glibc, which apparently borrowed it from
|
|
||||||
BSD code. Slightly modified for portability --fyodor@insecure.org */
|
|
||||||
/*
|
|
||||||
* Structure of an internet header, naked of options.
|
|
||||||
*/
|
|
||||||
struct ip
|
|
||||||
{
|
|
||||||
#if WORDS_BIGENDIAN
|
|
||||||
u_int8_t ip_v:4; /* version */
|
|
||||||
u_int8_t ip_hl:4; /* header length */
|
|
||||||
#else
|
|
||||||
u_int8_t ip_hl:4; /* header length */
|
|
||||||
u_int8_t ip_v:4; /* version */
|
|
||||||
#endif
|
|
||||||
u_int8_t 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_int8_t ip_ttl; /* time to live */
|
|
||||||
u_int8_t ip_p; /* protocol */
|
|
||||||
u_short ip_sum; /* checksum */
|
|
||||||
struct in_addr ip_src, ip_dst; /* source and dest address */
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* HAVE_STRUCT_IP */
|
|
||||||
|
|
||||||
#ifndef HAVE_STRUCT_ICMP
|
|
||||||
#define HAVE_STRUCT_ICMP
|
|
||||||
/* From Linux /usr/include/netinet/ip_icmp.h GLIBC */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Internal of an ICMP Router Advertisement
|
|
||||||
*/
|
|
||||||
struct icmp_ra_addr
|
|
||||||
{
|
|
||||||
u_int32_t ira_addr;
|
|
||||||
u_int32_t ira_preference;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct icmp
|
|
||||||
{
|
|
||||||
u_int8_t icmp_type; /* type of message, see below */
|
|
||||||
u_int8_t icmp_code; /* type sub code */
|
|
||||||
u_int16_t icmp_cksum; /* ones complement checksum of struct */
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct ih_idseq /* echo datagram */
|
|
||||||
{
|
|
||||||
u_int16_t icd_id;
|
|
||||||
u_int16_t icd_seq;
|
|
||||||
} ih_idseq;
|
|
||||||
u_int32_t ih_void;
|
|
||||||
|
|
||||||
/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
|
|
||||||
struct ih_pmtu
|
|
||||||
{
|
|
||||||
u_int16_t ipm_void;
|
|
||||||
u_int16_t ipm_nextmtu;
|
|
||||||
} ih_pmtu;
|
|
||||||
|
|
||||||
struct ih_rtradv
|
|
||||||
{
|
|
||||||
u_int8_t irt_num_addrs;
|
|
||||||
u_int8_t irt_wpa;
|
|
||||||
u_int16_t irt_lifetime;
|
|
||||||
} ih_rtradv;
|
|
||||||
} icmp_hun;
|
|
||||||
/* Removed icmp_pptr and icmp_gwaddr from union and #defines because they conflict with dnet */
|
|
||||||
#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
|
|
||||||
{
|
|
||||||
u_int32_t its_otime;
|
|
||||||
u_int32_t its_rtime;
|
|
||||||
u_int32_t its_ttime;
|
|
||||||
} id_ts;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct ip idi_ip;
|
|
||||||
/* options and then 64 bits of data */
|
|
||||||
} id_ip;
|
|
||||||
struct icmp_ra_addr id_radv;
|
|
||||||
u_int32_t id_mask;
|
|
||||||
u_int8_t 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
|
|
||||||
};
|
|
||||||
#endif /* HAVE_STRUCT_ICMP */
|
|
||||||
|
|
||||||
/* Some systems might not have this */
|
/* Some systems might not have this */
|
||||||
#ifndef IPPROTO_IGMP
|
#ifndef IPPROTO_IGMP
|
||||||
#define IPPROTO_IGMP 2
|
#define IPPROTO_IGMP 2
|
||||||
|
|||||||
Reference in New Issue
Block a user