Support for VLAN tags
[yaboot.git] / second / file.c
index a52b664e8900c6e789764c696f5d4e61ab9fab0d..02b187231716e318964dc77681637d000ad2a35a 100644 (file)
@@ -88,7 +88,7 @@ static char * is_valid_ipv4_str(char *str)
 
 
 /*
- * Copy the string from source to dest till newline or comma(,) is seen
+ * Copy the string from source to dest until the end of string or comma is seen
  * in the source.
  * Move source and dest pointers respectively.
  * Returns pointer to the start of the string that has just been copied.
@@ -104,9 +104,9 @@ scopy(char **dest, char **source)
      while (**source != ',' && **source != '\0')
          *(*dest)++ = *(*source)++;
      if (**source != '\0')
-         *(*source)++;
+         (void)*(*source)++;
      **dest = '\0';
-     *(*dest)++;
+     (void)*(*dest)++;
      return ret;
 }
 
@@ -163,9 +163,14 @@ extract_ipv4_args(char *imagepath, struct boot_fspec_t *result)
          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
       */
+     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));
@@ -331,6 +336,9 @@ extract_ipv6_args(char *imagepath, struct boot_fspec_t *result)
      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);