da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER START
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
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 *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * or http://www.opensolaris.org/os/licensing.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * See the License for the specific language governing permissions
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * and limitations under the License.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
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 *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * CDDL HEADER END
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Use is subject to license terms.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross *
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * This module defines generic functions to map Native OS and Native
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LanMan names to values.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#if defined(_KERNEL) || defined(_FAKE_KERNEL)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <sys/types.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <sys/sunddi.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#else
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <string.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#endif
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <smbsrv/string.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw#include <smbsrv/smbinfo.h>
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wrighttypedef struct smb_native {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright int sn_value;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright const char *sn_name;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright} smb_native_t;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * smbnative_os_value
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Return the appropriate native OS value for the specified native OS name.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Example OS values used by Windows:
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 4.0, Windows NT, Windows NT 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 5.0, Windows 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2000, Windows 2000 5.0, Windows 2000 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2002
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows .NET
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows Server 2003
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows XP
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows 2000 server: "Windows 2000 2195"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows XP Professional client: "Windows 2002 2543"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows XP PDC server: "Windows 5.1"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows .Net: "Windows .NET 3621"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Windows .Net: "Windows .NET 3718"
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * DAVE (Thursby Software: CIFS for MacOS) uses "MacOS", sometimes with a
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * version number appended, i.e. "MacOS 8.5.1". We treat DAVE like NT 4.0
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * except for the cases that DAVE clients set 'watch tree' flag in notify
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * change requests.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Samba reports UNIX as its Native OS, which we can map to NT 4.0.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwint
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wrightsmbnative_os_value(const char *native_os)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw{
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright static smb_native_t os_table[] = {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WINNT, "Windows NT 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WINNT, "Windows NT" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN95, "Windows 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows 5.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows 5.1" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows 2000" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows 2002" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows .NET" },
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright { NATIVE_OS_WIN2000, "Windows Server" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WIN2000, "Windows XP" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_WINNT, "UNIX" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_OS_MACOS, "MacOS" }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw };
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int i;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int len;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright const char *name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright if (native_os == NULL)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw return (NATIVE_OS_UNKNOWN);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright /*
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows Vista sends an empty native OS string.
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright */
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright if (*native_os == '\0')
55bf511df53aad0fdb7eb3fa349f0308cc05234cas return (NATIVE_OS_WIN2000);
55bf511df53aad0fdb7eb3fa349f0308cc05234cas
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw for (i = 0; i < sizeof (os_table)/sizeof (os_table[0]); ++i) {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright name = os_table[i].sn_name;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright len = strlen(name);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
bbf6f00c25b6a2bed23c35eac6d62998ecdb338cJordan Brown if (smb_strcasecmp(name, native_os, len) == 0)
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (os_table[i].sn_value);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw return (NATIVE_OS_UNKNOWN);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw}
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * smbnative_lm_value
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * Return the appropriate native LanMan value for the specified native
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * LanMan name. There's an alignment problem in some packets from some
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * clients that means we can miss the first character, so we do an
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * additional check starting from the second character.
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Example LanMan values:
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * NT LAN Manager 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows NT, Windows NT 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2000 LAN Manager
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2000, Windows 2000 5.0, Windows 2000 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2002, Windows 2002 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows .NET, Windows .NET 5.2
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows Server 2003
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows XP
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * NETSMB (Solaris CIFS client)
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * DAVE (Thursby Software: CIFS for MacOS)
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Samba
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwint
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wrightsmbnative_lm_value(const char *native_lm)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw{
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright static smb_native_t lm_table[] = {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_LM_NT, "NT LAN Manager 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_LM_NT, "Windows NT" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_LM_NT, "Windows 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { NATIVE_LM_NT, "DAVE" }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw };
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int i;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int len;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright const char *name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright /*
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows Vista sends an empty native LM string.
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright */
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright if (native_lm == NULL || *native_lm == '\0')
55bf511df53aad0fdb7eb3fa349f0308cc05234cas return (NATIVE_LM_WIN2000);
55bf511df53aad0fdb7eb3fa349f0308cc05234cas
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw for (i = 0; i < sizeof (lm_table)/sizeof (lm_table[0]); ++i) {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright name = lm_table[i].sn_name;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright len = strlen(name);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
bbf6f00c25b6a2bed23c35eac6d62998ecdb338cJordan Brown if ((smb_strcasecmp(name, native_lm, len) == 0) ||
bbf6f00c25b6a2bed23c35eac6d62998ecdb338cJordan Brown (smb_strcasecmp(&name[1], native_lm, len - 1) == 0)) {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (lm_table[i].sn_value);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (NATIVE_LM_WIN2000);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw}
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw/*
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw * smbnative_pdc_value
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * This function is called when libsmbrdr connects to a PDC.
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * The PDC type is derived from the Native LanMan string.
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * The PDC value will default to PDC_WIN2000.
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Example strings:
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright *
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * NT LAN Manager 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 4.0, Windows NT, Windows NT 4.0
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2000 LAN Manager
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2000, Windows 2000 5.0, Windows 2000 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows 2002, Windows 2002 5.1
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Windows .NET, Windows .NET 5.2
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * Samba
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright * DAVE
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw */
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwint
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wrightsmbnative_pdc_value(const char *native_lm)
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw{
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright static smb_native_t pdc_table[] = {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { PDC_WINNT, "NT LAN Manager 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { PDC_WINNT, "Windows NT 4.0" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { PDC_WINNT, "Windows NT" },
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw { PDC_WINNT, "Windows 4.0" },
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright { PDC_WINNT, "DAVE" },
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright { PDC_SAMBA, "Samba" }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw };
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int i;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw int len;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright const char *name;
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright if (native_lm == NULL || *native_lm == '\0')
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (PDC_WIN2000);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw for (i = 0; i < sizeof (pdc_table)/sizeof (pdc_table[0]); ++i) {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright name = pdc_table[i].sn_name;
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright len = strlen(name);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
bbf6f00c25b6a2bed23c35eac6d62998ecdb338cJordan Brown if ((smb_strcasecmp(name, native_lm, len) == 0) ||
bbf6f00c25b6a2bed23c35eac6d62998ecdb338cJordan Brown (smb_strcasecmp(&name[1], native_lm, len - 1) == 0)) {
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (pdc_table[i].sn_value);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw }
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw
fc724630b14603e4c1147df68b7bf45f7de7431fAlan Wright return (PDC_WIN2000);
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amw}
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States/*
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States * Returns the native OS string for the given OS version.
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States * If no match is found the string for Windows 2000 is returned.
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States */
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United Statesconst char *
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United Statessmbnative_os_str(smb_version_t *version)
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States{
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States int i;
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States static smb_native_t osstr_table[] = {
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_NT, "Windows NT" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2000, "Windows 2000" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_XP, "Windows XP" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2003, "Windows Server 2003" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_VISTA, "" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2008, "" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2008R2, "" }
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States };
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States for (i = 0; i < sizeof (osstr_table)/sizeof (osstr_table[0]); ++i) {
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States if (version->sv_major == osstr_table[i].sn_value)
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States return (osstr_table[i].sn_name);
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States }
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States return (osstr_table[1].sn_name);
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States}
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States/*
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States * Returns the native Lanman string for the given OS version.
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States * If no match is found the string for Windows 2000 is returned.
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States */
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United Statesconst char *
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United Statessmbnative_lm_str(smb_version_t *version)
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States{
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States int i;
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States static smb_native_t lmstr_table[] = {
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_NT, "NT LAN Manager 4.0" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2000, "Windows 2000 LAN Manager" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_XP, "Windows 2002 5.1" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2003, "Windows Server 2003 5.2" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_VISTA, "" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2008, "" },
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States { SMB_MAJOR_2008R2, "" }
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States };
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States for (i = 0; i < sizeof (lmstr_table)/sizeof (lmstr_table[0]); ++i) {
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States if (version->sv_major == lmstr_table[i].sn_value)
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States return (lmstr_table[i].sn_name);
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States }
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States return (lmstr_table[1].sn_name);
9fb67ea305c66b6a297583b9b0db6796b0dfe497afshin salek ardakani - Sun Microsystems - Irvine United States}