Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/libsa/bootp.h
34677 views
1
/* $NetBSD: bootp.h,v 1.4 1997/09/06 13:55:57 drochner Exp $ */
2
3
/*
4
* Bootstrap Protocol (BOOTP). RFC951 and RFC1048.
5
*
6
* This file specifies the "implementation-independent" BOOTP protocol
7
* information which is common to both client and server.
8
*
9
* Copyright 1988 by Carnegie Mellon.
10
*
11
* Permission to use, copy, modify, and distribute this program for any
12
* purpose and without fee is hereby granted, provided that this copyright
13
* and permission notice appear on all copies and supporting documentation,
14
* the name of Carnegie Mellon not be used in advertising or publicity
15
* pertaining to distribution of the program without specific prior
16
* permission, and notice be given in supporting documentation that copying
17
* and distribution is by permission of Carnegie Mellon and Stanford
18
* University. Carnegie Mellon makes no representations about the
19
* suitability of this software for any purpose. It is provided "as is"
20
* without express or implied warranty.
21
*/
22
23
#ifndef _BOOTP_H_
24
#define _BOOTP_H_
25
26
struct bootp {
27
unsigned char bp_op; /* packet opcode type */
28
unsigned char bp_htype; /* hardware addr type */
29
unsigned char bp_hlen; /* hardware addr length */
30
unsigned char bp_hops; /* gateway hops */
31
unsigned int bp_xid; /* transaction ID */
32
unsigned short bp_secs; /* seconds since boot began */
33
unsigned short bp_flags;
34
struct in_addr bp_ciaddr; /* client IP address */
35
struct in_addr bp_yiaddr; /* 'your' IP address */
36
struct in_addr bp_siaddr; /* server IP address */
37
struct in_addr bp_giaddr; /* gateway IP address */
38
unsigned char bp_chaddr[16]; /* client hardware address */
39
unsigned char bp_sname[64]; /* server host name */
40
char bp_file[128]; /* boot file name */
41
#ifdef SUPPORT_DHCP
42
#define BOOTP_VENDSIZE 312
43
#else
44
#define BOOTP_VENDSIZE 64
45
#endif
46
unsigned char bp_vend[BOOTP_VENDSIZE]; /* vendor-specific area */
47
};
48
49
/*
50
* UDP port numbers, server and client.
51
*/
52
#define IPPORT_BOOTPS 67
53
#define IPPORT_BOOTPC 68
54
55
#define BOOTREPLY 2
56
#define BOOTREQUEST 1
57
58
59
/*
60
* Vendor magic cookie (v_magic) for CMU
61
*/
62
#define VM_CMU "CMU"
63
64
/*
65
* Vendor magic cookie (v_magic) for RFC1048
66
*/
67
#define VM_RFC1048 { 99, 130, 83, 99 }
68
69
70
71
/*
72
* RFC1048 tag values used to specify what information is being supplied in
73
* the vendor field of the packet.
74
*/
75
76
#define TAG_PAD ((unsigned char) 0)
77
#define TAG_SUBNET_MASK ((unsigned char) 1)
78
#define TAG_TIME_OFFSET ((unsigned char) 2)
79
#define TAG_GATEWAY ((unsigned char) 3)
80
#define TAG_TIME_SERVER ((unsigned char) 4)
81
#define TAG_NAME_SERVER ((unsigned char) 5)
82
#define TAG_DOMAIN_SERVER ((unsigned char) 6)
83
#define TAG_LOG_SERVER ((unsigned char) 7)
84
#define TAG_COOKIE_SERVER ((unsigned char) 8)
85
#define TAG_LPR_SERVER ((unsigned char) 9)
86
#define TAG_IMPRESS_SERVER ((unsigned char) 10)
87
#define TAG_RLP_SERVER ((unsigned char) 11)
88
#define TAG_HOSTNAME ((unsigned char) 12)
89
#define TAG_BOOTSIZE ((unsigned char) 13)
90
#define TAG_DUMPFILE ((unsigned char) 14)
91
#define TAG_DOMAINNAME ((unsigned char) 15)
92
#define TAG_SWAPSERVER ((unsigned char) 16)
93
#define TAG_ROOTPATH ((unsigned char) 17)
94
#define TAG_INTF_MTU ((unsigned char) 26)
95
96
#ifdef SUPPORT_DHCP
97
#define TAG_REQ_ADDR ((unsigned char) 50)
98
#define TAG_LEASETIME ((unsigned char) 51)
99
#define TAG_OVERLOAD ((unsigned char) 52)
100
#define TAG_DHCP_MSGTYPE ((unsigned char) 53)
101
#define TAG_SERVERID ((unsigned char) 54)
102
#define TAG_PARAM_REQ ((unsigned char) 55)
103
#define TAG_MSG ((unsigned char) 56)
104
#define TAG_MAXSIZE ((unsigned char) 57)
105
#define TAG_T1 ((unsigned char) 58)
106
#define TAG_T2 ((unsigned char) 59)
107
#define TAG_CLASSID ((unsigned char) 60)
108
#define TAG_CLIENTID ((unsigned char) 61)
109
#define TAG_USER_CLASS ((unsigned char) 77)
110
#endif
111
112
#define TAG_END ((unsigned char) 255)
113
114
#ifdef SUPPORT_DHCP
115
#define DHCPDISCOVER 1
116
#define DHCPOFFER 2
117
#define DHCPREQUEST 3
118
#define DHCPDECLINE 4
119
#define DHCPACK 5
120
#define DHCPNAK 6
121
#define DHCPRELEASE 7
122
#endif
123
124
/*
125
* "vendor" data permitted for CMU bootp clients.
126
*/
127
128
struct cmu_vend {
129
unsigned char v_magic[4]; /* magic number */
130
unsigned int v_flags; /* flags/opcodes, etc. */
131
struct in_addr v_smask; /* Subnet mask */
132
struct in_addr v_dgate; /* Default gateway */
133
struct in_addr v_dns1, v_dns2; /* Domain name servers */
134
struct in_addr v_ins1, v_ins2; /* IEN-116 name servers */
135
struct in_addr v_ts1, v_ts2; /* Time servers */
136
unsigned char v_unused[25]; /* currently unused */
137
};
138
139
140
/* v_flags values */
141
#define VF_SMASK 1 /* Subnet mask field contains valid data */
142
143
/* cached bootp response/dhcp ack */
144
extern struct bootp *bootp_response;
145
extern size_t bootp_response_size;
146
147
#endif /* _BOOTP_H_ */
148
149