da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER START
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * The contents of this file are subject to the terms of the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Common Development and Distribution License (the "License").
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You may not use this file except in compliance with the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * See the License for the specific language governing permissions
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and limitations under the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * When distributing Covered Code, include this CDDL HEADER in each
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If applicable, add the following below this CDDL HEADER, with the
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * fields enclosed by brackets "[]" replaced with your own identifying
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * information: Portions Copyright [yyyy] [name of copyright owner]
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER END
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Structure associating an ACE type to a string.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eastypedef struct {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Structure containing strings describing an SMB command.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eastypedef struct {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Structure describing an object to be expanded (displayed).
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eastypedef struct {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * List of supported options. Ther order has the match the bits SMB_OPT_xxx.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightstatic smb_mdb_opts_t smb_opts[SMB_MDB_MAX_OPTS] =
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Rossstatic const char *smb2_cmd_names[SMB2__NCMDS] = {
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_negotiate",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_session_setup",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_logoff",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_tree_connect",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_tree_disconn",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_create",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_close",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_flush",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_read",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_write",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_lock",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_ioctl",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_cancel",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_echo",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_query_dir",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_change_notify",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_query_info",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_set_info",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_oplock_break",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "smb2_invalid_cmd"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_list(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void smb_dcmd_list_help(void);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_server(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void smb_dcmd_session_help(void);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_session(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_request(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void smb_dcmd_user_help(void);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_user(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void smb_dcmd_tree_help(void);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_tree(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_odir(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_ofile(uintptr_t, uint_t, int, const mdb_arg_t *);
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rossstatic int smb_dcmd_kshare(uintptr_t, uint_t, int, const mdb_arg_t *);
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rossstatic int smb_dcmd_vfs(uintptr_t, uint_t, int, const mdb_arg_t *);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightstatic int smb_vfs_walk_init(mdb_walk_state_t *);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightstatic int smb_vfs_walk_step(mdb_walk_state_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void smb_node_help(void);
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rossstatic int smb_dcmd_node(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_lock(uintptr_t, uint_t, int, const mdb_arg_t *);
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstatic int smb_oplock(uintptr_t, uint_t, int, const mdb_arg_t *);
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshstatic int smb_oplock_grant(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_ace(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_acl(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_sd(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_sid(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_fssd(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_dcmd_getopt(uint_t *, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic int smb_obj_expand(uintptr_t, uint_t, const smb_exp_t *, ulong_t);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wrightstatic int smb_stats(uintptr_t, uint_t, int, const mdb_arg_t *);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * MDB module linkage information:
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * We declare a list of structures describing our dcmds, a list of structures
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * describing our walkers and a function named _mdb_init to return a pointer
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * to our module information.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smblist",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "[-seutfdwv]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print tree of SMB objects",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbsrv",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "[-seutfdwv]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_server information",
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross { "smbshares",
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross "print smb_kshare_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbvfs",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_vfs information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbnode",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "?[-vps]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_node_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbsess",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "[-utfdwv]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_session_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbreq",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_request_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbuser",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ":[-vdftq]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_user_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbtree",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ":[-vdf]",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_tree_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbodir",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "print smb_odir_t information",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbofile",
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "print smb_file_t information",
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "print smb_oplock_t information", smb_oplock },
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "print smb_oplock_grant_t information", smb_oplock_grant },
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "print all smb dispatched requests statistics",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbnode_walker",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "walk list of smb_node_t structures",
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright { "smbvfs_walker",
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "walk list of smb_vfs_t structures",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "smbace_walker",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "walk list of smb_ace_t structures",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** Top level DCMD *******************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "Displays the list of objects using an indented tree format.\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "If no option is specified the entire tree is displayed\n\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-v\tDisplay verbose information\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-s\tDisplay the list of servers\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-e\tDisplay the list of sessions\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-r\tDisplay the list of smb requests\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-u\tDisplay the list of users\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-t\tDisplay the list of trees\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-f\tDisplay the list of open files\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-d\tDisplay the list of open searches\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smblist
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * This function lists the objects specified on the command line. If no object
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * is specified the entire tree (server through ofile and odir) is displayed.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas/*ARGSUSED*/
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_list(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas new_argc = smb_dcmd_setopt(opts, SMB_MDB_MAX_OPTS, new_argv);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross if (mdb_lookup_by_obj(SMBSRV_OBJNAME, "smb_servers", &sym) == -1) {
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross addr = (uintptr_t)sym.st_value + OFFSETOF(smb_llist_t, ll_list);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross if (mdb_pwalk_dcmd("list", "smbsrv", new_argc, new_argv, addr)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ***************************** smb_server_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_server_state[SMB_SERVER_STATE_SENTINEL] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CREATED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CONFIGURED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "RUNNING",
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States "STOPPING",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "DELETING"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * List of objects that can be expanded under a server structure.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross OFFSETOF(smb_server_t, sv_nbt_daemon.ld_session_list.ll_list),
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross OFFSETOF(smb_server_t, sv_tcp_daemon.ld_session_list.ll_list),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbsrv
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smbsrv dcmd - Print out smb_server structures.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas/*ARGSUSED*/
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_server(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (smb_obj_list("smb_server", opts | SMB_OPT_SERVER,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (((opts & SMB_OPT_WALK) && (opts & SMB_OPT_SERVER)) ||
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%-?s% "
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ***************************** smb_session_t *********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_session_state[SMB_SESSION_STATE_SENTINEL] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "INITIALIZED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "DISCONNECTED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CONNECTED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "ESTABLISHED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "NEGOTIATED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "TERMINATED"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * List of objects that can be expanded under a session structure.
3b13a1ef7511135ec0c75b5f94de8075454efd79Thomas Keiser { SMB_OPT_TREE | SMB_OPT_OFILE | SMB_OPT_ODIR,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "Display the contents of smb_session_t, with optional"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas " filtering.\n\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-v\tDisplay verbose smb_session information\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-r\tDisplay the list of smb requests attached\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-u\tDisplay the list of users attached\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbsess
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smbsess dcmd - Print out the smb_session structure.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_session(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (((opts & SMB_OPT_WALK) && (opts & SMB_OPT_SESSION)) ||
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross mdb_printf("Session dialect: %#x\n", se->dialect);
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "%<b>%<u>%-?s %-*s %-8s %-8s %-12s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * **************************** smb_request_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_request_state[SMB_REQ_STATE_SENTINEL] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "INITIALIZING",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "SUBMITTED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "WAITING_EVENT",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "EVENT_OCCURRED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "WAITING_LOCK",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "COMPLETED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CANCELED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CLEANED_UP"
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "%<b>%<u>%-?s %-?s %-14s %-14s %-16s %-32s%</u>%</b>\n"
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "%-?p %-?p %-14lld %-14lld %-16s %s\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_request(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas opts &= ~(SMB_OPT_SERVER | SMB_OPT_SESSION | SMB_OPT_USER);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (((opts & SMB_OPT_WALK) && (opts & SMB_OPT_REQUEST)) ||
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * Note: mdb_gethrtime() is only available in kmdb
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#endif /* _KERNEL */
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross /* SMB2 request */
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross /* SMB1 request */
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright "%</b>%</u>SMB request information (%p):"
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross /* SMB1 request */
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "first SMB COM: %u (%s)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "current SMB COM: %u (%s)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "state: %u (%s)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "TID(tree): %u (%p)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "UID(user): %u (%p)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "FID(file): %u (%p)\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "PID: %u\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "MID: 0x%llx\n\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "MID: %u\n\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "waiting time: %lld\n",
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "running time: %lld\n",
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross "worker thread: %p\n",
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "WAITING(s)",
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "RUNNING(s)",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** smb_user_t ***********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_user_state[SMB_USER_STATE_SENTINEL] =
12b65585e720714b31036daaa2b30eb76014048eGordon Ross "LOGGING_ON",
12b65585e720714b31036daaa2b30eb76014048eGordon Ross "LOGGED_ON",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "LOGGING_OFF",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "LOGGED_OFF"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "Display the contents of smb_user_t, with optional filtering.\n\n");
3b13a1ef7511135ec0c75b5f94de8075454efd79Thomas Keiser "-v\tDisplay verbose smb_user information\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_user(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas opts &= ~(SMB_OPT_SERVER | SMB_OPT_SESSION | SMB_OPT_REQUEST);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas account = mdb_zalloc(user->u_domain_len + user->u_name_len + 2,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%?-s "
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%-32s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** smb_tree_t ***********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_tree_state[SMB_TREE_STATE_SENTINEL] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CONNECTED",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "DISCONNECTING",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "DISCONNECTED"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * List of objects that can be expanded under a tree structure.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic void
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "Display the contents of smb_tree_t, with optional filtering.\n\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-v\tDisplay verbose smb_tree information\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-d\tDisplay the list of smb_odirs attached\n"
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "-f\tDisplay the list of smb_ofiles attached\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_tree(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas opts &= ~(SMB_OPT_SERVER | SMB_OPT_SESSION | SMB_OPT_REQUEST |
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%-?s %-5s %-16s %-32s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** smb_odir_t ***********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_odir_state[SMB_ODIR_STATE_SENTINEL] =
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States "IN_USE",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CLOSING",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_odir(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas opts &= ~(SMB_OPT_SERVER | SMB_OPT_SESSION | SMB_OPT_REQUEST |
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>SMB odir information (%p):%</u>%</b>\n\n",
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai "%<b>%<u>%-?s "
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai "%-16s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** smb_ofile_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const char *smb_ofile_state[SMB_OFILE_STATE_SENTINEL] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "CLOSING",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_ofile(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas opts &= ~(SMB_OPT_SERVER | SMB_OPT_SESSION | SMB_OPT_REQUEST |
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>SMB ofile information (%p):%</u>%</b>\n\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%-?s "
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%-?s%</u>%</b>\n",
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * *****************************************************************************
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * ******************************** smb_kshare_t *******************************
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * *****************************************************************************
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rosssmb_kshare_cb(uintptr_t addr, const void *data, void *arg)
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross /* Don't fail the walk if this fails. */
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * Summary line for a kshare
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * Don't fail the walk if any of these fail.
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * ::smbshares
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross * dcmd - Print out smb_kshare structures.
8622ec4569457733001d4982ef7f5b44427069beGordon Ross * requires addr of an smb_server_t
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rosssmb_dcmd_kshare(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
8622ec4569457733001d4982ef7f5b44427069beGordon Ross addr += OFFSETOF(smb_server_t, sv_export.e_share_avl.avl_tree);
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Ross "%</u>%</b>\n",
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross if (mdb_pwalk("avl", smb_kshare_cb, &opts, addr) == -1) {
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * *****************************************************************************
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * ******************************** smb_vfs_t **********************************
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * *****************************************************************************
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * smbvfs dcmd - Prints out smb_vfs structures.
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rosssmb_dcmd_vfs(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * If no smb_vfs address was specified on the command line, we can
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * print out all smb_vfs by invoking the smb_vfs walker, using
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * this dcmd itself as the callback.
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "%</u>%</b>\n",
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright mdb_warn("failed to read vnode at %p", sf->sv_rootvp);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright path = mdb_zalloc(MAXPATHLEN, UM_SLEEP | UM_GC);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright (void) mdb_vread(path, MAXPATHLEN, (uintptr_t)vn->v_path);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "%-?p %-10d %-?p %-?p %-s\n", addr, sf->sv_refcnt,
8622ec4569457733001d4982ef7f5b44427069beGordon Ross * Initialize the smb_vfs_t walker to point to the smb_export
8622ec4569457733001d4982ef7f5b44427069beGordon Ross * in the specified smb_server_t instance. (no global walks)
8622ec4569457733001d4982ef7f5b44427069beGordon Ross mdb_printf("require address of an smb_server_t\n");
8622ec4569457733001d4982ef7f5b44427069beGordon Ross OFFSETOF(smb_server_t, sv_export.e_vfs_list.ll_list);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright return (wsp->walk_callback(wsp->walk_addr, wsp->walk_layer,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ******************************* smb_node_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwstatic void
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "Display the contents of smb_node_t, with optional filtering.\n\n");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "-v\tDisplay verbose smb_node information\n"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "-p\tDisplay the full path of the vnode associated\n"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "-s\tDisplay the stack of the last 16 calls that modified the "
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "reference\n\tcount\n");
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbnode
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * smb_node dcmd - Print out smb_node structure.
5a6c34e66bd3c0e1e99813ddb7112100eaad276eGordon Rosssmb_dcmd_node(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If no smb_node address was specified on the command line, we can
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * print out all smb nodes by invoking the smb_node walker, using
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * this dcmd itself as the callback.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If this is the first invocation of the command, print a nice
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * header line for the output that will follow.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%-?s "
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%-6s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * For each smb_node, we just need to read the smb_node_t struct, read
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * and then print out the following fields.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw if (mdb_vread(&node, sizeof (node), addr) == sizeof (node)) {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw " locks");
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh mdb_printf("%-?p %-?p %-18s %-6d %-6d %-8d %-6d ",
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw for (i = 0;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw c, sizeof (c),
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw c, sizeof (c),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Initialize the smb_node_t walker by reading the value of smb_node_hash_table
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * in the kernel's symbol table. Only global walk supported.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross if (mdb_lookup_by_obj(SMBSRV_OBJNAME, "smb_node_hash_table",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas mdb_printf("smb_node walk only supports global walks\n");
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross (i * sizeof (smb_llist_t)) + OFFSETOF(smb_llist_t, ll_list);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (wsp->walk_callback(wsp->walk_addr, wsp->walk_layer,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ****************************** smb_lock_t ***********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwsmb_lock(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * An smb_lock_t address must be specified.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * If this is the first invocation of the command, print a nice
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * header line for the output that will follow.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "CONFLICTS");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw if (mdb_vread(&lock, sizeof (lock), addr) == sizeof (lock)) {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw "locks ");
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw mdb_warn("failed to read struct smb_request at %p", addr);
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * *****************************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * ************************** smb_oplock_grant_t *******************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * *****************************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshsmb_oplock_grant(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * If this is the first invocation of the command, print a nice
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * header line for the output that will follow.
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh if (mdb_vread(&grant, sizeof (grant), addr) == sizeof (grant)) {
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh mdb_printf("%-16p %-10s %-16p", addr, level, grant.og_ofile);
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * *****************************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * ***************************** smb_oplock_t **********************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh * *****************************************************************************
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintoshsmb_oplock(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh if (mdb_vread(&oplock, sizeof (oplock), addr) != sizeof (oplock)) {
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh mdb_warn("failed to read struct smb_oplock at %p", addr);
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh mdb_printf("Break Pending: BREAK_TO_NONE\n");
cb174861876aea6950a7ab4ce944aff84b1914cdjoyce mcintosh "Break Pending: BREAK_TO_LEVEL_II\n");
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross list_addr = addr + OFFSETOF(smb_oplock_t, ol_grants);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Prints SMB requests statistics.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas/*ARGSUSED*/
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_stats(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright mdb_warn("failed to read server object at %p", addr);
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "\n%<b> nbt tcp users trees files pipes%</b>\n"
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright "%5d %5d %5d %5d %5d %5d\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ******************************** smb_ace_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2easstatic const ace_type_entry_t ace_types[ACE_TYPE_TABLEN] =
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ACE_TYPE_ENTRY(ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ACE_TYPE_ENTRY(ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ACE_TYPE_ENTRY(ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas ACE_TYPE_ENTRY(ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE),
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "OBJECT_INHERIT_ACE", OBJECT_INHERIT_ACE, OBJECT_INHERIT_ACE },
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "INHERIT_ONLY_ACE", INHERIT_ONLY_ACE, INHERIT_ONLY_ACE },
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas { "SUCCESSFUL_ACCESS_ACE_FLAG", SUCCESSFUL_ACCESS_ACE_FLAG,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbace
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_ace(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (mdb_getopts(argc, argv, 'v', MDB_OPT_SETBITS, TRUE, &verbose,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * An smb_ace address is required.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (mdb_vread(&ace, sizeof (ace), addr) != sizeof (ace)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas mdb_printf("ACE Type: 0x%02x (%s)\n", ace.se_hdr.se_type, ptr);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas mdb_printf("ACE Wire Size: 0x%04x\n", ace.se_hdr.se_bsize);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas "%<b>%<u>%?-s %-4s %-4s %-8s %s%</u>%</b>\n",
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross wsp->walk_addr += OFFSETOF(smb_acl_t, sl_sorted);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (wsp->walk_callback(wsp->walk_addr, wsp->walk_layer,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ******************************** smb_acl_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbacl
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_acl(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas /* An smb_acl address is required. */
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (mdb_vread(&acl, sizeof (acl), addr) != sizeof (acl)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (mdb_pwalk_dcmd("smbace_walker", "smbace", argc, argv, addr)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas mdb_warn("failed to walk list of ACEs for ACL %p", addr);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ********************************* smb_sd_t **********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_sd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * An smb_sid address is required.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas rc = mdb_call_dcmd("smbacl", (uintptr_t)sd.sd_sacl, flags,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas rc = mdb_call_dcmd("smbacl", (uintptr_t)sd.sd_dacl, flags,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ********************************* smb_sid_t *********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbsid
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas/*ARGSUSED*/
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_sid(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * An smb_sid address is required.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smb_sid_print
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas sid_size += sid.sid_subauthcnt * sizeof (sid.sid_subauth[0]);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas for (i = 0; i < NT_SID_AUTH_MAX; i++) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ********************************* smb_fssd_t ********************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * ::smbfssd
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_fssd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * An smb_fssd address is required.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (mdb_vread(&fssd, sizeof (fssd), addr) != sizeof (fssd)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (fssd.sd_secinfo & SMB_SACL_SECINFO && fssd.sd_zsacl) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas rc = mdb_call_dcmd("smbacl", (uintptr_t)fssd.sd_zsacl, flags,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas if (fssd.sd_secinfo & SMB_DACL_SECINFO && fssd.sd_zdacl) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas rc = mdb_call_dcmd("smbacl", (uintptr_t)fssd.sd_zdacl, flags,
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * **************************** Utility Funcions *******************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * *****************************************************************************
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smb_dcmd_getopt
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * This function analyzes the arguments passed in and sets the bit corresponding
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * to the options found in the opts variable.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Return Value
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * -1 An error occured during the decoding
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * 0 The decoding was successful
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_getopt(uint_t *opts, int argc, const mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (-1);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (0);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smb_dcmd_setopt
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * This function set the arguments corresponding to the bits set in opts.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Return Value
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Number of arguments set.
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_dcmd_setopt(uint_t opts, int max_argc, mdb_arg_t *argv)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas for (i = 0; i < SMB_MDB_MAX_OPTS; i++) {
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright if ((opts & smb_opts[i].o_value) && (argc < max_argc)) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smb_obj_expand
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eassmb_obj_expand(uintptr_t addr, uint_t opts, const smb_exp_t *x, ulong_t indent)
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas argc = smb_dcmd_setopt(opts | SMB_OPT_WALK, SMB_MDB_MAX_OPTS, argv);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas while (x->ex_dcmd) {
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas return (rc);
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * smb_obj_list
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Function called by the DCMDs when no address is provided. It expands the
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * tree under the object type associated with the calling DCMD (based on the
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * flags passed in).
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * Return Value
6537f381d2d9e7b4e2f7b29c3e7a3f13be036f2eas * DCMD_ERR
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright (void) mdb_call_dcmd("findstack", addr, DCMD_ADDRSPEC, 1, &cmdarg);