Lines Matching refs:nm

820 sid_format(name_mapping_t *nm)
826 switch (nm->is_wuser) {
839 len = strlen(nm->sidprefix) + 7 + 3 * sizeof (nm->rid);
844 (void) snprintf(to, len, "%s:%s-%u", typestring, nm->sidprefix,
845 nm->rid);
868 nm2winqn(name_mapping_t *nm, char **winqn)
876 if (nm->winname == NULL && nm->sidprefix != NULL) {
877 *winqn = sid_format(nm);
881 switch (nm->is_wuser) {
896 if (nm->winname != NULL)
897 length += strlen(nm->winname);
900 if (nm->windomain == NULL || INHIBITED(nm->winname))
903 length += strlen(nm->windomain) + 1;
915 if (nm->winname == NULL)
918 (void) strcat(out, nm->winname);
919 else if (nm->is_nt4) {
920 (void) strcat(out, nm->windomain);
922 (void) strcat(out, nm->winname);
924 (void) strcat(out, nm->winname);
926 (void) strcat(out, nm->windomain);
940 nm2unixname(name_mapping_t *nm, char **unixname)
946 if (nm->unixname == NULL) {
947 if (nm->pid == UNDEFINED_UID)
950 *unixname = pid_format(nm->pid, nm->is_user);
954 if (shell_app(&it, nm->unixname, 0))
958 switch (nm->is_user) {
993 name_mapping_t *nm = (name_mapping_t *)malloc(sizeof (name_mapping_t));
994 if (nm == NULL) {
998 nm->winname = nm->windomain = nm->unixname = nm->sidprefix = NULL;
999 nm->rid = UNDEFINED_RID;
1000 nm->is_nt4 = B_FALSE;
1001 nm->is_user = IDMAP_UNKNOWN;
1002 nm->is_wuser = IDMAP_UNKNOWN;
1003 nm->direction = IDMAP_DIRECTION_UNDEF;
1004 nm->pid = UNDEFINED_UID;
1005 return (nm);
1010 name_mapping_fini(name_mapping_t *nm)
1013 free(nm->winname);
1014 free(nm->windomain);
1015 free(nm->unixname);
1016 free(nm->sidprefix);
1018 free(nm);
1068 name_mapping_format(name_mapping_t *nm, char **out)
1077 if (nm2winqn(nm, &winname1) < 0)
1087 if (nm2unixname(nm, &unixname)) {
1097 if (nm->direction == IDMAP_DIRECTION_U2W) {
1102 nm->direction == IDMAP_DIRECTION_BI? "" : "-d",
1191 print_mapping(print_handle_t *pnm, name_mapping_t *nm)
1201 if (nm2winqn(nm, &winname) < 0)
1203 if (nm2unixname(nm, &unixname) < 0) {
1210 if (nm->sidprefix == NULL) {
1215 winname = sid_format(nm);
1218 unixname = pid_format(nm->pid, nm->is_user);
1225 dirstring = direction2string(nm->direction);
1232 if (nm->is_user != IDMAP_YES || nm->is_wuser != IDMAP_YES) {
1236 } else if (nm->direction == IDMAP_DIRECTION_U2W) {
1240 } else if (INHIBITED(nm->winname) || INHIBITED(nm->unixname)) {
1245 if (shell_app(&winname, nm->winname, 1))
1248 unixname = INHIBITED(nm->unixname) ? "\"\"" : nm->unixname;
1272 if (nm->is_user != IDMAP_YES || nm->is_wuser != IDMAP_YES) {
1278 dirstring = direction2string(nm->direction);
1280 if ((winname = usermap_cfg_string(nm->winname)) == NULL ||
1281 (unixname = usermap_cfg_string(nm->unixname)) == NULL ||
1282 (windomain = usermap_cfg_string(nm->windomain)) == NULL) {
1291 if (nm->windomain == NULL) {
1295 (void) fprintf(f, nm->is_nt4 ?
1305 * If nm is the same as the last one except is_wuser, we combine
1308 if (nm->direction == pnm->last->direction &&
1309 nm->is_user == pnm->last->is_user &&
1311 strcmp_null(pnm->last->unixname, nm->unixname) == 0 &&
1312 strcmp_null(pnm->last->winname, nm->winname) == 0 &&
1313 strcmp_null(pnm->last->windomain, nm->windomain) == 0) {
1324 if (name_mapping_cpy(pnm->last, nm) < 0)
1347 name_mapping_t nm;
1380 nm.is_user = rule->is_user;
1381 nm.is_wuser = IDMAP_UNKNOWN;
1382 nm.direction = rule->direction;
1383 nm.winname = rule->winname;
1384 nm.windomain = rule->windomain;
1385 nm.unixname = rule->unixname;
1386 nm.is_nt4 = rule->is_nt4;
1387 if (name_mapping_format(&nm, &rule_text) == 0) {
1455 name_mapping_t nm;
1458 (void) memset(&nm, 0, sizeof (nm));
1492 nm.is_user = rule->is_user;
1493 nm.is_wuser = IDMAP_UNKNOWN;
1494 nm.direction = rule->direction;
1495 nm.winname = rule->winname;
1496 nm.windomain = rule->windomain;
1497 nm.unixname = rule->unixname;
1498 nm.is_nt4 = rule->is_nt4;
1499 if (name_mapping_format(&nm, &rule_text) == 0) {
1569 name_mapping_t *nm = name_mapping_init();
1570 if (nm == NULL) {
1576 &nm->sidprefix, &nm->rid, &nm->pid,
1577 &nm->winname, &nm->windomain,
1578 &nm->unixname, &is_user, &is_wuser,
1579 &nm->direction, &info);
1581 nm->is_user = is_user ? IDMAP_YES : IDMAP_NO;
1582 nm->is_wuser = is_wuser ? IDMAP_YES : IDMAP_NO;
1585 (void) print_mapping(ph, nm);
1589 name_mapping_fini(nm);
1863 ucp_line2nm(char *line, cmd_pos_t *pos, name_mapping_t *nm)
1914 nm->windomain = token;
1915 nm->winname = token2;
1916 nm->is_nt4 = 1;
1918 nm->windomain = token2;
1919 nm->winname = token;
1920 nm->is_nt4 = 0;
1924 nm->windomain = NULL;
1925 nm->winname = token;
1926 nm->is_nt4 = 0;
1934 nm->direction = IDMAP_DIRECTION_BI;
1937 nm->direction = IDMAP_DIRECTION_U2W;
1940 nm->direction = IDMAP_DIRECTION_W2U;
1943 nm->direction = IDMAP_DIRECTION_BI;
1963 /* nm->winname to be freed by name_mapping_fini */
1974 nm->unixname = token;
1998 sup_line2nm(char *line, cmd_pos_t *pos, name_mapping_t *nm)
2029 nm->is_nt4 = 0;
2030 nm->direction = IDMAP_DIRECTION_W2U;
2032 nm->windomain = NULL;
2033 nm->winname = token;
2034 nm->unixname = strndup(unixname, unixname_l);
2035 if (nm->unixname == NULL)
2044 line2nm(char *line, cmd_pos_t *pos, name_mapping_t *nm, format_t f)
2051 return (ucp_line2nm(line, pos, nm));
2053 return (sup_line2nm(line, pos, nm));
2115 name_mapping_t *nm;
2168 nm = name_mapping_init();
2169 if (nm == NULL) {
2174 rc = line2nm(line2, &pos2, nm, format);
2178 name_mapping_fini(nm);
2182 stat = idmap_udt_add_namerule(udt, nm->windomain,
2183 nm->is_user ? B_TRUE : B_FALSE,
2184 nm->is_wuser ? B_TRUE : B_FALSE,
2185 nm->winname,
2186 nm->unixname, nm->is_nt4, nm->direction);
2197 name_mapping_fini(nm);
2227 name_mapping_t *nm;
2246 nm = name_mapping_init();
2247 if (nm == NULL) {
2252 stat = idmap_iter_next_namerule(ihandle, &nm->windomain,
2253 &nm->winname, &nm->unixname, &is_user, &is_wuser,
2254 &nm->is_nt4, &nm->direction);
2256 nm->is_user = is_user ? IDMAP_YES : IDMAP_NO;
2257 nm->is_wuser = is_wuser ? IDMAP_YES : IDMAP_NO;
2258 (void) print_mapping(ph, nm);
2261 name_mapping_fini(nm);
2394 * windomain unixname. E.g. for winname, it strdups nm->winname and possibly
2395 * nm->windomain and return TYPE_WN.
2405 name2parts(char *name, name_mapping_t *nm, cmd_pos_t *pos)
2418 if (nm->winname != NULL && nm->is_wuser != IDMAP_UNKNOWN)
2419 code = nm->is_wuser == IDMAP_YES ? TYPE_UU : TYPE_UG;
2420 else if (nm->unixname != NULL ||
2423 /* btw, nm->is_user can never be IDMAP_UNKNOWN here */
2435 nm->is_wuser = IDMAP_YES;
2437 nm->is_wuser = IDMAP_NO;
2440 nm->is_user = IDMAP_YES;
2442 nm->is_user = IDMAP_NO;
2446 if (nm->winname != NULL || nm->windomain != NULL)
2451 nm->winname = (char *)malloc(length);
2452 (void) strncpy(nm->winname, name, length - 1);
2453 nm->winname[length - 1] = '\0';
2454 nm->windomain = strdup(it + 1);
2457 nm->windomain = (char *)malloc(length);
2458 (void) strncpy(nm->windomain, name, length - 1);
2459 nm->windomain[length - 1] = '\0';
2460 nm->winname = strdup(it + 1);
2461 nm->is_nt4 = B_TRUE;
2463 nm->winname = strdup(name);
2470 if (nm->unixname != NULL)
2474 nm->unixname = strdup("\"\"");
2476 nm->unixname = strdup(name);
2482 if (!sid_convert(name, &nm->sidprefix, &nm->rid, pos))
2493 if (!pid_convert(name, &nm->pid, code, pos))
2511 name_mapping_t *nm;
2513 nm = name_mapping_init();
2514 if (nm == NULL)
2518 code = name2parts(argv[i % 2], nm, pos);
2541 if (argc == 2 && nm->winname == NULL) {
2545 if (argc == 2 && nm->unixname == NULL) {
2549 if (argc == 1 && nm->winname == NULL && nm->unixname == NULL) {
2556 return (nm);
2558 name_mapping_fini(nm);
2568 name_mapping_t *nm;
2586 nm = args2nm(&is_first_win, argc, argv, pos);
2587 if (nm == NULL)
2591 nm->direction = is_first_win
2595 nm->direction = IDMAP_DIRECTION_BI;
2600 name_mapping_fini(nm);
2605 /* nm->is_wuser can be IDMAP_YES, IDMAP_NO or IDMAP_UNKNOWN */
2606 if ((is_wuser == IDMAP_YES && nm->is_wuser == IDMAP_NO) ||
2607 (is_wuser == IDMAP_NO && nm->is_wuser == IDMAP_YES))
2610 stat = idmap_udt_add_namerule(udt, nm->windomain,
2611 nm->is_user ? B_TRUE : B_FALSE,
2613 nm->winname, nm->unixname, nm->is_nt4, nm->direction);
2622 (void) print_mapping(ph, nm);
2636 name_mapping_fini(nm);
2646 name_mapping_t *nm;
2696 nm = args2nm(&is_first_win, argc, argv, pos);
2697 if (nm == NULL)
2707 nm->direction = is_first_win
2711 nm->direction = is_first_win
2715 nm->direction = IDMAP_DIRECTION_UNDEF;
2718 name_mapping_fini(nm);
2723 if ((is_wuser == IDMAP_YES && nm->is_wuser == IDMAP_NO) ||
2724 (is_wuser == IDMAP_NO && nm->is_wuser == IDMAP_YES))
2728 nm->is_user ? B_TRUE : B_FALSE,
2730 nm->windomain, nm->winname, nm->unixname, nm->direction);
2745 name_mapping_fini(nm);
2816 nm2type(name_mapping_t *nm, int type, char **to)
2822 if (nm->sidprefix == NULL)
2824 *to = sid_format(nm);
2829 return (nm2winqn(nm, to));
2833 *to = pid_format(nm->pid, nm->is_user);
2841 return (nm2unixname(nm, to));
2860 name_mapping_t *nm = NULL;
2885 nm = name_mapping_init();
2886 if (nm == NULL)
2889 type_from = name2parts(argv[0], nm, pos);
2911 nm->is_wuser = IDMAP_YES;
2913 nm->is_wuser = IDMAP_NO;
2915 nm->is_wuser = IDMAP_UNKNOWN;
2918 nm->is_user = IDMAP_YES;
2920 nm->is_user = IDMAP_NO;
2947 nm->sidprefix,
2948 &nm->rid,
2949 nm->winname,
2950 nm->windomain,
2952 &nm->is_user, &nm->is_wuser,
2953 &nm->pid,
2954 &nm->unixname,
2955 &nm->direction,
2959 &nm->pid,
2960 nm->unixname,
2962 nm->is_user, &nm->is_wuser,
2963 &nm->sidprefix,
2964 &nm->rid,
2965 &nm->winname,
2966 &nm->windomain,
2967 &nm->direction,
2994 nm->sidprefix,
2995 nm->rid,
3002 nm->sidprefix,
3003 nm->rid,
3010 nm->sidprefix,
3011 nm->rid,
3013 &nm->pid,
3014 &nm->is_user,
3019 nm->pid,
3021 &nm->sidprefix,
3022 &nm->rid,
3027 (gid_t)nm->pid,
3029 &nm->sidprefix,
3030 &nm->rid,
3063 nm->pid = uid;
3065 nm->pid = (uid_t)gid;
3085 type_to == TYPE_PID) && nm->pid == UNDEFINED_UID)
3088 if (nm2type(nm, type_from, &fromname) < 0)
3091 if (nm2type(nm, type_to, &toname) < 0) {
3115 if (nm != NULL)
3116 name_mapping_fini(nm);
3217 name_mapping_t *nm;
3234 nm = args2nm(&is_first_win, argc, argv, pos);
3235 if (nm == NULL)
3241 nm->direction = is_first_win ? IDMAP_DIRECTION_W2U
3244 if (init_nm_command(user, passwd, f[a_FLAG], nm->windomain,
3245 nm->direction, pos) < 0)
3249 stat = idmap_set_namemap(namemaps.handle, nm->winname, nm->unixname,
3250 nm->is_user, nm->is_wuser, nm->direction);
3266 name_mapping_fini(nm);
3274 name_mapping_t *nm;
3291 nm = args2nm(&is_first_win, 1, argv, pos);
3292 if (nm == NULL)
3298 nm->direction = is_first_win ? IDMAP_DIRECTION_W2U
3310 name_mapping_fini(nm);
3313 nm->is_user = IDMAP_YES;
3316 nm->is_user = IDMAP_NO;
3328 if (init_nm_command(user, passwd, f[a_FLAG], nm->windomain,
3329 nm->direction, pos) < 0)
3332 stat = idmap_unset_namemap(namemaps.handle, nm->winname, nm->unixname,
3333 nm->is_user, nm->is_wuser, nm->direction);
3350 name_mapping_fini(nm);
3359 name_mapping_t *nm;
3379 nm = args2nm(&is_first_win, argc, argv, pos);
3380 if (nm == NULL)
3383 nm->direction = is_first_win ? IDMAP_DIRECTION_W2U
3386 /* nm->is_user is IDMAP_UNKNOWN for IDMAP_DIRECTION_W2U */
3387 if (nm->is_user == IDMAP_YES) {
3388 unixuser = strdup(nm->unixname);
3393 } else if (nm->is_user == IDMAP_NO) {
3394 unixgroup = strdup(nm->unixname);
3401 if (init_nm_command(NULL, NULL, NULL, nm->windomain,
3402 nm->direction, pos) < 0)
3405 stat = idmap_get_namemap(namemaps.handle, &is_source_ad, &nm->winname,
3406 &nm->windomain, &nm->is_wuser, &unixuser, &unixgroup);
3415 if (nm2winqn(nm, &winname) < 0)
3434 if (nm2unixname(nm, &unixname) < 0)
3437 if (nm->winname == NULL)
3457 name_mapping_fini(nm);