Print this page
        
*** 126,147 ****
                  cp = buf;
                  if (*cp == '#') {
                          /* skip comment lines */
                          continue;
                  }
- 
-                 /* zonename */
                  p = gettok(&cp);
                  if (*p == '\0' || strlen(p) >= ZONENAME_MAX) {
                          /*
                           * empty or very long zone names are not allowed
                           */
                          continue;
                  }
                  (void) strlcpy(ze->zone_name, p, ZONENAME_MAX);
  
-                 /* state */
                  p = gettok(&cp);
                  if (*p == '\0') {
                          /* state field should not be empty */
                          continue;
                  }
--- 126,144 ----
*** 154,200 ****
                          ze->zone_state = ZONE_STATE_INSTALLED;
                  } else {
                          continue;
                  }
  
-                 /* zonepath */
                  p = gettok(&cp);
                  if (strlen(p) >= MAXPATHLEN) {
                          /* very long paths are not allowed */
                          continue;
                  }
                  (void) strlcpy(ze->zone_path, p, MAXPATHLEN);
  
-                 /* uuid */
                  p = gettok(&cp);
                  if (uuid_parse(p, ze->zone_uuid) == -1)
                          uuid_clear(ze->zone_uuid);
  
-                 /* brand [optional] */
-                 p = gettok(&cp);
-                 if (strlen(p) >= MAXNAMELEN) {
-                         /* very long names are not allowed */
-                         continue;
-                 }
-                 (void) strlcpy(ze->zone_brand, p, MAXNAMELEN);
- 
-                 /* IP type [optional] */
-                 p = gettok(&cp);
-                 if (strlen(p) >= MAXNAMELEN) {
-                         /* very long names are not allowed */
-                         continue;
-                 }
-                 ze->zone_iptype = ZS_SHARED;
-                 if (*p == 'e') {
-                         ze->zone_iptype = ZS_EXCLUSIVE;
-                 }
- 
-                 /* debug ID [optional] */
-                 p = gettok(&cp);
-                 if (*p != '\0')
-                         ze->zone_did = atoi(p);
- 
                  break;
          }
  
          return (ze);
  }
