Lines Matching refs:iconf
307 servicename(struct inetconfent *iconf) in servicename() argument
316 len = strlen(iconf->service) + strlen(iconf->protocol) + in servicename()
325 (void) strlcpy(buf, propertyname(iconf->service, in servicename()
326 iconf->isrpc ? "rpc-": "s-"), len); in servicename()
329 proto = iconf->protocol; in servicename()
330 if (iconf->isrpc && (strcmp(iconf->protocol, "rpc/*") == 0)) in servicename()
382 valid_basic_properties(struct inetconfent *iconf, struct fileinfo *finfo) in valid_basic_properties() argument
387 char *proto = iconf->protocol; in valid_basic_properties()
388 char *svc_name = iconf->service; in valid_basic_properties()
395 put_prop_value_boolean(prop, PR_ISRPC_NAME, iconf->isrpc); in valid_basic_properties()
396 put_prop_value_boolean(prop, PR_ISWAIT_NAME, iconf->wait); in valid_basic_properties()
397 if (iconf->isrpc) { in valid_basic_properties()
399 iconf->rpc_low_version); in valid_basic_properties()
401 iconf->rpc_high_version); in valid_basic_properties()
402 svc_name = iconf->rpc_prog; in valid_basic_properties()
406 if (!put_prop_value_string(prop, PR_SOCK_TYPE_NAME, iconf->endpoint) || in valid_basic_properties()
433 valid_inetconfent(struct inetconfent *iconf, struct fileinfo *finfo) in valid_inetconfent() argument
441 char *proto = iconf->protocol; in valid_inetconfent()
443 iconf->isrpc = B_FALSE; in valid_inetconfent()
444 if (strncmp(iconf->protocol, "rpc/", 4) == 0) { in valid_inetconfent()
445 iconf->isrpc = B_TRUE; in valid_inetconfent()
446 iconf->rpc_prog = safe_strdup(iconf->service); in valid_inetconfent()
449 iconf->rpc_low_version = 1; in valid_inetconfent()
450 iconf->rpc_high_version = 1; in valid_inetconfent()
451 if ((cp = strrchr(iconf->rpc_prog, '/')) != NULL) { in valid_inetconfent()
455 iconf->rpc_low_version = strtol(cp, &endp, 10); in valid_inetconfent()
463 iconf->rpc_high_version = strtol(cp, in valid_inetconfent()
468 iconf->rpc_high_version = in valid_inetconfent()
469 iconf->rpc_low_version; in valid_inetconfent()
476 finfo->lineno, iconf->service); in valid_inetconfent()
491 if (strcmp(iconf->wait_status, "wait") == 0) { in valid_inetconfent()
492 iconf->wait = B_TRUE; in valid_inetconfent()
493 } else if (strcmp(iconf->wait_status, "nowait") == 0) { in valid_inetconfent()
494 iconf->wait = B_FALSE; in valid_inetconfent()
499 iconf->wait_status); in valid_inetconfent()
504 if ((pwd = getpwnam(iconf->username)) == NULL) { in valid_inetconfent()
508 iconf->username); in valid_inetconfent()
512 iconf->groupname = safe_strdup(grp->gr_name); in valid_inetconfent()
518 iconf->groupname = safe_malloc(len); in valid_inetconfent()
519 (void) snprintf(iconf->groupname, len, "%d", in valid_inetconfent()
525 if (strcmp(iconf->server_program, "internal") == 0) { in valid_inetconfent()
527 if ((strcmp(iconf->service, "echo") == 0) || in valid_inetconfent()
528 (strcmp(iconf->service, "discard") == 0) || in valid_inetconfent()
529 (strcmp(iconf->service, "time") == 0) || in valid_inetconfent()
530 (strcmp(iconf->service, "daytime") == 0) || in valid_inetconfent()
531 (strcmp(iconf->service, "chargen") == 0)) { in valid_inetconfent()
539 finfo->filename, finfo->lineno, iconf->service); in valid_inetconfent()
541 } else if ((stat(iconf->server_program, &statb) == -1) && in valid_inetconfent()
546 iconf->server_program); in valid_inetconfent()
550 return (valid && valid_basic_properties(iconf, finfo)); in valid_inetconfent()
554 free_inetconfent(struct inetconfent *iconf) in free_inetconfent() argument
556 if (iconf == NULL) in free_inetconfent()
559 free(iconf->service); in free_inetconfent()
560 free(iconf->endpoint); in free_inetconfent()
561 free(iconf->protocol); in free_inetconfent()
562 free(iconf->wait_status); in free_inetconfent()
563 free(iconf->username); in free_inetconfent()
564 free(iconf->server_program); in free_inetconfent()
565 free(iconf->server_args); in free_inetconfent()
566 free(iconf->rpc_prog); in free_inetconfent()
567 free(iconf->groupname); in free_inetconfent()
568 free(iconf->exec); in free_inetconfent()
569 free(iconf->arg0); in free_inetconfent()
571 free(iconf); in free_inetconfent()
578 struct inetconfent *iconf; in line_to_inetconfent() local
580 iconf = safe_malloc(sizeof (struct inetconfent)); in line_to_inetconfent()
581 (void) memset(iconf, 0, sizeof (struct inetconfent)); in line_to_inetconfent()
585 iconf->service = safe_strdup(cp); in line_to_inetconfent()
589 iconf->endpoint = safe_strdup(cp); in line_to_inetconfent()
593 iconf->protocol = safe_strdup(cp); in line_to_inetconfent()
597 iconf->wait_status = safe_strdup(cp); in line_to_inetconfent()
601 iconf->username = safe_strdup(cp); in line_to_inetconfent()
605 iconf->server_program = safe_strdup(cp); in line_to_inetconfent()
609 iconf->server_args = safe_strdup(cp); in line_to_inetconfent()
612 if (iconf->server_args == NULL) { in line_to_inetconfent()
613 iconf->exec = safe_strdup(iconf->server_program); in line_to_inetconfent()
618 len = strlen(iconf->server_program) + in line_to_inetconfent()
619 strlen(iconf->server_args) + 1; in line_to_inetconfent()
620 iconf->exec = safe_malloc(len); in line_to_inetconfent()
621 (void) strlcpy(iconf->exec, iconf->server_program, len); in line_to_inetconfent()
623 args = safe_strdup(iconf->server_args); in line_to_inetconfent()
625 if ((endp = strrchr(iconf->exec, '/')) == NULL) in line_to_inetconfent()
626 endp = iconf->exec; in line_to_inetconfent()
631 iconf->arg0 = safe_strdup(cp); in line_to_inetconfent()
633 (void) strlcat(iconf->exec, " ", len); in line_to_inetconfent()
634 (void) strlcat(iconf->exec, cp, len); in line_to_inetconfent()
640 return (iconf); in line_to_inetconfent()
642 free_inetconfent(iconf); in line_to_inetconfent()
660 struct inetconfent *iconf; in fgetinetconfent() local
689 if ((iconf = line_to_inetconfent(line)) == NULL) { in fgetinetconfent()
697 if (!validate || valid_inetconfent(iconf, finfo)) in fgetinetconfent()
698 return (iconf); in fgetinetconfent()
701 free_inetconfent(iconf); in fgetinetconfent()
715 print_manifest(FILE *f, char *filename, struct inetconfent *iconf) in print_manifest() argument
721 iconf->isrpc ? iconf->rpc_prog : iconf->service) < 0) in print_manifest()
724 if (fprintf(f, xml_service_bundle, iconf->service) < 0) in print_manifest()
726 if (fprintf(f, xml_service_name, servicename(iconf)) < 0) in print_manifest()
732 if (iconf->isrpc) { in print_manifest()
738 iconf->exec, PR_USER_NAME, iconf->username, iconf->groupname) < 0) in print_manifest()
740 if (iconf->arg0 != NULL) { in print_manifest()
741 if (fprintf(f, xml_arg0, PR_ARG0_NAME, iconf->arg0) < 0) in print_manifest()
753 if (iconf->wait) { in print_manifest()
764 PR_SOURCE_LINE_NAME, iconf->service, in print_manifest()
765 iconf->endpoint, iconf->protocol, iconf->wait_status, in print_manifest()
766 iconf->username, iconf->server_program, in print_manifest()
767 iconf->server_args == NULL ? "" : " ", in print_manifest()
768 iconf->server_args == NULL ? "" : iconf->server_args) < 0) in print_manifest()
774 PR_SVC_NAME_NAME, iconf->isrpc ? iconf->rpc_prog : iconf->service, in print_manifest()
775 PR_SOCK_TYPE_NAME, iconf->endpoint, in print_manifest()
776 PR_PROTO_NAME, iconf->isrpc ? iconf->protocol + 4 : in print_manifest()
777 iconf->protocol, in print_manifest()
778 PR_ISWAIT_NAME, boolstr(iconf->wait), in print_manifest()
779 PR_ISRPC_NAME, boolstr(iconf->isrpc)) < 0) in print_manifest()
781 if (iconf->isrpc) { in print_manifest()
783 PR_RPC_LW_VER_NAME, iconf->rpc_low_version, in print_manifest()
784 PR_RPC_HI_VER_NAME, iconf->rpc_high_version) < 0) in print_manifest()
793 iconf->isrpc ? iconf->rpc_prog : iconf->service) < 0) in print_manifest()
798 (void) printf("%s -> %s\n", iconf->service, filename); in print_manifest()
856 struct inetconfent *iconf, in open_dstfile() argument
866 if (iconf->isrpc) in open_dstfile()
872 len = strlen(destdir) + strlen(iconf->service) + in open_dstfile()
873 strlen(iconf->protocol) + sizeof ("/-visible.xml"); in open_dstfile()
881 (void) strlcat(dstfile, iconf->service, len); in open_dstfile()
884 proto = iconf->protocol; in open_dstfile()
885 if (iconf->isrpc && (strcmp(iconf->protocol, "rpc/*") == 0)) in open_dstfile()
902 progname, iconf->service, dstfile); in open_dstfile()
1225 struct inetconfent *iconf = (struct inetconfent *)buf; in list_callback() local
1299 cp = strchr(iconf->service, '/'); in list_callback()
1312 if (strcmp(name, iconf->service) == 0 && in list_callback()
1313 strcmp(endpoint, iconf->endpoint) == 0 && in list_callback()
1314 *isrpc == (strncmp(iconf->protocol, "rpc/", 4) == 0)) { in list_callback()
1316 if ((strcmp(iconf->server_program, "internal") != 0) && in list_callback()
1317 (strcmp(iconf->exec, prog) != 0)) { in list_callback()
1323 svc_name, PR_EXEC_NAME, iconf->exec); in list_callback()
1324 if (iconf->arg0 != NULL) { in list_callback()
1327 PR_ARG0_NAME, iconf->arg0); in list_callback()
1334 PR_EXEC_NAME, iconf->exec) != 1) in list_callback()
1343 iconf->exec); in list_callback()
1346 if (iconf->arg0 != NULL) { in list_callback()
1349 iconf->arg0) != 1) { in list_callback()
1359 PR_ARG0_NAME, iconf->arg0); in list_callback()
1414 struct inetconfent *iconf; in main() local
1477 while ((iconf = fgetinetconfent(srcfinfo, !enable)) != NULL) { in main()
1483 rval = scf_simple_walk_instances(SCF_STATE_ALL, iconf, in main()
1485 free_inetconfent(iconf); in main()
1499 if ((rval = open_dstfile(destdir, overwrite, iconf, &dstfinfo)) in main()
1507 free_inetconfent(iconf); in main()
1510 rval = print_manifest(dstfinfo->fp, dstfinfo->filename, iconf); in main()
1522 free_inetconfent(iconf); in main()