/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ /* from <ip.h> */ enum{ ETHER_HDR = 14, ET_IP = 0x800, IP_VER = 0x40, IP_HLEN = 0x05, IP_UDPPROTO = 17, UDP_EHSIZE = 22, UDP_PHDRSIZE = 12, UDP_HDRSIZE = 20, BPportsrc = 68, BPportdst = 67, Bootrequest = 1, Bootreply = 2, TFTPport = 69,// Timeout = 5000, /* milliseconds */ Timeout = 2000, /* milliseconds */ Tftp_READ = 1, Tftp_WRITE = 2, Tftp_DATA = 3, Tftp_ACK = 4, Tftp_ERROR = 5, Tftp_OACK = 6, /* extension: option(s) ack */ Defsegsize = 512, /* lengths of some bootp fields */ Maxhwlen= 16, Maxfilelen= 128, Maxoptlen= 312-4, /* bootp option types */ OBend= 255, OBpad= 0, OBmask= 1,}; /* * user level udp headers with control message "headers" */enum { Udphdrsize= 52, /* size of a Udphdr */}; typedef struct Udphdr Udphdr;struct Udphdr{ uchar raddr[IPaddrlen]; /* V6 remote address */ uchar laddr[IPaddrlen]; /* V6 local address */ uchar ifcaddr[IPaddrlen]; /* V6 ifc addr msg was received on */ uchar rport[2]; /* remote port */ uchar lport[2]; /* local port */}; /* * from 9load */typedef struct Bootp Bootp;struct Bootp{ uchar op; /* opcode */ uchar htype; /* hardware type */ uchar hlen; /* hardware address len */ uchar hops; /* hops */ uchar xid[4]; /* a random number */ uchar secs[2]; /* elapsed since client started booting */ uchar flags[2]; /* unused in bootp, flags in dhcp */ uchar ciaddr[4]; /* client IP address (client tells server) */ uchar yiaddr[4]; /* client IP address (server tells client) */ uchar siaddr[4]; /* server IP address */ uchar giaddr[4]; /* gateway IP address */ uchar chaddr[16]; /* client hardware address */ char sname[64]; /* server host name (optional) */ char file[128]; /* boot file name */ // char vend[128]; /* vendor-specific goo */ uchar optmagic[4]; uchar optdata[Maxoptlen];}; typedef struct Pxenetaddr Pxenetaddr;struct Pxenetaddr{ uchar ip[IPaddrlen]; ushort port;}; extern int chatty;
/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
/* from <ip.h> */
enum
{
ETHER_HDR = 14,
ET_IP = 0x800,
IP_VER = 0x40,
IP_HLEN = 0x05,
IP_UDPPROTO = 17,
UDP_EHSIZE = 22,
UDP_PHDRSIZE = 12,
UDP_HDRSIZE = 20,
BPportsrc = 68,
BPportdst = 67,
Bootrequest = 1,
Bootreply = 2,
TFTPport = 69,
// Timeout = 5000, /* milliseconds */
Timeout = 2000, /* milliseconds */
Tftp_READ = 1,
Tftp_WRITE = 2,
Tftp_DATA = 3,
Tftp_ACK = 4,
Tftp_ERROR = 5,
Tftp_OACK = 6, /* extension: option(s) ack */
Defsegsize = 512,
/* lengths of some bootp fields */
Maxhwlen= 16,
Maxfilelen= 128,
Maxoptlen= 312-4,
/* bootp option types */
OBend= 255,
OBpad= 0,
OBmask= 1,
};
/*
* user level udp headers with control message "headers"
*/
enum
{
Udphdrsize= 52, /* size of a Udphdr */
};
typedef struct Udphdr Udphdr;
struct Udphdr
{
uchar raddr[IPaddrlen]; /* V6 remote address */
uchar laddr[IPaddrlen]; /* V6 local address */
uchar ifcaddr[IPaddrlen]; /* V6 ifc addr msg was received on */
uchar rport[2]; /* remote port */
uchar lport[2]; /* local port */
};
/*
* from 9load
*/
typedef struct Bootp Bootp;
struct Bootp
{
uchar op; /* opcode */
uchar htype; /* hardware type */
uchar hlen; /* hardware address len */
uchar hops; /* hops */
uchar xid[4]; /* a random number */
uchar secs[2]; /* elapsed since client started booting */
uchar flags[2]; /* unused in bootp, flags in dhcp */
uchar ciaddr[4]; /* client IP address (client tells server) */
uchar yiaddr[4]; /* client IP address (server tells client) */
uchar siaddr[4]; /* server IP address */
uchar giaddr[4]; /* gateway IP address */
uchar chaddr[16]; /* client hardware address */
char sname[64]; /* server host name (optional) */
char file[128]; /* boot file name */
// char vend[128]; /* vendor-specific goo */
uchar optmagic[4];
uchar optdata[Maxoptlen];
};
typedef struct Pxenetaddr Pxenetaddr;
struct Pxenetaddr
{
uchar ip[IPaddrlen];
ushort port;
};
extern int chatty;