mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
samba3: add mising files
This commit is contained in:
parent
085d43c3a4
commit
fc74862f11
18 changed files with 2602 additions and 0 deletions
23
samba3/Config.in
Normal file
23
samba3/Config.in
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
config SAMBA3_CONFIG_DEBUG
|
||||
bool "Enable Logging for samba3"
|
||||
depends on PACKAGE_samba3
|
||||
default n
|
||||
help
|
||||
Enables debugging support (will make binaries *much* bigger)
|
||||
Also increases MAX_DEBUG_LEVEL to get more messages (also increases binary sizes!)
|
||||
|
||||
config SAMBA3_CONFIG_SMALLER
|
||||
bool "Make samba3 even smaller"
|
||||
depends on PACKAGE_samba3
|
||||
default y
|
||||
help
|
||||
Removes support for ???
|
||||
Saves about 18kB for smbd, about 16kB for nmbd and about 17kB for smbpasswd
|
||||
|
||||
config SAMBA3_CONFIG_NO_PRINTING
|
||||
bool "Remove shared printing support"
|
||||
depends on PACKAGE_samba3
|
||||
default y
|
||||
help
|
||||
Removes shared printing support.
|
||||
Saves about 18kB for smbd, about 15kB for nmbd and about 18kB for smbpasswd
|
||||
56
samba3/files/config-lfs.h
Normal file
56
samba3/files/config-lfs.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#undef HAVE_CREAT64
|
||||
#define HAVE_CREAT64 1
|
||||
|
||||
#undef HAVE_FSEEKO64
|
||||
#define HAVE_FSEEKO64 1
|
||||
|
||||
#undef HAVE_FSTAT64
|
||||
#define HAVE_FSTAT64 1
|
||||
|
||||
#undef HAVE_FTELLO64
|
||||
#define HAVE_FTELLO64 1
|
||||
|
||||
#undef HAVE_FTRUNCATE64
|
||||
#define HAVE_FTRUNCATE64 1
|
||||
|
||||
#undef HAVE_LSEEK64
|
||||
#define HAVE_LSEEK64 1
|
||||
|
||||
#undef HAVE_LSTAT64
|
||||
#define HAVE_LSTAT64 1
|
||||
|
||||
#undef HAVE_OPEN64
|
||||
#define HAVE_OPEN64 1
|
||||
|
||||
#undef HAVE_PREAD64
|
||||
#define HAVE_PREAD64 1
|
||||
|
||||
#undef HAVE_PWRITE64
|
||||
#define HAVE_PWRITE64 1
|
||||
|
||||
#undef HAVE_READDIR64
|
||||
#define HAVE_READDIR64 1
|
||||
|
||||
#undef HAVE_STAT64
|
||||
#define HAVE_STAT64 1
|
||||
|
||||
#undef HAVE_STRUCT_FLOCK64
|
||||
#define HAVE_STRUCT_FLOCK64 1
|
||||
|
||||
#undef SIZEOF_LONG_LONG
|
||||
#define SIZEOF_LONG_LONG 8
|
||||
|
||||
#undef SIZEOF_OFF_T
|
||||
#define SIZEOF_OFF_T 8
|
||||
|
||||
#undef _FILE_OFFSET_BITS
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
|
||||
#undef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
|
||||
#undef _LARGEFILE_SOURCE
|
||||
#define _LARGEFILE_SOURCE 1
|
||||
|
||||
#undef _LARGEFILE64_SOURCE
|
||||
#define _LARGEFILE64_SOURCE 1
|
||||
12
samba3/files/samba-nmbd.init
Normal file
12
samba3/files/samba-nmbd.init
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2011 OpenWrt.org
|
||||
|
||||
START=61
|
||||
|
||||
start() {
|
||||
service_start /bin/nmbd -D
|
||||
}
|
||||
|
||||
stop() {
|
||||
service_stop /bin/nmbd
|
||||
}
|
||||
81
samba3/files/samba-smbd.init
Normal file
81
samba3/files/samba-smbd.init
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2008-2011 OpenWrt.org
|
||||
|
||||
START=60
|
||||
|
||||
smb_header() {
|
||||
local name
|
||||
local workgroup
|
||||
local description
|
||||
local homes
|
||||
local interface
|
||||
|
||||
config_get name $1 name
|
||||
config_get workgroup $1 workgroup
|
||||
config_get description $1 description
|
||||
config_get homes $1 homes
|
||||
config_get interface $1 interface "lan"
|
||||
|
||||
# resolve interfaces
|
||||
local interfaces=$(
|
||||
include /lib/network
|
||||
scan_interfaces
|
||||
local net ifname; for net in $interface; do
|
||||
config_get ifname "$net" ifname "$net"
|
||||
echo -n "$ifname "
|
||||
done
|
||||
)
|
||||
|
||||
[ -z "$name" ] && name=openwrt
|
||||
[ -z "$workgroup" ] && workgroup=openwrt
|
||||
[ -z "$description" ] && description=openwrt
|
||||
|
||||
mkdir -p /var/etc
|
||||
cp /etc/samba/smb.conf.template /var/etc/smb.conf
|
||||
[ -L /etc/samba/smb.conf ] || ln -nsf /var/etc/smb.conf /etc/samba/smb.conf
|
||||
sed -i "s/|NAME|/$name/g" /var/etc/smb.conf
|
||||
sed -i "s/|WORKGROUP|/$workgroup/g" /var/etc/smb.conf
|
||||
sed -i "s/|DESCRIPTION|/$description/g" /var/etc/smb.conf
|
||||
sed -i "s/|INTERFACES|/$interfaces/g" /var/etc/smb.conf
|
||||
[ "$homes" == "1" ] && {
|
||||
echo -e "\n[homes]\n\tcomment = Home Directories\n\tbrowseable = no\n\tread only = no\n\tcreate mode = 0750" >> /var/etc/smb.conf
|
||||
}
|
||||
}
|
||||
|
||||
smb_add_share() {
|
||||
local name
|
||||
local path
|
||||
local users
|
||||
local read_only
|
||||
local guest_ok
|
||||
local create_mask
|
||||
local dir_mask
|
||||
|
||||
config_get name $1 name
|
||||
config_get path $1 path
|
||||
config_get users $1 users
|
||||
config_get read_only $1 read_only
|
||||
config_get guest_ok $1 guest_ok
|
||||
config_get create_mask $1 create_mask
|
||||
config_get dir_mask $1 dir_mask
|
||||
|
||||
[ -z "$name" -o -z "$path" ] && return
|
||||
|
||||
echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf
|
||||
[ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf
|
||||
[ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf
|
||||
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf
|
||||
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf
|
||||
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf
|
||||
}
|
||||
|
||||
start() {
|
||||
config_load samba
|
||||
config_foreach smb_header samba
|
||||
config_foreach smb_add_share sambashare
|
||||
service_start /bin/smbd -D
|
||||
}
|
||||
|
||||
stop() {
|
||||
service_stop /bin/smbd
|
||||
}
|
||||
7
samba3/files/samba.config
Normal file
7
samba3/files/samba.config
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
config samba
|
||||
option 'name' 'IntenoSMB'
|
||||
option 'workgroup' 'IntenoSMB'
|
||||
option 'description' 'IntenoSMB'
|
||||
option 'homes' '0'
|
||||
option 'interface' 'lan'
|
||||
|
||||
168
samba3/files/samba.init
Executable file
168
samba3/files/samba.init
Executable file
|
|
@ -0,0 +1,168 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2008-2012 OpenWrt.org
|
||||
|
||||
START=60
|
||||
STOP=40
|
||||
USE_PROCD=1
|
||||
|
||||
useradd()
|
||||
{
|
||||
local user
|
||||
local password
|
||||
config_get user $1 user
|
||||
config_get password $1 password
|
||||
if ! $(grep -rq "^$user:" /etc/passwd) ; then
|
||||
echo "adding user $user"
|
||||
adduser $user -s /bin/false -D -H -h /mnt/$user -g "samba,pass=$password" && smbpasswd $user $password
|
||||
else
|
||||
tmp=$(grep -r "^$user:" /etc/passwd | cut -d":" -f5)
|
||||
if $(echo $tmp | grep -rq "^samba") ; then
|
||||
if [ "$tmp" != "samba,pass=$password" ] ; then
|
||||
echo "change user $user"
|
||||
deluser $user
|
||||
adduser $user -s /bin/false -D -H -h /mnt/$user -g "samba,pass=$password" && smbpasswd $user $password
|
||||
fi
|
||||
else
|
||||
echo "activating samba for system user $user"
|
||||
smbpasswd $user $password
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
samba_user_exists()
|
||||
{
|
||||
local user
|
||||
config_get user $1 user
|
||||
[ "$user" == "$2" ] && echo "1" && break
|
||||
}
|
||||
|
||||
purgepasswd()
|
||||
{
|
||||
for us in `grep -r "^.*:" /etc/samba/smbpasswd | cut -d":" -f1`; do
|
||||
if [ -z "$(config_foreach samba_user_exists sambausers $us)" ] ; then
|
||||
smbpasswd -del $us
|
||||
grep -r "^$us:" /etc/passwd | cut -d":" -f5 | grep -rq "^samba" && deluser $us
|
||||
fi
|
||||
done
|
||||
|
||||
# delete left over samba users in case they were not in /etc/samba/smbpasswd
|
||||
for us in `grep ":/mnt/" /etc/passwd | cut -d":" -f1`; do
|
||||
deluser $us
|
||||
done
|
||||
}
|
||||
|
||||
smb_header() {
|
||||
local interface
|
||||
config_get interface $1 interface
|
||||
|
||||
# resolve interfaces
|
||||
local interfaces=$(
|
||||
. /lib/functions/network.sh
|
||||
|
||||
local net
|
||||
for net in $interface; do
|
||||
local device
|
||||
network_get_device device "$net" && {
|
||||
local subnet
|
||||
network_get_subnet subnet "$net" && echo -n "$subnet "
|
||||
network_get_subnet6 subnet "$net" && echo -n "$subnet "
|
||||
}
|
||||
|
||||
echo -n "${device:-$net} "
|
||||
done
|
||||
)
|
||||
|
||||
local name workgroup description charset
|
||||
local hostname="$(uci_get system.@system[0].hostname)"
|
||||
|
||||
config_get name $1 name "${hostname:-OpenWrt}"
|
||||
config_get workgroup $1 workgroup "${hostname:-OpenWrt}"
|
||||
config_get description $1 description "Samba on ${hostname:-OpenWrt}"
|
||||
config_get charset $1 charset "UTF-8"
|
||||
|
||||
mkdir -p /var/etc
|
||||
sed -e "s#|NAME|#$name#g" \
|
||||
-e "s#|WORKGROUP|#$workgroup#g" \
|
||||
-e "s#|DESCRIPTION|#$description#g" \
|
||||
-e "s#|INTERFACES|#$interfaces#g" \
|
||||
-e "s#|CHARSET|#$charset#g" \
|
||||
/etc/samba/smb.conf.template > /var/etc/smb.conf
|
||||
|
||||
local homes
|
||||
config_get_bool homes $1 homes 0
|
||||
[ $homes -gt 0 ] && {
|
||||
cat <<EOT >> /var/etc/smb.conf
|
||||
|
||||
[homes]
|
||||
comment = Home Directories
|
||||
browsable = no
|
||||
read only = no
|
||||
create mode = 0750
|
||||
EOT
|
||||
}
|
||||
|
||||
[ -L /etc/samba/smb.conf ] || $(rm -f /etc/samba/smb.conf; ln -nsf /var/etc/smb.conf /etc/samba/smb.conf)
|
||||
}
|
||||
|
||||
smb_add_share() {
|
||||
local name
|
||||
local path
|
||||
local users
|
||||
local read_only
|
||||
local guest_ok
|
||||
local create_mask
|
||||
local dir_mask
|
||||
local browseable
|
||||
local dirpath
|
||||
|
||||
config_get name $1 name
|
||||
config_get path $1 path
|
||||
config_get users $1 users
|
||||
config_get read_only $1 read_only
|
||||
config_get guest_ok $1 guest_ok
|
||||
config_get create_mask $1 create_mask
|
||||
config_get dir_mask $1 dir_mask
|
||||
config_get browseable $1 browseable
|
||||
config_get dirpath $1 dirpath
|
||||
path="$path/$dirpath"
|
||||
|
||||
[ -z "$name" -o -z "$path" ] && return
|
||||
|
||||
echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf
|
||||
[ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf
|
||||
[ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf
|
||||
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf
|
||||
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf
|
||||
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf
|
||||
[ -n "$browseable" ] && echo -e "\tbrowseable = $browseable" >> /var/etc/smb.conf
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load samba
|
||||
purgepasswd
|
||||
config_foreach useradd sambausers
|
||||
config_foreach smb_header samba
|
||||
config_foreach smb_add_share sambashare
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command "/bin/smbd" -F
|
||||
procd_close_instance
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command "/bin/nmbd" -F
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
service_stop /bin/smbd
|
||||
service_stop /bin/nmbd
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger samba network
|
||||
}
|
||||
19
samba3/files/smb.conf.template
Normal file
19
samba3/files/smb.conf.template
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
[global]
|
||||
netbios name = |NAME|
|
||||
workgroup = |WORKGROUP|
|
||||
server string = |DESCRIPTION|
|
||||
syslog = 10
|
||||
encrypt passwords = true
|
||||
passdb backend = smbpasswd
|
||||
obey pam restrictions = yes
|
||||
socket options = TCP_NODELAY
|
||||
unix charset = UTF-8
|
||||
preferred master = yes
|
||||
os level = 20
|
||||
security = user
|
||||
guest account = nobody
|
||||
invalid users = root
|
||||
smb passwd file = /etc/samba/smbpasswd
|
||||
interfaces = |INTERFACES|
|
||||
bind interfaces only = yes
|
||||
|
||||
1719
samba3/patches/100-avm.patch
Normal file
1719
samba3/patches/100-avm.patch
Normal file
File diff suppressed because it is too large
Load diff
48
samba3/patches/110-compile_fixes.patch
Normal file
48
samba3/patches/110-compile_fixes.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
Index: samba-3.0.37/source/popt/popt.c
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/popt/popt.c 2011-04-11 23:35:04.000000000 +0200
|
||||
+++ samba-3.0.37/source/popt/popt.c 2011-04-11 23:35:10.000000000 +0200
|
||||
@@ -10,13 +10,14 @@
|
||||
|
||||
#include "system.h"
|
||||
|
||||
-#if HAVE_FLOAT_H
|
||||
+//#if HAVE_FLOAT_H
|
||||
#include <float.h>
|
||||
-#endif
|
||||
+//#endif
|
||||
#include <math.h>
|
||||
|
||||
#include "findme.h"
|
||||
#include "poptint.h"
|
||||
+#include "../include/config.h"
|
||||
|
||||
#ifdef MYDEBUG
|
||||
/*@unchecked@*/
|
||||
@@ -388,7 +389,7 @@
|
||||
sprintf(s, "%s/%s", con->execPath, item->argv[0]);
|
||||
argv[argc] = s;
|
||||
} else {
|
||||
- argv[argc] = findProgramPath(item->argv[0]);
|
||||
+ argv[argc] = ""/*findProgramPath(item->argv[0])*/;
|
||||
}
|
||||
if (argv[argc++] == NULL) return POPT_ERROR_NOARG;
|
||||
|
||||
@@ -1246,4 +1247,3 @@
|
||||
|
||||
return numargs;
|
||||
}
|
||||
-/*@=boundswrite@*/
|
||||
Index: samba-3.0.37/source/modules/vfs_default.c
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/modules/vfs_default.c 2011-04-11 23:35:08.000000000 +0200
|
||||
+++ samba-3.0.37/source/modules/vfs_default.c 2011-04-11 23:35:10.000000000 +0200
|
||||
@@ -977,7 +977,7 @@
|
||||
|
||||
START_PROFILE(syscall_linux_setlease);
|
||||
|
||||
-#ifdef LINUX
|
||||
+#if defined(LINUX) && defined(HAVE_KERNEL_OPLOCKS_LINUX)
|
||||
/* first set the signal handler */
|
||||
if(linux_set_lease_sighandler(fd) == -1)
|
||||
return -1;
|
||||
39
samba3/patches/120-owrt_paths.patch
Normal file
39
samba3/patches/120-owrt_paths.patch
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
Index: samba-3.0.37/source/Makefile.in
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/Makefile.in 2009-09-30 14:21:56.000000000 +0200
|
||||
+++ samba-3.0.37/source/Makefile.in 2011-04-03 20:35:19.000000000 +0200
|
||||
@@ -92,7 +92,7 @@
|
||||
# or in smb.conf (see smb.conf(5))
|
||||
LOGFILEBASE = @logfilebase@
|
||||
CONFIGFILE = $(CONFIGDIR)/smb.conf
|
||||
-LMHOSTSFILE = $(CONFIGDIR)/lmhosts
|
||||
+LMHOSTSFILE = /etc/lmhosts
|
||||
|
||||
# This is where smbpasswd et al go
|
||||
PRIVATEDIR = @privatedir@
|
||||
Index: samba-3.0.37/source/configure
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/configure 2009-09-30 15:08:58.000000000 +0200
|
||||
+++ samba-3.0.37/source/configure 2011-04-03 20:35:20.000000000 +0200
|
||||
@@ -1536,8 +1536,8 @@
|
||||
--with-fhs Use FHS-compliant paths (default=no)
|
||||
--with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)
|
||||
--with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)
|
||||
- --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)
|
||||
- --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)
|
||||
+ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/lock)
|
||||
+ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/run)
|
||||
--with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)
|
||||
--with-configdir=DIR Where to put configuration files ($libdir)
|
||||
--with-logfilebase=DIR Where to put log files ($VARDIR)
|
||||
@@ -2295,8 +2295,8 @@
|
||||
|
||||
|
||||
rootsbindir="\${SBINDIR}"
|
||||
-lockdir="\${VARDIR}/locks"
|
||||
-piddir="\${VARDIR}/locks"
|
||||
+lockdir="\${VARDIR}/lock"
|
||||
+piddir="\${VARDIR}/run"
|
||||
test "${mandir}" || mandir="\${prefix}/man"
|
||||
logfilebase="\${VARDIR}"
|
||||
privatedir="\${prefix}/private"
|
||||
216
samba3/patches/130-owrt_smbpasswd.patch
Normal file
216
samba3/patches/130-owrt_smbpasswd.patch
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
Index: samba-3.0.37/source/Makefile.in
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/Makefile.in 2011-08-08 23:40:18.004444730 +0200
|
||||
+++ samba-3.0.37/source/Makefile.in 2011-08-08 23:40:19.054444730 +0200
|
||||
@@ -538,10 +538,7 @@
|
||||
|
||||
PASSWD_UTIL_OBJ = utils/passwd_util.o
|
||||
|
||||
-SMBPASSWD_OBJ = utils/smbpasswd.o $(PASSWD_UTIL_OBJ) $(PASSCHANGE_OBJ) \
|
||||
- $(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) $(PASSDB_OBJ) \
|
||||
- $(GROUPDB_OBJ) $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
|
||||
- $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_GEN_OBJ) $(LIBMSRPC_OBJ)
|
||||
+SMBPASSWD_OBJ = utils/owrt_smbpasswd.o lib/md4.o
|
||||
|
||||
PDBEDIT_OBJ = utils/pdbedit.o $(PASSWD_UTIL_OBJ) $(PARAM_OBJ) $(PASSDB_OBJ) \
|
||||
$(LIBSAMBA_OBJ) $(LIB_NONSMBD_OBJ) $(GROUPDB_OBJ) \
|
||||
Index: samba-3.0.37/source/utils/owrt_smbpasswd.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ samba-3.0.37/source/utils/owrt_smbpasswd.c 2011-08-08 23:40:19.064444730 +0200
|
||||
@@ -0,0 +1,195 @@
|
||||
+/*
|
||||
+ * Copyright (C) John Crispin <blogic@openwrt.org>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the
|
||||
+ * Free Software Foundation; either version 2 of the License, or (at your
|
||||
+ * option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
+ * more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along with
|
||||
+ * this program; if not, write to the Free Software Foundation, Inc., 675
|
||||
+ * Mass Ave, Cambridge, MA 02139, USA. */
|
||||
+
|
||||
+#include "includes.h"
|
||||
+#include <endian.h>
|
||||
+
|
||||
+void E_md4hash(const char *passwd, uchar p16[16])
|
||||
+{
|
||||
+ int len;
|
||||
+ smb_ucs2_t wpwd[129];
|
||||
+ int i;
|
||||
+
|
||||
+ len = strlen(passwd);
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
+ wpwd[i] = (unsigned char)passwd[i];
|
||||
+#else
|
||||
+ wpwd[i] = (unsigned char)passwd[i] << 8;
|
||||
+#endif
|
||||
+ }
|
||||
+ wpwd[i] = 0;
|
||||
+
|
||||
+ len = len * sizeof(int16);
|
||||
+ mdfour(p16, (unsigned char *)wpwd, len);
|
||||
+ ZERO_STRUCT(wpwd);
|
||||
+}
|
||||
+
|
||||
+/* returns -1 if user is not present in /etc/passwd*/
|
||||
+int find_uid_for_user(char *user)
|
||||
+{
|
||||
+ char t[256];
|
||||
+ FILE *fp = fopen("/etc/passwd", "r");
|
||||
+ int ret = -1;
|
||||
+
|
||||
+ if(!fp)
|
||||
+ {
|
||||
+ printf("failed to open /etc/passwd");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ while(!feof(fp))
|
||||
+ {
|
||||
+ if(fgets(t, 255, fp))
|
||||
+ {
|
||||
+ char *p1, *p2;
|
||||
+ p1 = strchr(t, ':');
|
||||
+ if(p1 && (p1 - t == strlen(user)) && (strncmp(t, user, strlen(user))) == 0)
|
||||
+ {
|
||||
+ p1 = strchr(t, ':');
|
||||
+ if(!p1)
|
||||
+ goto out;
|
||||
+ p2 = strchr(++p1, ':');
|
||||
+ if(!p2)
|
||||
+ goto out;
|
||||
+ p1 = strchr(++p2, ':');
|
||||
+ if(!p1)
|
||||
+ goto out;
|
||||
+ *p1 = '\0';
|
||||
+ ret = atoi(p2);
|
||||
+ goto out;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ printf("No valid user found in /etc/passwd\n");
|
||||
+
|
||||
+out:
|
||||
+ if(fp)
|
||||
+ fclose(fp);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+void insert_user_in_smbpasswd(char *user, char *line)
|
||||
+{
|
||||
+ char t[256];
|
||||
+ FILE *fp = fopen("/etc/samba/smbpasswd", "r+");
|
||||
+
|
||||
+ if(!fp)
|
||||
+ {
|
||||
+ printf("failed to open /etc/samba/smbpasswd");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ while(!feof(fp))
|
||||
+ {
|
||||
+ if(fgets(t, 255, fp))
|
||||
+ {
|
||||
+ char *p;
|
||||
+ p = strchr(t, ':');
|
||||
+ if(p && (p - t == strlen(user)) && (strncmp(t, user, strlen(user))) == 0)
|
||||
+ {
|
||||
+ fseek(fp, -strlen(line), SEEK_CUR);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ fprintf(fp, line);
|
||||
+
|
||||
+out:
|
||||
+ if(fp)
|
||||
+ fclose(fp);
|
||||
+}
|
||||
+
|
||||
+void delete_user_from_smbpasswd(char *user)
|
||||
+{
|
||||
+ char t[256];
|
||||
+ FILE *fp = fopen("/etc/samba/smbpasswd", "r+");
|
||||
+
|
||||
+ if(!fp)
|
||||
+ {
|
||||
+ printf("failed to open /etc/samba/smbpasswd");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ while(!feof(fp))
|
||||
+ {
|
||||
+ if(fgets(t, 255, fp))
|
||||
+ {
|
||||
+ char *p;
|
||||
+ p = strchr(t, ':');
|
||||
+ if(p && (p - t == strlen(user)) && (strncmp(t, user, strlen(user))) == 0)
|
||||
+ {
|
||||
+ fpos_t r_pos, w_pos;
|
||||
+ char t2[256];
|
||||
+ fgetpos(fp, &r_pos);
|
||||
+ w_pos = r_pos;
|
||||
+ w_pos.__pos -= strlen(t);
|
||||
+ while(fgets(t2, 256, fp))
|
||||
+ {
|
||||
+ fsetpos(fp, &w_pos);
|
||||
+ fputs(t2, fp);
|
||||
+ r_pos.__pos += strlen(t2);
|
||||
+ w_pos.__pos += strlen(t2);
|
||||
+ fsetpos(fp, &r_pos);
|
||||
+ }
|
||||
+ ftruncate(fileno(fp), w_pos.__pos);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+out:
|
||||
+ if(fp)
|
||||
+ fclose(fp);
|
||||
+}
|
||||
+
|
||||
+int main(int argc, char **argv)
|
||||
+{
|
||||
+ unsigned uid;
|
||||
+ uchar new_nt_p16[NT_HASH_LEN];
|
||||
+ int g;
|
||||
+ int smbpasswd_present;
|
||||
+ char smbpasswd_line[256];
|
||||
+ char *s;
|
||||
+
|
||||
+ if(argc != 3)
|
||||
+ {
|
||||
+ printf("usage for openwrt_smbpasswd - \n\t%s USERNAME PASSWD\n\t%s -del USERNAME\n", argv[0], argv[0]);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ if(strcmp(argv[1], "-del") == 0)
|
||||
+ {
|
||||
+ printf("deleting user %s\n", argv[2]);
|
||||
+ delete_user_from_smbpasswd(argv[2]);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ uid = find_uid_for_user(argv[1]);
|
||||
+ if(uid == -1)
|
||||
+ exit(2);
|
||||
+
|
||||
+ E_md4hash(argv[2], new_nt_p16);
|
||||
+ s = smbpasswd_line;
|
||||
+ s += snprintf(s, 256 - (s - smbpasswd_line), "%s:%u:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:", argv[1], uid);
|
||||
+ for(g = 0; g < 16; g++)
|
||||
+ s += snprintf(s, 256 - (s - smbpasswd_line), "%02X", new_nt_p16[g]);
|
||||
+ snprintf(s, 256 - (s - smbpasswd_line), ":[U ]:LCT-00000001:\n");
|
||||
+
|
||||
+ insert_user_in_smbpasswd(argv[1], smbpasswd_line);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
15
samba3/patches/150-fix_ls.patch
Normal file
15
samba3/patches/150-fix_ls.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Index: samba-3.0.24/source/lib/ms_fnmatch.c
|
||||
===================================================================
|
||||
--- samba-3.0.24.orig/source/lib/ms_fnmatch.c 2008-08-11 11:08:03.000000000 +0200
|
||||
+++ samba-3.0.24/source/lib/ms_fnmatch.c 2008-08-11 11:11:33.000000000 +0200
|
||||
@@ -153,6 +153,10 @@
|
||||
int ret, count, i;
|
||||
struct max_n *max_n = NULL;
|
||||
|
||||
+ if (strcmp(pattern, "*") == 0) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
if (strcmp(string, "..") == 0) {
|
||||
string = ".";
|
||||
}
|
||||
13
samba3/patches/160-fix_log.patch
Normal file
13
samba3/patches/160-fix_log.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Index: samba-3.0.24/source/lib/popt_common.c
|
||||
===================================================================
|
||||
--- samba-3.0.24.orig/source/lib/popt_common.c 2008-08-11 11:25:26.000000000 +0200
|
||||
+++ samba-3.0.24/source/lib/popt_common.c 2008-08-11 11:26:03.000000000 +0200
|
||||
@@ -54,7 +54,7 @@
|
||||
else
|
||||
pname++;
|
||||
|
||||
- pstr_sprintf(logfile, "%s/log.%s", arg, pname);
|
||||
+ pstr_sprintf(logfile, "%s/log/%s.log", arg, pname);
|
||||
lp_set_logfile(logfile);
|
||||
}
|
||||
|
||||
23
samba3/patches/170-no_rpc.patch
Normal file
23
samba3/patches/170-no_rpc.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
Index: samba-3.0.37/source/configure
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/configure 2011-04-03 20:35:20.000000000 +0200
|
||||
+++ samba-3.0.37/source/configure 2011-04-03 20:36:51.000000000 +0200
|
||||
@@ -22548,6 +22548,17 @@
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
$as_echo "$ac_header_preproc" >&6; }
|
||||
|
||||
+# Force disable RPC
|
||||
+$as_echo "test=$ac_header" >&6
|
||||
+if test "$ac_header" = "rpc/rpc.h"; then
|
||||
+ if test "$ac_header_compiler" = "yes" -o "$ac_header_preproc" = "yes"; then
|
||||
+ $as_echo "RPC support force disabled by OpenWRT patch" >&5
|
||||
+ $as_echo "RPC support force disabled by OpenWRT patch" >&6
|
||||
+ fi
|
||||
+fi
|
||||
+ac_header_compiler=no
|
||||
+ac_header_preproc=no
|
||||
+
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
28
samba3/patches/190-fix_configure_for_crosscompilation.patch
Normal file
28
samba3/patches/190-fix_configure_for_crosscompilation.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
Index: samba-3.0.37/source/configure.in
|
||||
===================================================================
|
||||
--- samba-3.0.37.orig/source/configure.in
|
||||
+++ samba-3.0.37/source/configure.in
|
||||
@@ -1389,23 +1389,6 @@ AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl
|
||||
case "$host_os" in
|
||||
*linux*)
|
||||
# glibc <= 2.3.2 has a broken getgrouplist
|
||||
- AC_TRY_RUN([
|
||||
-#include <unistd.h>
|
||||
-#include <sys/utsname.h>
|
||||
-main() {
|
||||
- /* glibc up to 2.3 has a broken getgrouplist */
|
||||
-#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
||||
- int libc_major = __GLIBC__;
|
||||
- int libc_minor = __GLIBC_MINOR__;
|
||||
-
|
||||
- if (libc_major < 2)
|
||||
- exit(1);
|
||||
- if ((libc_major == 2) && (libc_minor <= 3))
|
||||
- exit(1);
|
||||
-#endif
|
||||
- exit(0);
|
||||
-}
|
||||
-], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
|
||||
if test x"$linux_getgrouplist_ok" = x"yes"; then
|
||||
AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
|
||||
fi
|
||||
12
samba3/patches/200-fix-configure.patch
Normal file
12
samba3/patches/200-fix-configure.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
Get rid of error due to cross compilation, as glibc version in OpenWRT is high enough
|
||||
--- a/source/configure
|
||||
+++ b/source/configure
|
||||
@@ -37222,7 +37222,7 @@ rm -f core conftest.err conftest.$ac_obj
|
||||
case "$host_os" in
|
||||
*linux*)
|
||||
# glibc <= 2.3.2 has a broken getgrouplist
|
||||
- if test "$cross_compiling" = yes; then
|
||||
+ if test "false" = yes; then
|
||||
{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
|
||||
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
|
||||
{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
76
samba3/patches/500-remove_avm_smaller.patch
Normal file
76
samba3/patches/500-remove_avm_smaller.patch
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
--- a/source/Makefile.in
|
||||
+++ b/source/Makefile.in
|
||||
@@ -291,7 +291,7 @@ SECRETS_OBJ = passdb/secrets.o passdb/ma
|
||||
LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \
|
||||
libsmb/namequery.o libsmb/conncache.o libads/dns.o
|
||||
|
||||
-LIBSAMBA_OBJ = libsmb/nterr.o libsmb/dcerpc_err.o libsmb/smbdes.o \
|
||||
+LIBSAMBA_OBJ = libsmb/nterr.o $(if $(OWRT_SMALLER),,libsmb/dcerpc_err.o) libsmb/smbdes.o \
|
||||
libsmb/smbencrypt.o libsmb/ntlm_check.o \
|
||||
libsmb/ntlmssp.o libsmb/ntlmssp_parse.o libsmb/ntlmssp_sign.o
|
||||
|
||||
@@ -323,35 +323,35 @@ REGISTRY_OBJ = registry/reg_frontend.o r
|
||||
registry/reg_db.o registry/reg_eventlog.o registry/reg_shares.o \
|
||||
registry/reg_util.o registry/reg_dynamic.o registry/reg_perfcount.o
|
||||
|
||||
-RPC_LSA_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o
|
||||
+RPC_LSA_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o)
|
||||
|
||||
-RPC_NETLOG_OBJ = rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o
|
||||
+RPC_NETLOG_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o)
|
||||
|
||||
-RPC_SAMR_OBJ = rpc_server/srv_samr.o rpc_server/srv_samr_nt.o \
|
||||
- rpc_server/srv_samr_util.o
|
||||
+RPC_SAMR_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_samr.o rpc_server/srv_samr_nt.o \
|
||||
+ rpc_server/srv_samr_util.o)
|
||||
|
||||
REGFIO_OBJ = registry/regfio.o
|
||||
|
||||
-RPC_REG_OBJ = rpc_server/srv_reg.o rpc_server/srv_reg_nt.o $(REGFIO_OBJ)
|
||||
+RPC_REG_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_reg.o rpc_server/srv_reg_nt.o $(REGFIO_OBJ))
|
||||
|
||||
-RPC_LSA_DS_OBJ = rpc_server/srv_lsa_ds.o rpc_server/srv_lsa_ds_nt.o
|
||||
+RPC_LSA_DS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_lsa_ds.o rpc_server/srv_lsa_ds_nt.o)
|
||||
|
||||
RPC_SVC_OBJ = rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o
|
||||
|
||||
RPC_WKS_OBJ = librpc/gen_ndr/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o
|
||||
|
||||
-RPC_SVCCTL_OBJ = rpc_server/srv_svcctl.o rpc_server/srv_svcctl_nt.o \
|
||||
+RPC_SVCCTL_OBJ = $(if $(OWRT_SMALLER),, rpc_server/srv_svcctl.o) rpc_server/srv_svcctl_nt.o \
|
||||
services/svc_spoolss.o services/svc_rcinit.o services/services_db.o \
|
||||
services/svc_netlogon.o services/svc_winreg.o \
|
||||
services/svc_wins.o
|
||||
|
||||
-RPC_NTSVCS_OBJ = rpc_server/srv_ntsvcs.o rpc_server/srv_ntsvcs_nt.o
|
||||
+RPC_NTSVCS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_ntsvcs.o rpc_server/srv_ntsvcs_nt.o)
|
||||
|
||||
-RPC_DFS_OBJ = rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o
|
||||
+RPC_DFS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o)
|
||||
|
||||
-RPC_SPOOLSS_OBJ = rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o
|
||||
+RPC_SPOOLSS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o)
|
||||
|
||||
-RPC_EVENTLOG_OBJ = rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o rpc_server/srv_eventlog_lib.o
|
||||
+RPC_EVENTLOG_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o rpc_server/srv_eventlog_lib.o)
|
||||
|
||||
RPC_PIPE_OBJ = rpc_server/srv_pipe_hnd.o \
|
||||
rpc_server/srv_pipe.o rpc_server/srv_lsa_hnd.o
|
||||
@@ -431,7 +431,7 @@ PLAINTEXT_AUTH_OBJ = auth/pampass.o auth
|
||||
|
||||
SLCACHE_OBJ = libsmb/samlogon_cache.o
|
||||
|
||||
-DCUTIL_OBJ = libsmb/namequery_dc.o libsmb/trustdom_cache.o libsmb/trusts_util.o
|
||||
+DCUTIL_OBJ = libsmb/namequery_dc.o $(if $(OWRT_SMALLER),,libsmb/trustdom_cache.o libsmb/trusts_util.o)
|
||||
|
||||
AUTH_BUILTIN_OBJ = auth/auth_builtin.o
|
||||
AUTH_DOMAIN_OBJ = auth/auth_domain.o
|
||||
@@ -468,7 +468,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpass
|
||||
smbd/change_trust_pw.o smbd/fake_file.o \
|
||||
smbd/ntquotas.o $(AFS_OBJ) smbd/msdfs.o \
|
||||
$(AFS_SETTOKEN_OBJ) smbd/aio.o smbd/statvfs.o \
|
||||
- smbd/dmapi.o $(MANGLE_OBJ) @VFS_STATIC@
|
||||
+ $(if $(OWRT_SMALLER),,smbd/dmapi.o) $(MANGLE_OBJ) @VFS_STATIC@
|
||||
|
||||
SMBD_OBJ_BASE = $(PARAM_OBJ) $(SMBD_OBJ_SRV) $(LIBSMB_OBJ) \
|
||||
$(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) $(SECRETS_OBJ) \
|
||||
47
samba3/patches/510-remove-printing.patch
Normal file
47
samba3/patches/510-remove-printing.patch
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
--- a/source/Makefile.in
|
||||
+++ b/source/Makefile.in
|
||||
@@ -319,7 +319,7 @@ LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_wk
|
||||
|
||||
REGOBJS_OBJ = registry/reg_objects.o
|
||||
|
||||
-REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
|
||||
+REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o $(if $(OWRT_NO_PRINTING),,registry/reg_printing.o) \
|
||||
registry/reg_db.o registry/reg_eventlog.o registry/reg_shares.o \
|
||||
registry/reg_util.o registry/reg_dynamic.o registry/reg_perfcount.o
|
||||
|
||||
@@ -349,7 +349,7 @@ RPC_NTSVCS_OBJ = $(if $(OWRT_SMALLER),,r
|
||||
|
||||
RPC_DFS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o)
|
||||
|
||||
-RPC_SPOOLSS_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o)
|
||||
+RPC_SPOOLSS_OBJ = $(if $(OWRT_NO_PRINTING),,rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o)
|
||||
|
||||
RPC_EVENTLOG_OBJ = $(if $(OWRT_SMALLER),,rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o rpc_server/srv_eventlog_lib.o)
|
||||
|
||||
@@ -463,7 +463,7 @@ SMBD_OBJ_SRV = smbd/files.o smbd/chgpass
|
||||
smbd/vfs.o smbd/statcache.o \
|
||||
smbd/posix_acls.o lib/sysacls.o $(SERVER_MUTEX_OBJ) \
|
||||
smbd/process.o smbd/service.o smbd/error.o \
|
||||
- printing/printfsp.o lib/sysquotas.o lib/sysquotas_linux.o \
|
||||
+ $(if $(OWRT_NO_PRINTING),,printing/printfsp.o) lib/sysquotas.o lib/sysquotas_linux.o \
|
||||
lib/sysquotas_xfs.o lib/sysquotas_4A.o \
|
||||
smbd/change_trust_pw.o smbd/fake_file.o \
|
||||
smbd/ntquotas.o $(AFS_OBJ) smbd/msdfs.o \
|
||||
@@ -480,13 +480,13 @@ SMBD_OBJ_BASE = $(PARAM_OBJ) $(SMBD_OBJ_
|
||||
$(REGISTRY_OBJ) $(POPT_LIB_OBJ) \
|
||||
$(BUILDOPT_OBJ) $(SMBLDAP_OBJ)
|
||||
|
||||
-PRINTING_OBJ = printing/pcap.o printing/print_svid.o printing/print_aix.o \
|
||||
+PRINTING_OBJ = $(if $(OWRT_NO_PRINTING),,printing/pcap.o printing/print_svid.o printing/print_aix.o \
|
||||
printing/print_cups.o printing/print_generic.o \
|
||||
printing/lpq_parse.o printing/load.o \
|
||||
- printing/print_iprint.o printing/print_test.o
|
||||
+ printing/print_iprint.o printing/print_test.o)
|
||||
|
||||
-PRINTBASE_OBJ = printing/notify.o printing/printing_db.o
|
||||
-PRINTBACKEND_OBJ = printing/printing.o printing/nt_printing.o $(PRINTBASE_OBJ)
|
||||
+PRINTBASE_OBJ = $(if $(OWRT_NO_PRINTING),,printing/notify.o printing/printing_db.o)
|
||||
+PRINTBACKEND_OBJ = $(if $(OWRT_NO_PRINTING),,printing/printing.o printing/nt_printing.o $(PRINTBASE_OBJ))
|
||||
|
||||
SMBD_OBJ = $(SMBD_OBJ_BASE) $(SMBD_OBJ_MAIN)
|
||||
NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
|
||||
Loading…
Add table
Reference in a new issue