static int ipdadm_remove(int argc, char *argv[]) { ipd_ioc_perturb_t ipi; char *cur, *res; int rval, fd; if (argc < 1) { (void) fprintf(stderr, "%s: remove <arguments>\n", g_pname); return (usage(stderr)); } if (argc > 1) { (void) fprintf(stderr, "%s: remove's arguments must be " "comma seperated\n", g_pname); return (E_ERROR); } ipi.ipip_zoneid = g_zid; ipi.ipip_arg = 0; cur = argv[0]; while ((res = strchr(cur, ',')) != NULL) { *res = '\0'; if ((rval = ipdadm_remove_valid(cur)) == 0) { (void) fprintf(stderr, "%s: unknown remove " "argument: %s\n", g_pname, cur); return (E_ERROR); } ipi.ipip_arg |= rval; cur = res + 1; } if ((rval = ipdadm_remove_valid(cur)) == 0) { (void) fprintf(stderr, "%s: unknown remove argument: %s\n", g_pname, cur); return (E_ERROR); } ipi.ipip_arg |= rval; fd = ipdadm_open(); rval = ioctl(fd, IPDIOC_REMOVE, &ipi); (void) close(fd); if (rval == -1) { (void) fprintf(stderr, "%s: failed to remove instances: %s\n", g_pname, strerror(errno)); return (E_ERROR); } return (E_SUCCESS); }
static int ipdadm_remove(int argc, char *argv[]) { ipd_config_t ic; char *cur, *res; int rval, fd; if (argc < 1) { (void) fprintf(stderr, "%s: remove <arguments>\n", g_pname); return (usage(stderr)); } if (argc > 1) { (void) fprintf(stderr, "%s: remove's arguments must be " "comma seperated\n", g_pname); return (E_ERROR); } bzero(&ic, sizeof (ic)); cur = argv[0]; while ((res = strchr(cur, ',')) != NULL) { *res = '\0'; if ((rval = ipdadm_remove_valid(cur)) == 0) { (void) fprintf(stderr, "%s: unknown remove " "argument: %s\n", g_pname, cur); return (E_ERROR); } ic.ic_mask |= rval; cur = res + 1; } if ((rval = ipdadm_remove_valid(cur)) == 0) { (void) fprintf(stderr, "%s: unknown remove argument: %s\n", g_pname, cur); return (E_ERROR); } ic.ic_mask |= rval; fd = ipd_open(NULL); rval = ipd_ctl(fd, g_zid, &ic); (void) ipd_close(fd); if (rval == -1) { (void) fprintf(stderr, "%s: failed to remove instances: %s\n", g_pname, ipd_errmsg); return (E_ERROR); } return (E_SUCCESS); }