|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /*
26: * Bootstrap Protocol (BOOTP). RFC 951.
27: */
28: /*
29: * HISTORY
30: *
31: * 14 May 1992 ? at NeXT
32: * Added correct padding to struct nextvend. This is
33: * needed for the i386 due to alignment differences wrt
34: * the m68k. Also adjusted the size of the array fields
35: * because the NeXT vendor area was overflowing the bootp
36: * packet.
37: */
38:
39: #define iaddr_t struct in_addr
40:
41: struct bootp {
42: u_char bp_op; /* packet opcode type */
43: #define BOOTREQUEST 1
44: #define BOOTREPLY 2
45: u_char bp_htype; /* hardware addr type */
46: u_char bp_hlen; /* hardware addr length */
47: u_char bp_hops; /* gateway hops */
48: u_long bp_xid; /* transaction ID */
49: u_short bp_secs; /* seconds since boot began */
50: u_short bp_unused;
51: iaddr_t bp_ciaddr; /* client IP address */
52: iaddr_t bp_yiaddr; /* 'your' IP address */
53: iaddr_t bp_siaddr; /* server IP address */
54: iaddr_t bp_giaddr; /* gateway IP address */
55: u_char bp_chaddr[16]; /* client hardware address */
56: u_char bp_sname[64]; /* server host name */
57: u_char bp_file[128]; /* boot file name */
58: u_char bp_vend[64]; /* vendor-specific area */
59: };
60:
61: /*
62: * UDP port numbers, server and client.
63: */
64: #define IPPORT_BOOTPS 67
65: #define IPPORT_BOOTPC 68
66:
67: /*
68: * "vendor" data permitted for Stanford boot clients.
69: */
70: struct vend {
71: u_char v_magic[4]; /* magic number */
72: u_long v_flags; /* flags/opcodes, etc. */
73: u_char v_unused[56]; /* currently unused */
74: };
75: #define VM_STANFORD "STAN" /* v_magic for Stanford */
76:
77: /* v_flags values */
78: #define VF_PCBOOT 1 /* an IBMPC or Mac wants environment info */
79: #define VF_HELP 2 /* help me, I'm not registered */
80:
81: #define NVMAXTEXT 55 /* don't change this, it just fits RFC951 */
82: struct nextvend {
83: u_char nv_magic[4]; /* Magic number for vendor specificity */
84: u_char nv_version; /* NeXT protocol version */
85: /*
86: * Round the beginning
87: * of the union to a 16
88: * bit boundary due to
89: * struct/union alignment
90: * on the m68k.
91: */
92: unsigned short :0;
93: union {
94: u_char NV0[58];
95: struct {
96: u_char NV1_opcode; /* opcode - Version 1 */
97: u_char NV1_xid; /* transcation id */
98: u_char NV1_text[NVMAXTEXT]; /* text */
99: u_char NV1_null; /* null terminator */
100: } NV1;
101: } nv_U;
102: };
103: #define nv_unused nv_U.NV0
104: #define nv_opcode nv_U.NV1.NV1_opcode
105: #define nv_xid nv_U.NV1.NV1_xid
106: #define nv_text nv_U.NV1.NV1_text
107: #define nv_null nv_U.NV1.NV1_null
108:
109: /* Magic number */
110: #define VM_NEXT "NeXT" /* v_magic for NeXT, Inc. */
111:
112: /* Opcodes */
113: #define BPOP_OK 0
114: #define BPOP_QUERY 1
115: #define BPOP_QUERY_NE 2
116: #define BPOP_ERROR 3
117:
118: struct bootp_packet {
119: struct ip bp_ip;
120: struct udphdr bp_udp;
121: struct bootp bp_bootp;
122: };
123:
124: #define BOOTP_PKTSIZE (sizeof (struct bootp_packet))
125:
126: /* backoffs must be masks */
127: #define BOOTP_MIN_BACKOFF 0x7ff /* 2.048 sec */
128: #define BOOTP_MAX_BACKOFF 0xffff /* 65.535 sec */
129: #define BOOTP_RETRY 6 /* # retries */
130:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.