int edit_entry(kadm5_principal_ent_t ent, int *mask, kadm5_principal_ent_t default_ent, int default_mask) { set_defaults(ent, mask, default_ent, default_mask); if(edit_deltat ("Max ticket life", &ent->max_life, mask, KADM5_MAX_LIFE) != 0) return 1; if(edit_deltat ("Max renewable life", &ent->max_renewable_life, mask, KADM5_MAX_RLIFE) != 0) return 1; if(edit_timet ("Principal expiration time", &ent->princ_expire_time, mask, KADM5_PRINC_EXPIRE_TIME) != 0) return 1; if(edit_timet ("Password expiration time", &ent->pw_expiration, mask, KADM5_PW_EXPIRATION) != 0) return 1; if(edit_attributes ("Attributes", &ent->attributes, mask, KADM5_ATTRIBUTES) != 0) return 1; if(edit_policy ("Policy", &ent->policy, mask, KADM5_POLICY) != 0) return 1; return 0; }
int main(int argc, char **argv) { isns_client_t *clnt; isns_security_t *security = NULL; int c, status; while ((c = getopt_long(argc, argv, "46Cc:d:hK:k:l", options, NULL)) != -1) { switch (c) { case '4': opt_af = AF_INET; break; case '6': opt_af = AF_INET6; break; case 'C': opt_control = 1; break; case 'c': opt_configfile = optarg; break; case 'd': isns_enable_debugging(optarg); break; case 'h': usage(0, NULL); break; case 'K': opt_keyfile = optarg; break; case 'k': opt_key = optarg; break; case 'l': opt_local = 1; break; case 'r': opt_replace = 1; break; case 'V': printf("Open-iSNS version %s\n" "Copyright (C) 2007, Olaf Kirch <*****@*****.**>\n", OPENISNS_VERSION_STRING); return 0; case DO_REGISTER: case DO_QUERY: case DO_QUERY_EID: case DO_LIST: case DO_DEREGISTER: case DO_DD_REGISTER: case DO_DD_DEREGISTER: case DO_ENROLL: case DO_EDIT_POLICY: case DO_DELETE_POLICY: if (opt_action) usage(1, "You cannot specify more than one mode\n"); opt_action = c; break; default: usage(1, "Unknown option"); } } isns_read_config(opt_configfile); if (!isns_config.ic_source_name) usage(1, "Please specify an iSNS source name"); if (!isns_config.ic_server_name) usage(1, "Please specify an iSNS server name"); if (!opt_action) usage(1, "Please specify an operating mode"); if (opt_control) { if (!isns_config.ic_security) isns_fatal("Cannot use control mode, security disabled\n"); security = isns_control_security_context(0); if (!security) isns_fatal("Unable to create control security context\n"); /* Create a networked client, using isns.control as * the source name */ clnt = isns_create_client(security, isns_config.ic_control_name); } else if (opt_local) { /* Create a local client, using isns.control as * the source name */ clnt = isns_create_local_client(security, isns_config.ic_control_name); } else { /* Create a networked client, using the configured * source name */ clnt = isns_create_default_client(security); } if (clnt == NULL) return 1; /* We're an interactive app, and don't want to retry * forever if the server refuses us. */ isns_socket_set_disconnect_fatal(clnt->ic_socket); /* Get the IP address we use to talk to the iSNS server */ if (opt_myaddr.ss_family == AF_UNSPEC && !opt_local) { if (!isns_socket_get_local_addr(clnt->ic_socket, &opt_myaddr)) isns_fatal("Unable to obtain my IP address\n"); isns_addr_set_port((struct sockaddr *) &opt_myaddr, 860); } argv += optind; argc -= optind; switch (opt_action) { case DO_REGISTER: status = register_objects(clnt, argc, argv); break; case DO_QUERY: status = query_objects(clnt, argc, argv); break; case DO_QUERY_EID: status = query_entity_id(clnt, argc, argv); break; case DO_LIST: status = list_objects(clnt, argc, argv); break; case DO_DEREGISTER: status = deregister_objects(clnt, argc, argv); break; case DO_DD_REGISTER: status = register_domain(clnt, argc, argv); break; case DO_DD_DEREGISTER: status = deregister_domain(clnt, argc, argv); break; case DO_ENROLL: status = enroll_client(clnt, argc, argv); break; case DO_EDIT_POLICY: status = edit_policy(clnt, argc, argv); break; // case DO_DELETE_POLICY: default: isns_fatal("Not yet implemented\n"); status = 1; /* compiler food */ } return status != ISNS_SUCCESS; }