- strcat(buffer, fspec->siaddr);
- strcat(buffer, ",");
- strcat(buffer, filename);
- strcat(buffer, ",");
- strcat(buffer, fspec->ciaddr);
- strcat(buffer, ",");
- strcat(buffer, fspec->giaddr);
-
- /* If /packages/cas exists the we have a "new skool" tftp */
- if (prom_finddevice("/packages/cas") != PROM_INVALID_HANDLE) {
+
+ /* If /ibm,fw-net-compatibility exists the we have a "new skool" tftp.
+ * This means that siaddr is the tftp server and that we can add
+ * {tftp,bootp}_retrys, subnet mask and tftp block size to the load
+ * method */
+ new_tftp = 0;
+ root = prom_finddevice("/");
+ if (prom_getprop(root, "ibm,fw-net-compatibility", &prom_net, sizeof(ihandle)) > 0)
+ new_tftp = 1;
+ DEBUG_F("Using %s tftp style\n", (new_tftp? "new": "old"));
+
+ if (new_tftp) {
+ if (fspec->is_ipv6)
+ strcat(buffer, "ipv6,");
+
+ if (fspec->vtag) {
+ strcat(buffer, fspec->vtag);
+ strcat(buffer, ",");
+ }
+ strcat(buffer, fspec->siaddr);
+ strcat(buffer, ",");
+
+ if (fspec->is_ipv6 && (strstr(filename, "filename=") == NULL))
+ strcat(buffer, "filename=");
+
+ strcat(buffer, filename);
+ strcat(buffer, ",");
+ strcat(buffer, fspec->ciaddr);
+ strcat(buffer, ",");
+ strcat(buffer, fspec->giaddr);