smbd_door_server.c revision 55bf511df53aad0fdb7eb3fa349f0308cc05234c
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER START
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * The contents of this file are subject to the terms of the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Common Development and Distribution License (the "License").
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You may not use this file except in compliance with the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * See the License for the specific language governing permissions
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * and limitations under the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * When distributing Covered Code, include this CDDL HEADER in each
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * If applicable, add the following below this CDDL HEADER, with the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * fields enclosed by brackets "[]" replaced with your own identifying
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * information: Portions Copyright [yyyy] [name of copyright owner]
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER END
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
ac88567a7a5bb7f01cf22cf366bc9d6203e24d7aHyon Kim * Use is subject to license terms.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock#pragma ident "%Z%%M% %I% %E% SMI"
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * SMBd door server
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockvoid smb_srv_door(void *, char *, size_t, door_desc_t *, uint_t);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * smb_doorsrv_start
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Start the SMBd door service.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Returns 0 on success. Otherwise, -1.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (0);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock syslog(LOG_ERR, "smb_doorsrv_start: door_create failed %s",
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock syslog(LOG_ERR, "smb_doorsrv_start: open failed %s",
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if (fattach(smb_door_fildes, SMBD_DOOR_NAME) < 0) {
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock syslog(LOG_ERR, "smb_doorsrv_start: fattach failed %s",
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (0);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * smb_doorsrv_stop
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Stop the smbd door service.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * smb_srv_door
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock/*ARGSUSED*/
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrocksmb_srv_door(void *cookie, char *ptr, size_t size, door_desc_t *dp,
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock unsigned int used;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock unsigned int dec_status;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock unsigned int enc_status;
if (enc_ctx == 0) {
switch (req_type) {
case SMBD_DOOR_PARAM_GET: {
if (dec_status != 0) {
goto decode_error;
if (value)
case SMBD_DOOR_PARAM_SET: {
if (dec_status != 0) {
goto decode_error;
case SMBD_DOOR_NETBIOS_RECONFIG: {
case SMBD_DOOR_JOIN:
if (dec_status != 0 ||
goto decode_error;
if (dec_status != 0) {
goto decode_error;
goto decode_error;
goto encode_error;