1*da6c28aaSamw /* 2*da6c28aaSamw * CDDL HEADER START 3*da6c28aaSamw * 4*da6c28aaSamw * The contents of this file are subject to the terms of the 5*da6c28aaSamw * Common Development and Distribution License (the "License"). 6*da6c28aaSamw * You may not use this file except in compliance with the License. 7*da6c28aaSamw * 8*da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*da6c28aaSamw * or http://www.opensolaris.org/os/licensing. 10*da6c28aaSamw * See the License for the specific language governing permissions 11*da6c28aaSamw * and limitations under the License. 12*da6c28aaSamw * 13*da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each 14*da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the 16*da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying 17*da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner] 18*da6c28aaSamw * 19*da6c28aaSamw * CDDL HEADER END 20*da6c28aaSamw */ 21*da6c28aaSamw /* 22*da6c28aaSamw * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*da6c28aaSamw * Use is subject to license terms. 24*da6c28aaSamw */ 25*da6c28aaSamw 26*da6c28aaSamw #ifndef _SMBSRV_SVRAPI_H 27*da6c28aaSamw #define _SMBSRV_SVRAPI_H 28*da6c28aaSamw 29*da6c28aaSamw #pragma ident "%Z%%M% %I% %E% SMI" 30*da6c28aaSamw 31*da6c28aaSamw /* 32*da6c28aaSamw * This file provides definitions for the SMB Net interface. On Windows 33*da6c28aaSamw * this would be NetAccess, NetConnection, NetFile, NetServer, 34*da6c28aaSamw * NetSession, NetShare and NetSecurity but here things are a limited. 35*da6c28aaSamw * This stuff should be described in Windows 9x LanMan documentation. 36*da6c28aaSamw * 37*da6c28aaSamw * Notes: 38*da6c28aaSamw * Lengths of ASCIIZ strings are given as the maximum strlen() value. 39*da6c28aaSamw * This does not include space for the terminating 0-byte. When 40*da6c28aaSamw * allocating space for such an item, use the form: 41*da6c28aaSamw * 42*da6c28aaSamw * char username[LM20_UNLEN+1]; 43*da6c28aaSamw * 44*da6c28aaSamw * An exception to this is PATHLEN, which does include space for the 45*da6c28aaSamw * terminating 0-byte. 46*da6c28aaSamw * 47*da6c28aaSamw * User names, computer names and share names should be upper-cased 48*da6c28aaSamw * by the caller and drawn from the ANSI character set. 49*da6c28aaSamw */ 50*da6c28aaSamw 51*da6c28aaSamw #ifdef __cplusplus 52*da6c28aaSamw extern "C" { 53*da6c28aaSamw #endif 54*da6c28aaSamw 55*da6c28aaSamw 56*da6c28aaSamw /* 57*da6c28aaSamw * Server Class (NetServerGetInfo, NetServerEnum2) 58*da6c28aaSamw */ 59*da6c28aaSamw 60*da6c28aaSamw struct server_info_0 { 61*da6c28aaSamw char sv0_name[CNLEN + 1]; /* Server name */ 62*da6c28aaSamw }; /* server_info_0 */ 63*da6c28aaSamw 64*da6c28aaSamw 65*da6c28aaSamw struct server_info_1 { 66*da6c28aaSamw char sv1_name[CNLEN + 1]; /* Server name */ 67*da6c28aaSamw unsigned char sv1_version_major; /* Major version # of net */ 68*da6c28aaSamw unsigned char sv1_version_minor; /* Minor version # of net */ 69*da6c28aaSamw uint32_t sv1_type; /* Server type */ 70*da6c28aaSamw char *sv1_comment; /* Exported server comment */ 71*da6c28aaSamw }; /* server_info_1 */ 72*da6c28aaSamw 73*da6c28aaSamw 74*da6c28aaSamw /* NOTE struct prefix must equal server_info_1 format */ 75*da6c28aaSamw 76*da6c28aaSamw struct server_info_50 { 77*da6c28aaSamw char sv50_name[CNLEN + 1]; 78*da6c28aaSamw unsigned char sv50_version_major; /* Major version # of net */ 79*da6c28aaSamw unsigned char sv50_version_minor; /* Minor version # of net */ 80*da6c28aaSamw uint32_t sv50_type; /* Server type */ 81*da6c28aaSamw char *sv50_comment; /* Exported server comment */ 82*da6c28aaSamw unsigned short sv50_security; /* SV_SECURITY_* (see below) */ 83*da6c28aaSamw unsigned short sv50_auditing; /* 0 = no auditing; !0 = auditing */ 84*da6c28aaSamw char *sv50_container; /* Security server/domain */ 85*da6c28aaSamw char *sv50_ab_server; /* Address book server */ 86*da6c28aaSamw char *sv50_ab_dll; /* Address book provider DLL */ 87*da6c28aaSamw }; /* server_info_50 */ 88*da6c28aaSamw 89*da6c28aaSamw 90*da6c28aaSamw struct server_info_2 { 91*da6c28aaSamw char sv2_name[CNLEN + 1]; 92*da6c28aaSamw unsigned char sv2_version_major; 93*da6c28aaSamw unsigned char sv2_version_minor; 94*da6c28aaSamw uint32_t sv2_type; 95*da6c28aaSamw char *sv2_comment; 96*da6c28aaSamw uint32_t sv2_ulist_mtime; /* User list, last modification time */ 97*da6c28aaSamw uint32_t sv2_glist_mtime; /* Group list, last modification time */ 98*da6c28aaSamw uint32_t sv2_alist_mtime; /* Access list, last modification time */ 99*da6c28aaSamw uint16_t sv2_users; /* max number of users allowed */ 100*da6c28aaSamw uint16_t sv2_disc; /* auto-disconnect timeout(in minutes) */ 101*da6c28aaSamw char *sv2_alerts; /* alert names (semicolon separated) */ 102*da6c28aaSamw uint16_t sv2_security; /* SV_USERSECURITY or SV_SHARESECURITY */ 103*da6c28aaSamw uint16_t sv2_auditing; /* 0 = no auditing; nonzero = auditing */ 104*da6c28aaSamw 105*da6c28aaSamw uint16_t sv2_numadmin; /* max number of administrators allowed */ 106*da6c28aaSamw uint16_t sv2_lanmask; /* bit mask representing the srv'd nets */ 107*da6c28aaSamw uint16_t sv2_hidden; /* 0 = visible; nonzero = hidden */ 108*da6c28aaSamw uint16_t sv2_announce; /* visible server announce rate (sec) */ 109*da6c28aaSamw uint16_t sv2_anndelta; /* announce randomize interval (sec) */ 110*da6c28aaSamw /* name of guest account */ 111*da6c28aaSamw char sv2_guestacct[LM20_UNLEN + 1]; 112*da6c28aaSamw unsigned char sv2_pad1; /* Word alignment pad byte */ 113*da6c28aaSamw char *sv2_userpath; /* ASCIIZ path to user directories */ 114*da6c28aaSamw uint16_t sv2_chdevs; /* max # shared character devices */ 115*da6c28aaSamw uint16_t sv2_chdevq; /* max # character device queues */ 116*da6c28aaSamw uint16_t sv2_chdevjobs; /* max # character device jobs */ 117*da6c28aaSamw uint16_t sv2_connections; /* max # of connections */ 118*da6c28aaSamw uint16_t sv2_shares; /* max # of shares */ 119*da6c28aaSamw uint16_t sv2_openfiles; /* max # of open files */ 120*da6c28aaSamw uint16_t sv2_sessopens; /* max # of open files per session */ 121*da6c28aaSamw uint16_t sv2_sessvcs; /* max # of virtual circuits per client */ 122*da6c28aaSamw uint16_t sv2_sessreqs; /* max # of simul. reqs. from a client */ 123*da6c28aaSamw uint16_t sv2_opensearch; /* max # of open searches */ 124*da6c28aaSamw uint16_t sv2_activelocks; /* max # of active file locks */ 125*da6c28aaSamw uint16_t sv2_numreqbuf; /* number of server (standard) buffers */ 126*da6c28aaSamw uint16_t sv2_sizreqbuf; /* size of svr (standard) bufs (bytes) */ 127*da6c28aaSamw uint16_t sv2_numbigbuf; /* number of big (64K) buffers */ 128*da6c28aaSamw uint16_t sv2_numfiletasks; /* number of file worker processes */ 129*da6c28aaSamw uint16_t sv2_alertsched; /* alert counting interval (minutes) */ 130*da6c28aaSamw uint16_t sv2_erroralert; /* error log alerting threshold */ 131*da6c28aaSamw uint16_t sv2_logonalert; /* logon violation alerting threshold */ 132*da6c28aaSamw uint16_t sv2_accessalert; /* access violation alerting threshold */ 133*da6c28aaSamw uint16_t sv2_diskalert; /* low disk space alert threshold (KB) */ 134*da6c28aaSamw uint16_t sv2_netioalert; /* net I/O error ratio alert threshold */ 135*da6c28aaSamw /* (tenths of a percent) */ 136*da6c28aaSamw uint16_t sv2_maxauditsz; /* Maximum audit file size (KB) */ 137*da6c28aaSamw char *sv2_srvheuristics; /* performance related server switches */ 138*da6c28aaSamw }; /* server_info_2 */ 139*da6c28aaSamw 140*da6c28aaSamw 141*da6c28aaSamw struct server_info_3 { 142*da6c28aaSamw char sv3_name[CNLEN + 1]; 143*da6c28aaSamw unsigned char sv3_version_major; 144*da6c28aaSamw unsigned char sv3_version_minor; 145*da6c28aaSamw uint32_t sv3_type; 146*da6c28aaSamw char *sv3_comment; 147*da6c28aaSamw uint32_t sv3_ulist_mtime; /* User list, last modification time */ 148*da6c28aaSamw uint32_t sv3_glist_mtime; /* Group list, last modification time */ 149*da6c28aaSamw uint32_t sv3_alist_mtime; /* Access list, last modification time */ 150*da6c28aaSamw uint16_t sv3_users; /* max number of users allowed */ 151*da6c28aaSamw uint16_t sv3_disc; /* auto-disconnect timeout(in minutes) */ 152*da6c28aaSamw char *sv3_alerts; /* alert names (semicolon separated) */ 153*da6c28aaSamw uint16_t sv3_security; /* SV_USERSECURITY or SV_SHARESECURITY */ 154*da6c28aaSamw uint16_t sv3_auditing; /* 0 = no auditing; nonzero = auditing */ 155*da6c28aaSamw 156*da6c28aaSamw uint16_t sv3_numadmin; /* max number of administrators allowed */ 157*da6c28aaSamw uint16_t sv3_lanmask; /* bit mask representing the srv'd nets */ 158*da6c28aaSamw uint16_t sv3_hidden; /* 0 = visible; nonzero = hidden */ 159*da6c28aaSamw uint16_t sv3_announce; /* visible server announce rate (sec) */ 160*da6c28aaSamw uint16_t sv3_anndelta; /* announce randomize interval (sec) */ 161*da6c28aaSamw /* name of guest account */ 162*da6c28aaSamw char sv3_guestacct[LM20_UNLEN + 1]; 163*da6c28aaSamw unsigned char sv3_pad1; /* Word alignment pad byte */ 164*da6c28aaSamw char *sv3_userpath; /* ASCIIZ path to user directories */ 165*da6c28aaSamw uint16_t sv3_chdevs; /* max # shared character devices */ 166*da6c28aaSamw uint16_t sv3_chdevq; /* max # character device queues */ 167*da6c28aaSamw uint16_t sv3_chdevjobs; /* max # character device jobs */ 168*da6c28aaSamw uint16_t sv3_connections; /* max # of connections */ 169*da6c28aaSamw uint16_t sv3_shares; /* max # of shares */ 170*da6c28aaSamw uint16_t sv3_openfiles; /* max # of open files */ 171*da6c28aaSamw uint16_t sv3_sessopens; /* max # of open files per session */ 172*da6c28aaSamw uint16_t sv3_sessvcs; /* max # of virtual circuits per client */ 173*da6c28aaSamw uint16_t sv3_sessreqs; /* max # of simul. reqs. from a client */ 174*da6c28aaSamw uint16_t sv3_opensearch; /* max # of open searches */ 175*da6c28aaSamw uint16_t sv3_activelocks; /* max # of active file locks */ 176*da6c28aaSamw uint16_t sv3_numreqbuf; /* number of server (standard) buffers */ 177*da6c28aaSamw uint16_t sv3_sizreqbuf; /* size of svr (standard) bufs (bytes) */ 178*da6c28aaSamw uint16_t sv3_numbigbuf; /* number of big (64K) buffers */ 179*da6c28aaSamw uint16_t sv3_numfiletasks; /* number of file worker processes */ 180*da6c28aaSamw uint16_t sv3_alertsched; /* alert counting interval (minutes) */ 181*da6c28aaSamw uint16_t sv3_erroralert; /* error log alerting threshold */ 182*da6c28aaSamw uint16_t sv3_logonalert; /* logon violation alerting threshold */ 183*da6c28aaSamw uint16_t sv3_accessalert; /* access violation alerting threshold */ 184*da6c28aaSamw uint16_t sv3_diskalert; /* low disk space alert threshold (KB) */ 185*da6c28aaSamw uint16_t sv3_netioalert; /* net I/O error ratio alert threshold */ 186*da6c28aaSamw /* (tenths of a percent) */ 187*da6c28aaSamw uint16_t sv3_maxauditsz; /* Maximum audit file size (KB) */ 188*da6c28aaSamw char *sv3_srvheuristics; /* performance related server switches */ 189*da6c28aaSamw uint32_t sv3_auditedevents; /* Audit event control mask */ 190*da6c28aaSamw uint16_t sv3_autoprofile; /* (0,1,2,3) = (NONE,LOAD,SAVE,or BOTH) */ 191*da6c28aaSamw char *sv3_autopath; /* file pathname (where to load & save) */ 192*da6c28aaSamw }; /* server_info_3 */ 193*da6c28aaSamw 194*da6c28aaSamw 195*da6c28aaSamw /* 196*da6c28aaSamw * Mask to be applied to svX_version_major in order to obtain 197*da6c28aaSamw * the major version number. 198*da6c28aaSamw */ 199*da6c28aaSamw #define MAJOR_VERSION_MASK 0x0F 200*da6c28aaSamw 201*da6c28aaSamw 202*da6c28aaSamw /* 203*da6c28aaSamw * Bit-mapped values for svX_type fields. X = 1, 2, 3 etc. 204*da6c28aaSamw * 205*da6c28aaSamw * SV_TYPE_WORKSTATION 0x00000001 All workstations 206*da6c28aaSamw * SV_TYPE_SERVER 0x00000002 All servers 207*da6c28aaSamw * SV_TYPE_SQLSERVER 0x00000004 Any server running with SQL 208*da6c28aaSamw * server 209*da6c28aaSamw * SV_TYPE_DOMAIN_CTRL 0x00000008 Primary domain controller 210*da6c28aaSamw * SV_TYPE_DOMAIN_BAKCTRL 0x00000010 Backup domain controller 211*da6c28aaSamw * SV_TYPE_TIME_SOURCE 0x00000020 Server running the timesource 212*da6c28aaSamw * service 213*da6c28aaSamw * SV_TYPE_AFP 0x00000040 Apple File Protocol servers 214*da6c28aaSamw * SV_TYPE_NOVELL 0x00000080 Novell servers 215*da6c28aaSamw * SV_TYPE_DOMAIN_MEMBER 0x00000100 Domain Member 216*da6c28aaSamw * SV_TYPE_PRINTQ_SERVER 0x00000200 Server sharing print queue 217*da6c28aaSamw * SV_TYPE_DIALIN_SERVER 0x00000400 Server running dialin service. 218*da6c28aaSamw * SV_TYPE_XENIX_SERVER 0x00000800 Xenix server 219*da6c28aaSamw * SV_TYPE_NT 0x00001000 NT server 220*da6c28aaSamw * SV_TYPE_WFW 0x00002000 Server running Windows for 221*da6c28aaSamw * Workgroups 222*da6c28aaSamw * SV_TYPE_SERVER_NT 0x00008000 Windows NT non DC server 223*da6c28aaSamw * SV_TYPE_POTENTIAL_BROWSER 0x00010000 Server that can run the browser 224*da6c28aaSamw * service 225*da6c28aaSamw * SV_TYPE_BACKUP_BROWSER 0x00020000 Backup browser server 226*da6c28aaSamw * SV_TYPE_MASTER_BROWSER 0x00040000 Master browser server 227*da6c28aaSamw * SV_TYPE_DOMAIN_MASTER 0x00080000 Domain Master Browser server 228*da6c28aaSamw * SV_TYPE_LOCAL_LIST_ONLY 0x40000000 Enumerate only entries marked 229*da6c28aaSamw * "local" 230*da6c28aaSamw * SV_TYPE_DOMAIN_ENUM 0x80000000 Enumerate Domains. The pszDomain 231*da6c28aaSamw * parameter must be NULL. 232*da6c28aaSamw */ 233*da6c28aaSamw #define SV_TYPE_WORKSTATION 0x00000001 234*da6c28aaSamw #define SV_TYPE_SERVER 0x00000002 235*da6c28aaSamw #define SV_TYPE_SQLSERVER 0x00000004 236*da6c28aaSamw #define SV_TYPE_DOMAIN_CTRL 0x00000008 237*da6c28aaSamw #define SV_TYPE_DOMAIN_BAKCTRL 0x00000010 238*da6c28aaSamw #define SV_TYPE_TIME_SOURCE 0x00000020 239*da6c28aaSamw #define SV_TYPE_AFP 0x00000040 240*da6c28aaSamw /* Also set by Win95 NWSERVER */ 241*da6c28aaSamw #define SV_TYPE_NOVELL 0x00000080 242*da6c28aaSamw #define SV_TYPE_DOMAIN_MEMBER 0x00000100 243*da6c28aaSamw #define SV_TYPE_PRINTQ_SERVER 0x00000200 244*da6c28aaSamw #define SV_TYPE_DIALIN_SERVER 0x00000400 245*da6c28aaSamw #define SV_TYPE_XENIX_SERVER 0x00000800 246*da6c28aaSamw #define SV_TYPE_NT 0x00001000 247*da6c28aaSamw #define SV_TYPE_WFW 0x00002000 248*da6c28aaSamw #define SV_TYPE_SERVER_NT 0x00008000 249*da6c28aaSamw #define SV_TYPE_POTENTIAL_BROWSER 0x00010000 250*da6c28aaSamw #define SV_TYPE_BACKUP_BROWSER 0x00020000 251*da6c28aaSamw #define SV_TYPE_MASTER_BROWSER 0x00040000 252*da6c28aaSamw #define SV_TYPE_DOMAIN_MASTER 0x00080000 253*da6c28aaSamw #define SV_TYPE_LOCAL_LIST_ONLY 0x40000000 254*da6c28aaSamw #define SV_TYPE_DOMAIN_ENUM 0x80000000 255*da6c28aaSamw /* Handy for NetServerEnum2 */ 256*da6c28aaSamw #define SV_TYPE_ALL 0xFFFFFFFF 257*da6c28aaSamw 258*da6c28aaSamw 259*da6c28aaSamw #ifdef __cplusplus 260*da6c28aaSamw } 261*da6c28aaSamw #endif 262*da6c28aaSamw 263*da6c28aaSamw #endif /* _SMBSRV_SVRAPI_H */ 264