--- 151,171 ----
*** 321,338 ****
  {
          FILE *index_file, *tmp_file;
          char buf[MAX_INDEX_LEN];
          int tmp_file_desc, lock_fd, err;
          boolean_t exist, need_quotes;
!         char *cp, *tmpp;
          char tmp_path[MAXPATHLEN];
          char path[MAXPATHLEN];
          char uuidstr[UUID_PRINTABLE_STRING_LENGTH];
          size_t namelen;
!         const char *zone_name, *zone_state, *zone_path, *zone_uuid,
!             *zone_brand = "", *zone_iptype;
!         zoneid_t zone_did;
  
          assert(ze != NULL);
  
          /*
           * Don't allow modification of Global Zone entry
--- 292,307 ----
  {
          FILE *index_file, *tmp_file;
          char buf[MAX_INDEX_LEN];
          int tmp_file_desc, lock_fd, err;
          boolean_t exist, need_quotes;
!         char *cp;
          char tmp_path[MAXPATHLEN];
          char path[MAXPATHLEN];
          char uuidstr[UUID_PRINTABLE_STRING_LENGTH];
          size_t namelen;
!         const char *zone_name, *zone_state, *zone_path, *zone_uuid;
  
          assert(ze != NULL);
  
          /*
           * Don't allow modification of Global Zone entry
*** 381,393 ****
          }
  
          exist = B_FALSE;
          zone_name = ze->zone_name;
          namelen = strlen(zone_name);
-         zone_brand = ze->zone_brand;
-         zone_iptype = (ze->zone_iptype == ZS_SHARED ? "sh" : "ex");
-         zone_did = ze->zone_did;
          for (;;) {
                  if (fgets(buf, sizeof (buf), index_file) == NULL) {
                          if (operation == PZE_ADD && !exist) {
                                  zone_state = zone_state_str(ze->zone_state);
                                  zone_path = ze->zone_path;
--- 350,359 ----
*** 438,452 ****
                          err = Z_UPDATING_INDEX;
                          goto error;
                  }
                  zone_path = gettok(&cp);
                  zone_uuid = gettok(&cp);
-                 zone_brand = gettok(&cp);
-                 zone_iptype = gettok(&cp);
-                 tmpp = gettok(&cp);
-                 if (*tmpp != '\0')
-                         zone_did = atoi(tmpp);
  
                  switch (operation) {
                  case PZE_ADD:
                          /* can't add same zone */
                          err = Z_UPDATING_INDEX;
--- 404,413 ----
*** 457,495 ****
                           * If the caller specified a new state for the zone,
                           * then use that.  Otherwise, use the current state.
                           */
                          if (ze->zone_state >= 0) {
                                  zone_state = zone_state_str(ze->zone_state);
                          }
  
                          /* If a new name is supplied, use it. */
                          if (ze->zone_newname[0] != '\0')
                                  zone_name = ze->zone_newname;
  
                          if (ze->zone_path[0] != '\0')
                                  zone_path = ze->zone_path;
- 
-                         /* If new UUID provided, replace it */
-                         if (!uuid_is_null(ze->zone_uuid)) {
-                                 uuid_unparse(ze->zone_uuid, uuidstr);
-                                 zone_uuid = uuidstr;
-                         }
- 
-                         /* If a brand is supplied, use it. */
-                         if (ze->zone_brand[0] != '\0') {
-                                 zone_brand = ze->zone_brand;
- 
-                                 /*
-                                  * Since the brand, iptype and did are optional,
-                                  * we we only reset the iptype and did if the
-                                  * brand is provided.
-                                  */
-                                 zone_iptype = (ze->zone_iptype == ZS_SHARED ?
-                                     "sh" : "ex");
-                                 zone_did = ze->zone_did;
-                         }
- 
                          break;
  
                  case PZE_REMOVE:
                  default:
                          continue;
--- 418,443 ----
                           * If the caller specified a new state for the zone,
                           * then use that.  Otherwise, use the current state.
                           */
                          if (ze->zone_state >= 0) {
                                  zone_state = zone_state_str(ze->zone_state);
+ 
+                                 /*
+                                  * If the caller is uninstalling this zone,
+                                  * then wipe out the uuid.  The zone's contents
+                                  * are no longer known.
+                                  */
+                                 if (ze->zone_state < ZONE_STATE_INSTALLED)
+                                         zone_uuid = "";
                          }
  
                          /* If a new name is supplied, use it. */
                          if (ze->zone_newname[0] != '\0')
                                  zone_name = ze->zone_newname;
  
                          if (ze->zone_path[0] != '\0')
                                  zone_path = ze->zone_path;
                          break;
  
                  case PZE_REMOVE:
                  default:
                          continue;
*** 517,537 ****
                   * names, and do not occur in zone states, and in theory should
                   * never occur in a zonepath since zonecfg does not support a
                   * method for escaping them.
                   */
                  need_quotes = (strchr(zone_path, ':') != NULL);
- 
-                 if (*zone_brand != '\0') {
-                         (void) fprintf(tmp_file, "%s:%s:%s%s%s:%s:%s:%s:%d\n",
-                             zone_name, zone_state, need_quotes ? "\"" : "",
-                             zone_path, need_quotes ? "\"" : "", zone_uuid,
-                             zone_brand, zone_iptype, zone_did);
-                 } else {
                          (void) fprintf(tmp_file, "%s:%s:%s%s%s:%s\n", zone_name,
                              zone_state, need_quotes ? "\"" : "", zone_path,
                              need_quotes ? "\"" : "", zone_uuid);
-                 }
                  exist = B_TRUE;
          }
  
          (void) fclose(index_file);
          index_file = NULL;
--- 465,477 ----