2594                     "net", "address", addr, "physical", phys, af2str(af));
2595                 return;
2596         }
2597 
2598         (void) fprintf(stderr,
2599             gettext("could not verify %s %s=%s %s=%s\n\t%s\n"),
2600             "net", "address", addr, "physical", phys, msg);
2601 }
2602 
2603 static int
2604 verify_handle(int cmd_num, zone_dochandle_t handle, char *argv[])
2605 {
2606         struct zone_nwiftab nwiftab;
2607         int return_code = Z_OK;
2608         int err;
2609         boolean_t in_alt_root;
2610         zone_iptype_t iptype;
2611         dladm_handle_t dh;
2612         dladm_status_t status;
2613         datalink_id_t linkid;
2614         char errmsg[DLADM_STRSIZE];
2615 
2616         in_alt_root = zonecfg_in_alt_root();
2617         if (in_alt_root)
2618                 goto no_net;
2619 
2620         if ((err = zonecfg_get_iptype(handle, &iptype)) != Z_OK) {
2621                 errno = err;
2622                 zperror(cmd_to_str(cmd_num), B_TRUE);
2623                 zonecfg_fini_handle(handle);
2624                 return (Z_ERR);
2625         }
2626         if ((err = zonecfg_setnwifent(handle)) != Z_OK) {
2627                 errno = err;
2628                 zperror(cmd_to_str(cmd_num), B_TRUE);
2629                 zonecfg_fini_handle(handle);
2630                 return (Z_ERR);
2631         }
2632         while (zonecfg_getnwifent(handle, &nwiftab) == Z_OK) {
2633                 struct lifreq lifr;
2634                 sa_family_t af = AF_UNSPEC;
2635                 char dl_owner_zname[ZONENAME_MAX];
2636                 zoneid_t dl_owner_zid;
2637                 zoneid_t target_zid;
2638                 int res;
2639 
2640                 /* skip any loopback interfaces */
2641                 if (strcmp(nwiftab.zone_nwif_physical, "lo0") == 0)
2642                         continue;
2643                 switch (iptype) {
2644                 case ZS_SHARED:
2645                         if ((res = zonecfg_valid_net_address(
2646                             nwiftab.zone_nwif_address, &lifr)) != Z_OK) {
2647                                 print_net_err(nwiftab.zone_nwif_physical,
2648                                     nwiftab.zone_nwif_address, af,
2649                                     zonecfg_strerror(res));
2650                                 return_code = Z_ERR;
2651                                 continue;
2652                         }
2653                         af = lifr.lifr_addr.ss_family;
2654                         if (!zonecfg_ifname_exists(af,
2655                             nwiftab.zone_nwif_physical)) {
 
 | 
 
 
2594                     "net", "address", addr, "physical", phys, af2str(af));
2595                 return;
2596         }
2597 
2598         (void) fprintf(stderr,
2599             gettext("could not verify %s %s=%s %s=%s\n\t%s\n"),
2600             "net", "address", addr, "physical", phys, msg);
2601 }
2602 
2603 static int
2604 verify_handle(int cmd_num, zone_dochandle_t handle, char *argv[])
2605 {
2606         struct zone_nwiftab nwiftab;
2607         int return_code = Z_OK;
2608         int err;
2609         boolean_t in_alt_root;
2610         zone_iptype_t iptype;
2611         dladm_handle_t dh;
2612         dladm_status_t status;
2613         datalink_id_t linkid;
2614 
2615         in_alt_root = zonecfg_in_alt_root();
2616         if (in_alt_root)
2617                 goto no_net;
2618 
2619         if ((err = zonecfg_get_iptype(handle, &iptype)) != Z_OK) {
2620                 errno = err;
2621                 zperror(cmd_to_str(cmd_num), B_TRUE);
2622                 zonecfg_fini_handle(handle);
2623                 return (Z_ERR);
2624         }
2625         if ((err = zonecfg_setnwifent(handle)) != Z_OK) {
2626                 errno = err;
2627                 zperror(cmd_to_str(cmd_num), B_TRUE);
2628                 zonecfg_fini_handle(handle);
2629                 return (Z_ERR);
2630         }
2631         while (zonecfg_getnwifent(handle, &nwiftab) == Z_OK) {
2632                 struct lifreq lifr;
2633                 sa_family_t af = AF_UNSPEC;
2634                 char dl_owner_zname[ZONENAME_MAX];
2635                 char errmsg[DLADM_STRSIZE];
2636                 zoneid_t dl_owner_zid;
2637                 zoneid_t target_zid;
2638                 int res;
2639 
2640                 /* skip any loopback interfaces */
2641                 if (strcmp(nwiftab.zone_nwif_physical, "lo0") == 0)
2642                         continue;
2643                 switch (iptype) {
2644                 case ZS_SHARED:
2645                         if ((res = zonecfg_valid_net_address(
2646                             nwiftab.zone_nwif_address, &lifr)) != Z_OK) {
2647                                 print_net_err(nwiftab.zone_nwif_physical,
2648                                     nwiftab.zone_nwif_address, af,
2649                                     zonecfg_strerror(res));
2650                                 return_code = Z_ERR;
2651                                 continue;
2652                         }
2653                         af = lifr.lifr_addr.ss_family;
2654                         if (!zonecfg_ifname_exists(af,
2655                             nwiftab.zone_nwif_physical)) {
 
 |