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)) {
|