#ifndef BOOTP_PACKET_H #define BOOTP_PACKET_H #include struct netdev; /* packet ops */ #define BOOTP_REQUEST 1 #define BOOTP_REPLY 2 /* your basic bootp packet */ struct bootp_hdr { uint8_t op; uint8_t htype; uint8_t hlen; uint8_t hops; uint32_t xid; uint16_t secs; uint16_t flags; uint32_t ciaddr; uint32_t yiaddr; uint32_t siaddr; uint32_t giaddr; uint8_t chaddr[16]; char server_name[64]; char boot_file[128]; /* 312 bytes of extensions */ }; /* * memory size of BOOTP Vendor Extensions/DHCP Options for receiving * * generic_ether_mtu:1500, min_sizeof(ip_hdr):20, sizeof(udp_hdr):8 * * #define BOOTP_EXTS_SIZE (1500 - 20 - 8 - sizeof(struct bootp_hdr)) */ /* larger size for backward compatibility of ipconfig */ #define BOOTP_EXTS_SIZE 1500 /* minimum length of BOOTP/DHCP packet on sending */ #define BOOTP_MIN_LEN 300 #endif /* BOOTP_PACKET_H */