ISC DHCP
4.3.3-P1
A reference DHCPv4 and DHCPv6 implementation
ip.h
Go to the documentation of this file.
1
/* $NetBSD: ip.h,v 1.9 1995/05/15 01:22:44 cgd Exp $ */
2
3
/*
4
* Copyright (c) 1982, 1986, 1993
5
* The Regents of the University of California. All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
* 3. Neither the name of the University nor the names of its contributors
16
* may be used to endorse or promote products derived from this software
17
* without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
* SUCH DAMAGE.
30
*
31
* @(#)ip.h 8.1 (Berkeley) 6/10/93
32
*/
33
34
/*
35
* Definitions for internet protocol version 4.
36
* Per RFC 791, September 1981.
37
*/
38
#define IPVERSION 4
39
40
/*
41
* Structure of an internet header, naked of options.
42
*
43
* We declare ip_len and ip_off to be short, rather than u_short
44
* pragmatically since otherwise unsigned comparisons can result
45
* against negative integers quite easily, and fail in subtle ways.
46
*/
47
struct
ip
{
48
u_int8_t
ip_fvhl
;
/* header length, version */
49
u_int8_t
ip_tos
;
/* type of service */
50
int16_t
ip_len
;
/* total length */
51
u_int16_t
ip_id
;
/* identification */
52
int16_t
ip_off
;
/* fragment offset field */
53
#define IP_DF 0x4000
/* dont fragment flag */
54
#define IP_MF 0x2000
/* more fragments flag */
55
#define IP_OFFMASK 0x1fff
/* mask for fragmenting bits */
56
u_int8_t
ip_ttl
;
/* time to live */
57
u_int8_t
ip_p
;
/* protocol */
58
u_int16_t
ip_sum
;
/* checksum */
59
struct
in_addr ip_src,
ip_dst
;
/* source and dest address */
60
};
61
62
#define IP_V(iph) ((iph)->ip_fvhl >> 4)
63
#define IP_HL(iph) (((iph)->ip_fvhl & 0x0F) << 2)
64
#define IP_V_SET(iph,x) ((iph)->ip_fvhl = ((iph)->ip_fvhl & 0x0F) | ((x) << 4))
65
#define IP_HL_SET(iph,x) ((iph)->ip_fvhl = \
66
((iph)->ip_fvhl & 0xF0) | (((x) >> 2) & 0x0F))
67
68
#define IP_MAXPACKET 65535
/* maximum packet size */
69
70
/*
71
* Definitions for IP type of service (ip_tos)
72
*/
73
#define IPTOS_LOWDELAY 0x10
74
#define IPTOS_THROUGHPUT 0x08
75
#define IPTOS_RELIABILITY 0x04
76
/* IPTOS_LOWCOST 0x02 XXX */
77
78
/*
79
* Definitions for IP precedence (also in ip_tos) (hopefully unused)
80
*/
81
#define IPTOS_PREC_NETCONTROL 0xe0
82
#define IPTOS_PREC_INTERNETCONTROL 0xc0
83
#define IPTOS_PREC_CRITIC_ECP 0xa0
84
#define IPTOS_PREC_FLASHOVERRIDE 0x80
85
#define IPTOS_PREC_FLASH 0x60
86
#define IPTOS_PREC_IMMEDIATE 0x40
87
#define IPTOS_PREC_PRIORITY 0x20
88
#define IPTOS_PREC_ROUTINE 0x00
89
90
/*
91
* Definitions for options.
92
*/
93
#define IPOPT_COPIED(o) ((o)&0x80)
94
#define IPOPT_CLASS(o) ((o)&0x60)
95
#define IPOPT_NUMBER(o) ((o)&0x1f)
96
97
#define IPOPT_CONTROL 0x00
98
#define IPOPT_RESERVED1 0x20
99
#define IPOPT_DEBMEAS 0x40
100
#define IPOPT_RESERVED2 0x60
101
102
#define IPOPT_EOL 0
/* end of option list */
103
#define IPOPT_NOP 1
/* no operation */
104
105
#define IPOPT_RR 7
/* record packet route */
106
#define IPOPT_TS 68
/* timestamp */
107
#define IPOPT_SECURITY 130
/* provide s,c,h,tcc */
108
#define IPOPT_LSRR 131
/* loose source route */
109
#define IPOPT_SATID 136
/* satnet id */
110
#define IPOPT_SSRR 137
/* strict source route */
111
112
/*
113
* Offsets to fields in options other than EOL and NOP.
114
*/
115
#define IPOPT_OPTVAL 0
/* option ID */
116
#define IPOPT_OLEN 1
/* option length */
117
#define IPOPT_OFFSET 2
/* offset within option */
118
#define IPOPT_MINOFF 4
/* min value of above */
119
120
/*
121
* Time stamp option structure.
122
*/
123
struct
ip_timestamp
{
124
u_int8_t
ipt_code
;
/* IPOPT_TS */
125
u_int8_t
ipt_len
;
/* size of structure (variable) */
126
u_int8_t
ipt_ptr
;
/* index of current entry */
127
u_int8_t
ipt_flg_oflw
;
/* flags, see below, overflow counter */
128
union
ipt_timestamp
{
129
u_int32_t ipt_time[1];
130
struct
ipt_ta
{
131
struct
in_addr ipt_addr;
132
u_int32_t
ipt_time
;
133
}
ipt_ta
[1];
134
}
ipt_timestamp
;
135
};
136
137
/* flag bits for ipt_flg */
138
#define IPOPT_TS_TSONLY 0
/* timestamps only */
139
#define IPOPT_TS_TSANDADDR 1
/* timestamps and addresses */
140
#define IPOPT_TS_PRESPEC 3
/* specified modules only */
141
142
/* bits for security (not byte swapped) */
143
#define IPOPT_SECUR_UNCLASS 0x0000
144
#define IPOPT_SECUR_CONFID 0xf135
145
#define IPOPT_SECUR_EFTO 0x789a
146
#define IPOPT_SECUR_MMMM 0xbc4d
147
#define IPOPT_SECUR_RESTR 0xaf13
148
#define IPOPT_SECUR_SECRET 0xd788
149
#define IPOPT_SECUR_TOPSECRET 0x6bc5
150
151
/*
152
* Internet implementation parameters.
153
*/
154
#define MAXTTL 255
/* maximum time to live (seconds) */
155
#define IPDEFTTL 64
/* default ttl, from RFC 1340 */
156
#define IPFRAGTTL 60
/* time to live for frags, slowhz */
157
#define IPTTLDEC 1
/* subtracted when forwarding */
158
159
#define IP_MSS 576
/* default maximum segment size */
ip_timestamp::ipt_code
u_int8_t ipt_code
Definition:
ip.h:124
ip::ip_dst
struct in_addr ip_src ip_dst
Definition:
ip.h:59
ip::ip_ttl
u_int8_t ip_ttl
Definition:
ip.h:56
ip::ip_tos
u_int8_t ip_tos
Definition:
ip.h:49
ip::ip_off
int16_t ip_off
Definition:
ip.h:52
ip_timestamp::ipt_timestamp::ipt_ta::ipt_time
u_int32_t ipt_time
Definition:
ip.h:132
ip_timestamp::ipt_ptr
u_int8_t ipt_ptr
Definition:
ip.h:126
ip
Definition:
ip.h:47
ip_timestamp::ipt_timestamp::ipt_ta
Definition:
ip.h:130
ip_timestamp::ipt_timestamp
Definition:
ip.h:128
ip::ip_len
int16_t ip_len
Definition:
ip.h:50
ip_timestamp
Definition:
ip.h:123
ip_timestamp::ipt_flg_oflw
u_int8_t ipt_flg_oflw
Definition:
ip.h:127
ip::ip_sum
u_int16_t ip_sum
Definition:
ip.h:58
ip::ip_fvhl
u_int8_t ip_fvhl
Definition:
ip.h:48
ip::ip_id
u_int16_t ip_id
Definition:
ip.h:51
ip::ip_p
u_int8_t ip_p
Definition:
ip.h:57
ip_timestamp::ipt_len
u_int8_t ipt_len
Definition:
ip.h:125
includes
netinet
ip.h
Generated on Sat Aug 6 2016 18:19:55 for ISC DHCP by
1.8.11