+ msg->op = 1;
+ msg->htype = 1;
+ msg->hlen = 6;
+ msg->hops = 0;
+ msg->xid = msg->xid;
+ msg->secs = htons(0); // TODO: Maintain times
+ msg->flags = htons(0);
+ memcpy(msg->chaddr, Iface->HWAddr, 6);
+ memset(msg->sname, 0, sizeof(msg->sname)); // Nuke the rest
+ memset(msg->file, 0, sizeof(msg->file)); // Nuke the rest
+
+ i = 0;
+ msg->options[i++] = 53; // Message type = DHCPREQUEST
+ msg->options[i++] = 1;
+ msg->options[i++] = 3;
+ msg->options[i++] = 50; // Requested Address
+ msg->options[i++] = 4;
+ memcpy(msg->options + i, &msg->yiaddr, 4); i += 4;
+// msg->options[i++] = 54; // Server identifier
+// msg->options[i++] = 4;
+// memcpy(msg->options + i, (char*)OfferPacket + 4, 4); i += 4;
+ msg->options[i++] = 255;
+
+ // Clear last because yiaddr is needed in option setup
+ msg->ciaddr = htonl(0);
+ msg->yiaddr = htonl(0);
+ msg->siaddr = htonl(0);
+ msg->giaddr = htonl(0);
+
+ // HACK
+ ((uint8_t*)OfferPacket)[4] = 255;
+ ((uint8_t*)OfferPacket)[5] = 255;
+ ((uint8_t*)OfferPacket)[6] = 255;
+ ((uint8_t*)OfferPacket)[7] = 255;