forked from nmap/nmap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
STRUCT_PROTO | int.h
162 lines (162 loc) · 4.78 KB
/
STRUCT_PROTO | int.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
➜ .c
▶ \libs
>>> in \aix # define Name && **vars \members\&*struct /int/proto @@ else in <netinet/ip.h>:
`
struct ip
{~
struct ip_firstfour ip_ff;
# define ip_v`ip_ff.ip_fv
# define ip_hl`ip_ff.ip_fhl
# define ip_vhl`ip_ff.ip_fvhl
# define ip_tos`ip_ff.ip_ftos
# define ip_len`ip_ff.ip_flen
/*~
this break; code.exe ["USE"]: Name *ip_v for "License" *struct ip_hdr in libdnet
aix define in \work if include Version_license \list **include ++ code.exe ["USE"]: name in amds.xor include ["END","COUNT"]: ^u define struct \int\proto this file.txt include in .cc \file .h
$~# include
v`
# ifdef WIN32
typedef unsigned __int32 u_int32_t;
typedef unsigned __int16 u_int16_t;
typedef unsigned __int8 u_int8_t;
# endif
$ ["USE"]: define in netinet/ip.h ["USE"]: struct 192.0.0.1\0
# ifndef __FAVOR_BSD
# define __FAVOR_BSD
# endif
# ifndef __USE_BSD
# define __USE_BSD
# endif
# ifndef _BSD_SOURCE
# define _BSD_SOURCE
# endif
`
/* BSDI needs this to insure the correct struct ip */
# undef _IP_VHL
`
# ifndef NETINET_IN_SYSTM_H /* This guarding is needed for at least some versions of OpenBSD */
# include <netinet/in_systm.h> /* defines n_long needed for netinet/ip.h */
# define NETINET_IN_SYSTM_H
# endif
# if HAVE_NET_IF_H
# ifndef NET_IF_H /* This guarding is needed for at least some versions of OpenBSD */
# include <net/if.h>
# define NET_IF_H
# endif
# endif
# ifndef NETINET_IP_H /* This guarding is needed for at least some versions of OpenBSD */
# include <netinet/ip.h>
# define NETINET_IP_H
# endif
# include <net/if_arp.h>
`
# ifndef WIN32
# include <netinet/ip_icmp.h>
# endif
`
# ifndef HAVE_STRUCT_IP
# define HAVE_STRUCT_IP
`
>>> from :root$glibc from \bsd\code.exe --mod for /port --fyodor@nmap.org
{
struct *int \head *opt
};
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 /* don't 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 :root$~/usr/include/netinet/ip_icmp.h \glibc
`
>>> int *icmp/router/ad
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 */