summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
90288ad)
Adds support for booting from an IPv4 or IPv6 network with a VLAN tag.
Signed-off-by: Santiago Leon <santil@linux.vnet.ibm.com>
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
char* tftp_retries; /* TFTP retries */
char* subnetmask; /* Subnet mask */
char* addl_params; /* copy all additional parameters */
char* tftp_retries; /* TFTP retries */
char* subnetmask; /* Subnet mask */
char* addl_params; /* copy all additional parameters */
+ char* vtag; /* VLAN tag */
/* Following fields are used only in ipv6 format */
int is_ipv6; /* is ipv6 specified ? */
/* Following fields are used only in ipv6 format */
int is_ipv6; /* is ipv6 specified ? */
args++; /* If comma(,) is not immediately followed by ':' then go past the , */
/*
args++; /* If comma(,) is not immediately followed by ':' then go past the , */
/*
- * read the arguments in order: siaddr,filename,ciaddr,giaddr,
+ * read the arguments in order: vtag,siaddr,filename,ciaddr,giaddr,
* bootp-retries,tftp-retries,addl_prameters
*/
* bootp-retries,tftp-retries,addl_prameters
*/
+ if ((tmp = strstr(imagepath, "vtag=")) != NULL) {
+ result->vtag = scopy(&str, &tmp);
+ args = tmp;
+ }
+
result->siaddr = is_valid_ipv4_str(scopy(&str, &args));
result->file = scopy(&str, &args);
result->ciaddr = is_valid_ipv4_str(scopy(&str, &args));
result->siaddr = is_valid_ipv4_str(scopy(&str, &args));
result->file = scopy(&str, &args);
result->ciaddr = is_valid_ipv4_str(scopy(&str, &args));
if ((tmp = strstr(imagepath, "dhcpv6=")) != NULL)
result->dhcpv6 = scopy(&str, &tmp);
if ((tmp = strstr(imagepath, "dhcpv6=")) != NULL)
result->dhcpv6 = scopy(&str, &tmp);
+ if ((tmp = strstr(imagepath, "vtag=")) != NULL)
+ result->vtag = scopy(&str, &tmp);
+
if ((tmp = strstr(imagepath, "ciaddr=")) != NULL)
result->ciaddr = scopy(&str, &tmp);
if ((tmp = strstr(imagepath, "ciaddr=")) != NULL)
result->ciaddr = scopy(&str, &tmp);
}
DEBUG_F("siaddr <%s>; filename <%s>; ciaddr <%s>; giaddr <%s>;"
}
DEBUG_F("siaddr <%s>; filename <%s>; ciaddr <%s>; giaddr <%s>;"
+ " ipv6 <%d>; vtag <%s>\n",
fspec->siaddr, filename, fspec->ciaddr, fspec->giaddr,
fspec->siaddr, filename, fspec->ciaddr, fspec->giaddr,
+ fspec->is_ipv6, fspec->vtag);
strncpy(buffer, fspec->dev, 768);
/* If we didn't get a ':' include one */
strncpy(buffer, fspec->dev, 768);
/* If we didn't get a ':' include one */
DEBUG_F("Using %s tftp style\n", (new_tftp? "new": "old"));
if (new_tftp) {
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, ",");
strcat(buffer, fspec->siaddr);
strcat(buffer, ",");