c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * CDDL HEADER START
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * The contents of this file are subject to the terms of the
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Common Development and Distribution License (the "License").
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * You may not use this file except in compliance with the License.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * See the License for the specific language governing permissions
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * and limitations under the License.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * When distributing Covered Code, include this CDDL HEADER in each
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * If applicable, add the following below this CDDL HEADER, with the
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * fields enclosed by brackets "[]" replaced with your own identifying
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * information: Portions Copyright [yyyy] [name of copyright owner]
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * CDDL HEADER END
9b214d32697277d03ed2e5d98c4a7bfef16dcf4dJordan Brown * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Use is subject to license terms.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Windows to Solaris Identity Mapping kernel API
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * This module provides an API to map Windows SIDs to
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Solaris UID and GIDs.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* DEBUG */
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * Defined types
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * This structure holds pointers for the
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * batch mapping results.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw/* Batch mapping handle structure */
bda89588bd7667394a834e8a9a34612cce2ae9c3jp/* Zone specific data */
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * Module global data
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * Local function definitions
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_call_door(idmap_zone_specific_t *zs, door_arg_t *arg);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw return (0);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * idmap_unreg_dh
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * This routine is called by system call idmap_unreg().
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * idmap_unreg() calls door_ki_rele() on the supplied
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * door handle after this routine returns. We only
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * need to perform one door release on zs->door_handle
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw return (0);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp * IMPORTANT. This function idmap_get_cache_data() is project
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp * private and is for use of the test system only and should
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp * not be used for other purposes.
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jpidmap_get_cache_data(zone_t *zone, size_t *uidbysid, size_t *gidbysid,
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_call_door(idmap_zone_specific_t *zs, door_arg_t *arg)
8d059b82ae23fedab9646299cec0f2242f2c38b6Julian Pullen /* The door has been retried before so dont wait */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp * There is no door handle yet. Give
8d059b82ae23fedab9646299cec0f2242f2c38b6Julian Pullen * smf a chance to restart idmapd
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: Error no registered door to call the "
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap daemon\n");
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp return (-1);
323a81d93e2f58a7d62f6e523f9fddbc029d3d0bjwadams status = door_ki_upcall_limited(dh, arg, NULL, SIZE_MAX, 0);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp switch (status) {
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp case 0: /* Success */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp return (0);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* If we took an interrupt we have to bail out. */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp if (ttolwp(curthread) && ISSIG(curthread, JUSTLOOKING)) {
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: Interrupted\n");
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp return (-1);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp * Just retry and see what happens.
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* FALLTHROUGH */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* A resouce problem */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* Back off before retrying */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: Door call returned error %d. Retrying\n", status);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp#endif /* DEBUG */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* Stale door handle. See if smf restarts the daemon. */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* Back off before retrying */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: Door call returned error %d. Retrying\n", status);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp#endif /* DEBUG */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp /* Unknown error */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp#endif /* DEBUG */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp return (-1);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp return (zs);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp zs = kmem_zalloc(sizeof (idmap_zone_specific_t), KM_SLEEP);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp return (zs);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp return (zs);
bda89588bd7667394a834e8a9a34612cce2ae9c3jpstatic void
bda89588bd7667394a834e8a9a34612cce2ae9c3jp/* ARGSUSED */
bda89588bd7667394a834e8a9a34612cce2ae9c3jp mutex_init(&idmap_zone_mutex, NULL, MUTEX_DEFAULT, NULL);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp zone_key_create(&idmap_zone_key, NULL, NULL, idmap_zone_destroy);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw return (0);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * idmap_get_door
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * This is called by the system call allocids() to get the door for the
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * given zone.
bda89588bd7667394a834e8a9a34612cce2ae9c3jp return (dh);
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * idmap_purge_cache
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * This is called by the system call allocids() to purge the cache for the
bda89588bd7667394a834e8a9a34612cce2ae9c3jp * given zone.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get UID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * uid - POSIX UID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Success return IDMAP_SUCCESS else IDMAP error
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_getuidbysid(zone_t *zone, const char *sid_prefix, uint32_t rid,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_uidbysid(&zs->cache, sid_prefix, rid, uid)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call succeded */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get GID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * gid - POSIX UID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Success return IDMAP_SUCCESS else IDMAP error
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_getgidbysid(zone_t *zone, const char *sid_prefix, uint32_t rid,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_gidbysid(&zs->cache, sid_prefix, rid, gid)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call succeded */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get Posix ID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * pid - POSIX ID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * is_user - 1 == UID, 0 == GID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Success return IDMAP_SUCCESS else IDMAP error
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_getpidbysid(zone_t *zone, const char *sid_prefix, uint32_t rid,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw if (sid_prefix == NULL || pid == NULL || is_user == NULL)
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_pidbysid(&zs->cache, sid_prefix, rid, pid,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call succeded */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given UID, get Domain SID and RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * uid - Posix UID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Success return IDMAP_SUCCESS else IDMAP error
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_getsidbyuid(zone_t *zone, uid_t uid, const char **sid_prefix,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_sidbyuid(&zs->cache, sid_prefix, rid, uid)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call succeded */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given GID, get Domain SID and RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * gid - Posix GID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID if return == IDMAP_SUCCESS
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Success return IDMAP_SUCCESS else IDMAP error
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_getsidbygid(zone_t *zone, gid_t gid, const char **sid_prefix,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_sidbygid(&zs->cache, sid_prefix, rid, gid)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call succeded */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Create handle to get SID to UID/GID mapping entries
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * get_handle
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw handle = kmem_zalloc(sizeof (idmap_get_handle_t), KM_SLEEP);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Internal routine to extend a "get_handle"
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwstatic void
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw int new_size = get_handle->mapping_size + INIT_MAPPING_SIZE;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get UID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * stat - status of the get request
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * uid - POSIX UID if stat == IDMAP_SUCCESS
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The output parameters will be set by idmap_get_mappings()
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The sid_prefix is copied.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwkidmap_batch_getuidbysid(idmap_get_handle_t *get_handle, const char *sid_prefix,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_uidbysid(&get_handle->zs->cache, sid_prefix,
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross /* Get a copy of sid_prefix */
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross sid_prefix = kidmap_find_sid_prefix(sid_prefix);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get GID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * stat - status of the get request
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * gid - POSIX GID if stat == IDMAP_SUCCESS
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The output parameters will be set by idmap_get_mappings()
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The sid_prefix is copied.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwkidmap_batch_getgidbysid(idmap_get_handle_t *get_handle, const char *sid_prefix,
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_gidbysid(&get_handle->zs->cache, sid_prefix,
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross /* Get a copy of sid_prefix */
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross sid_prefix = kidmap_find_sid_prefix(sid_prefix);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given Domain SID and RID, get Posix ID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid_prefix - Domain SID in canonical form
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * stat - status of the get request
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * is_user - user or group
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * pid - POSIX UID if stat == IDMAP_SUCCESS and is_user == 1
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * POSIX GID if stat == IDMAP_SUCCESS and is_user == 0
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The output parameters will be set by idmap_get_mappings()
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross * The sid_prefix is copied.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwkidmap_batch_getpidbysid(idmap_get_handle_t *get_handle, const char *sid_prefix,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw uint32_t rid, uid_t *pid, int *is_user, idmap_stat *stat)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw if (get_handle == NULL || sid_prefix == NULL || pid == NULL ||
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_cache_lookup_pidbysid(&get_handle->zs->cache, sid_prefix,
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross /* Get a copy of sid_prefix */
dea83360607af241eb793e94f19278029f3a8a97Gordon Ross sid_prefix = kidmap_find_sid_prefix(sid_prefix);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given UID, get SID and RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * uid - POSIX UID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * stat - status of the get request
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid - SID in canonical form (if stat == IDMAP_SUCCESS)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID (if stat == IDMAP_SUCCESS)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Note: The output parameters will be set by idmap_get_mappings()
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwkidmap_batch_getsidbyuid(idmap_get_handle_t *get_handle, uid_t uid,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw const char **sid_prefix, uint32_t *rid, idmap_stat *stat)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Given GID, get SID and RID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * gid - POSIX GID
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * stat - status of the get request
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * sid - SID in canonical form (if stat == IDMAP_SUCCESS)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * rid - RID (if stat == IDMAP_SUCCESS)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Note: The output parameters will be set by idmap_get_mappings()
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwkidmap_batch_getsidbygid(idmap_get_handle_t *get_handle, gid_t gid,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw const char **sid_prefix, uint32_t *rid, idmap_stat *stat)
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Process the batched "get mapping" requests. The results (i.e.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * status and identity) will be available in the data areas
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * provided by individual requests.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * If the door call fails the status IDMAP_ERR_NOMAPPING is
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * return and the UID or UID result is set to "nobody"
9d0aba9223380be5042b63aef9767fa367b2a2ecjp rpc_args.idmap_mapping_batch_len = get_handle->mapping_num;
bda89588bd7667394a834e8a9a34612cce2ae9c3jp if (kidmap_rpc_call(get_handle->zs, op, xdr_idmap_mapping_batch,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Door call failed */
9d0aba9223380be5042b63aef9767fa367b2a2ecjp /* RPC returned idmap error code */
9d0aba9223380be5042b63aef9767fa367b2a2ecjp /* Reset get_handle for new resquests */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Reset get_handle for new resquests */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Destroy the "get mapping" handle
bda89588bd7667394a834e8a9a34612cce2ae9c3jpkidmap_rpc_call(idmap_zone_specific_t *zs, uint32_t op, xdrproc_t xdr_args,
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw xdrmem_create(&xdr_ctx, inbuf_ptr, inbuf_size, XDR_ENCODE);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: xdr encoding header error");
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* DEBUG */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* Auth none */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw /* RPC args */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp zcmn_err(zs->zone_id, CE_WARN, "idmap: xdr encoding error");
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* DEBUG */
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: xdr_sizeof error");
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* DEBUG */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw xdrmem_create(&xdr_ctx, params.data_ptr, params.data_size, XDR_DECODE);
f7b4b2fefbe31d31fbe1e6a4b494a8fbed3f49b1jp "idmap: xdr decoding reply message error");
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* DEBUG */