From 17c2361a900bc1d1201f0a633838fa2ea5f6e96b Mon Sep 17 00:00:00 2001 From: Erik Horemans Date: Thu, 3 Dec 2015 10:33:45 +0100 Subject: [PATCH 01/46] ice-client version 3.4.0-RC6 --- ice-client/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ice-client/Makefile b/ice-client/Makefile index 1a917b7ea..4d2d3f96b 100644 --- a/ice-client/Makefile +++ b/ice-client/Makefile @@ -16,14 +16,14 @@ export PLATFORM_INCLUDE:=platforms/iopsys/build.mk export DATE:=$(shell date +%Y-%m-%d-%H-%M-%S) export LOGIN:=$(shell whoami) BASE_PKG_VERSION:=3.4.0 -PKG_RELEASE:=RC5 +PKG_RELEASE:=RC6 PKG_VERSION:=$(BASE_PKG_VERSION)-$(PKG_RELEASE)_$(DATE)_$(LOGIN) export PKG_VERSION ###########################--RELEASE--################################ PKG_SOURCE_URL:=ssh://git@iopsys.inteno.se/ice-client.git -PKG_SOURCE_VERSION:=3bdc4863e9b6343b92909b4cf9acb938c87efa21 +PKG_SOURCE_VERSION:=e860a7697ac8d6029cd1f75e1df9885e1d4131f5 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(BASE_PKG_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(BASE_PKG_VERSION)-$(PKG_RELEASE).tar.gz From cb0d37c6984e57c0747972c9b78c5212e0d48a92 Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Thu, 3 Dec 2015 02:59:30 +0100 Subject: [PATCH 02/46] bcmkernel-4.16L.04: resurrected Bluetooth. From the long forgotten realm of 4.16L.03 the rotten corps of a hacky backport was dragged out in the open with powerful magical spells constructed by the church of gitology. The reanimation took place during many hours of hard manual labor where whole body parts was replaced and rearranged according to ancient manuscripts written in a long forgotten language. While this has not been blessed with holy penguin pee by our Lord the mighty Torvalds the complicator of gnu has compiled it to ELF ingots that has been forged to a coherent whole by the blacksmith of ld. what could possible go wrong? --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index 266bf1443..62d1497c9 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=35a8fed1103e8afe104cfe35e4461b010575521e +PKG_SOURCE_VERSION:=6aedb240794de2bb0b0206990a31dab8a8e7c872 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 7f34e8b80780182a5dda061c72441bc1d3c555de Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 3 Dec 2015 17:58:06 +0100 Subject: [PATCH 03/46] updated bcmkernel --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index 62d1497c9..ebfd56131 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=6aedb240794de2bb0b0206990a31dab8a8e7c872 +PKG_SOURCE_VERSION:=288b8b0d8716202dc29a7c52dfcc1f497cfe14e4 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 8f4fdc0f7d12f918658d6109a491a112cceaa02c Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 3 Dec 2015 18:03:52 +0100 Subject: [PATCH 04/46] luci-inteno-1.1.24 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index b4486fabd..44f562428 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.23 -PKG_SOURCE_VERSION:=b6a3e17fdc46efaa8f769ce70e9d529be6f38da4 +PKG_VERSION:=inteno-1.1.24 +PKG_SOURCE_VERSION:=31f7532bffdeb4494609b79ef0d5a214c7b019ea PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From 1576532e0e31ec87225f5dac36959af84497120e Mon Sep 17 00:00:00 2001 From: Mats Karrman Date: Mon, 7 Dec 2015 18:07:24 +0100 Subject: [PATCH 05/46] bcmkernel-4.16L.04: Update source version to tip of 4.16L.04: DG150 support --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index ebfd56131..a78431a79 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=288b8b0d8716202dc29a7c52dfcc1f497cfe14e4 +PKG_SOURCE_VERSION:=3114d55f62bac137f2558bbced6eddc978d4495d PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 8bae398da7ed345e875f4a2c81e5ce54609cc10e Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 8 Dec 2015 13:23:25 +0100 Subject: [PATCH 06/46] add power management package --- power-management/Makefile | 30 ++++++++++++++ power-management/files/etc/config/power_mgmt | 6 +++ power-management/files/etc/init.d/power_mgmt | 43 ++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 power-management/Makefile create mode 100644 power-management/files/etc/config/power_mgmt create mode 100755 power-management/files/etc/init.d/power_mgmt diff --git a/power-management/Makefile b/power-management/Makefile new file mode 100644 index 000000000..dd937a507 --- /dev/null +++ b/power-management/Makefile @@ -0,0 +1,30 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=power-management +PKG_RELEASE:=1 +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/power-management + CATEGORY:=Base system + TITLE:=Port management tool +endef + +define Package/power-management/description + Control Broadcom power options +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./files/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile +endef + +define Package/power-management/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,power-management)) diff --git a/power-management/files/etc/config/power_mgmt b/power-management/files/etc/config/power_mgmt new file mode 100644 index 000000000..61c6b0b8b --- /dev/null +++ b/power-management/files/etc/config/power_mgmt @@ -0,0 +1,6 @@ +config power_mgmt 'power_mgmt' + option avs 'stopped' + option cpuspeed '0' + option cpur4kwait '0' + option ethapd '0' + option eee '0' diff --git a/power-management/files/etc/init.d/power_mgmt b/power-management/files/etc/init.d/power_mgmt new file mode 100755 index 000000000..19e67ffd4 --- /dev/null +++ b/power-management/files/etc/init.d/power_mgmt @@ -0,0 +1,43 @@ +#!/bin/sh /etc/rc.common + +START=13 +USE_PROCD=1 + +. /lib/functions.sh + +parsebool() { + [ "$1" = "1" ] && echo "on" || echo "off" +} + +start_service() { + config_load power_mgmt + + local speed + config_get speed power_mgmt cpuspeed + pwrctl config --cpuspeed $speed + + local cpur4kwait + config_get cpur4kwait power_mgmt cpur4kwait + pwrctl config --cpur4kwait $(parsebool $cpur4kwait) + + local sr + config_get sr power_mgmt sr + pwrctl config --sr $(parsebool $sr) + + local ethapd + config_get ethapd power_mgmt ethapd + pwrctl config --ethapd $(parsebool $ethapd) + + local eee + config_get eee power_mgmt eee + pwrctl config --eee $(parsebool $eee) + + local avs + config_get avs power_mgmt avs + pwrctl config --avs $avs +} + +service_triggers() { + procd_add_reload_trigger power_mgmt +} + From 3f77b219b95342476a601622c97b89075707d767 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 8 Dec 2015 13:23:49 +0100 Subject: [PATCH 07/46] luci-inteno-1.1.25 --- webgui/luci/luci/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index 44f562428..fe338af8b 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.24 -PKG_SOURCE_VERSION:=31f7532bffdeb4494609b79ef0d5a214c7b019ea +PKG_VERSION:=inteno-1.1.25 +PKG_SOURCE_VERSION:=ec3173befab3b96b0072f2ed165b154cf5267cc7 PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) @@ -474,7 +474,7 @@ $(eval $(call application,port-management,LuCI Support for Port Management,\ +PACKAGE_luci-app-port-management:port-management)) $(eval $(call application,power-mgmt,LuCI Support for Power Management,\ - +PACKAGE_luci-app-power-mgmt)) + +PACKAGE_luci-app-power-mgmt:power-management)) $(eval $(call application,parental-control,LuCI Support for Parental Control,\ +PACKAGE_luci-app-parental-control)) From 8cce20ecb6b7d616445193693e9c6acc973c42c5 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 8 Dec 2015 13:38:52 +0100 Subject: [PATCH 08/46] add catv package --- catv/Makefile | 30 +++++++++++++++++++++++++++ catv/files/etc/config/catv | 4 ++++ catv/files/etc/init.d/.catv.kate-swp | Bin 0 -> 176 bytes catv/files/etc/init.d/catv | 26 +++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 catv/Makefile create mode 100644 catv/files/etc/config/catv create mode 100644 catv/files/etc/init.d/.catv.kate-swp create mode 100755 catv/files/etc/init.d/catv diff --git a/catv/Makefile b/catv/Makefile new file mode 100644 index 000000000..b1519ab84 --- /dev/null +++ b/catv/Makefile @@ -0,0 +1,30 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=catv +PKG_RELEASE:=1 +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/catv + CATEGORY:=Utilities + TITLE:=CATV +endef + +define Package/catv/description + CATV configuration utility +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./files/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile +endef + +define Package/catv/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,catv)) diff --git a/catv/files/etc/config/catv b/catv/files/etc/config/catv new file mode 100644 index 000000000..0dd575c00 --- /dev/null +++ b/catv/files/etc/config/catv @@ -0,0 +1,4 @@ + +config service 'catv' + option enable 'no' + option filter '3' diff --git a/catv/files/etc/init.d/.catv.kate-swp b/catv/files/etc/init.d/.catv.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..d22dcd8e0f40fc1c206b02efd71635a8d4fa50b7 GIT binary patch literal 176 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?Vnh&ib`b+OrFCbfOB6>G}^?gfVeMR{C< zgMbt_5VHd@2ZGB65<+lUfm}8Omj%dWMR1vcToweE3CLwea2bJICIlDAV_ Date: Tue, 8 Dec 2015 13:39:15 +0100 Subject: [PATCH 09/46] move port and power management to utilities --- port-management/Makefile | 5 ++--- power-management/Makefile | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/port-management/Makefile b/port-management/Makefile index 0caaaed73..9c62e8fda 100644 --- a/port-management/Makefile +++ b/port-management/Makefile @@ -8,13 +8,12 @@ PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/port-management - CATEGORY:=Base system + CATEGORY:=Utilities TITLE:=Port management tool endef define Package/port-management/description - port-management contains necessary tools to create - layer2 interfaces + Port configuration utility endef define Build/Prepare diff --git a/power-management/Makefile b/power-management/Makefile index dd937a507..0e82fd2ef 100644 --- a/power-management/Makefile +++ b/power-management/Makefile @@ -7,8 +7,8 @@ PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk define Package/power-management - CATEGORY:=Base system - TITLE:=Port management tool + CATEGORY:=Utilities + TITLE:=Power management tool endef define Package/power-management/description From 09413abb61a66a74df3dd3ac2e73aad5091b346f Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 8 Dec 2015 13:39:54 +0100 Subject: [PATCH 10/46] luci-inteno-1.1.26 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index fe338af8b..d40f6249d 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.25 -PKG_SOURCE_VERSION:=ec3173befab3b96b0072f2ed165b154cf5267cc7 +PKG_VERSION:=inteno-1.1.26 +PKG_SOURCE_VERSION:=49763162182f88bff5e93034b2ce7e9ef6760854 PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From fbcf382a64996f8d0b45cec87f76f4ca499164ae Mon Sep 17 00:00:00 2001 From: Ronny Nilsson Date: Tue, 8 Dec 2015 15:07:28 +0100 Subject: [PATCH 11/46] Voice ports have wrong order (switched) in some products so we need a per-board-config of how to enumerate the FSX voice ports. The voice_client script has been updated to read that per-board-conf at the very first boot and then store it UCI as usual, where the GUI reads it. --- voice-client/files/etc/config/voice_client | 1 - voice-client/files/etc/init.d/voice_client | 81 ++++++++++++++++++++-- 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/voice-client/files/etc/config/voice_client b/voice-client/files/etc/config/voice_client index 3cf8d2749..b185e993c 100644 --- a/voice-client/files/etc/config/voice_client +++ b/voice-client/files/etc/config/voice_client @@ -141,7 +141,6 @@ config 'sip_service_provider' 'sip0' option 'codec2' 'g729' option 'codec3' 'g726' option 'autoframing' '1' - option 'call_lines' 'BRCM/0 BRCM/4' option 'cfim_on' '*21*' option 'cfim_off' '#21#' option 'cfbs_on' '*61*' diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client index 6ecb4edea..ca421137a 100755 --- a/voice-client/files/etc/init.d/voice_client +++ b/voice-client/files/etc/init.d/voice_client @@ -242,7 +242,79 @@ read_lines() { local lines="" local call_lines + local fsxIdx fsxEpt dectIdx dectEpt + + # Are lines already set by user conf? config_get call_lines $1 call_lines + + # Otherwise set default depending on board HW. This + # is only done at very first boot or a default reset. + if test -z "$call_lines"; then + # Get all FSX voice endpoints. Translate to uppercase with awk + # due to tr [:upper:] doesn't work in our BusyBox. + voicePorts=$(db get hw.board.VoicePortOrder | \ + awk '{ print toupper($0) }' | \ + sed -e "s/\([[:alpha:]]*\)\([[:digit:]]\)/\1\/\2/g") + voiceNames=$(db get hw.board.VoicePortNames) + hasVoice=0 + + if test $(db get hw.board.hasVoice) = "1"; then + # Get the first FSX voice endpoint index by + # searching for the name usually used. + fsxIdx=$(echo $voiceNames | \ + awk -e '{ + i = 1; + while(i <= NF && tolower($i) !~ /^tel.*$/) { + i++; + } + print i; + } + ') + + # Convert index to endpoint ID + if test $fsxIdx -gt 0; then + fsxEpt=$(echo $voicePorts | awk '{ print $'$fsxIdx' }') + fi + + hasVoice=1 + fi + + if test $(db get hw.board.hasDect) = "1"; then + # Get the first Dect voice endpoint index by + # searching for the name usually used. + dectIdx=$(echo $voiceNames | \ + awk -e '{ + i = 1; + while(i <= NF && tolower($i) !~ /^dect.*$/) { + i++; + } + print i; + } + ') + + if test $dectIdx -gt 0; then + dectEpt=$(echo $voicePorts | awk '{ print $'$dectIdx' }') + fi + + hasVoice=1 + fi + + if test $hasVoice -eq 1; then + call_lines="$dectEpt $fsxEpt" + + # If we didn't find any endpoint ID we + # fallback to activate them all. + if test -z "$call_lines"; then + call_lines="$voicePorts" + fi + fi + + # Save the endpoint IDs we found where the + # GUI expects to find them. + uci_set voice_client "${1}" "call_lines" "$call_lines" + uci_commit voice_client + fi + for i in $call_lines ; do case $i in ''|*[!0-9]*) lines=$lines"$i&" ;; @@ -1503,7 +1575,7 @@ configure_extensions_provider() call_filter_macro=$(get_call_filter $1 incoming) echo "exten => $user,1,$call_filter_macro" >> $tmp - local call_lines call_ivr call_queue extension + local call_ivr call_queue extension echo "exten => $user,n,Set(__TRANSFER_CONTEXT=\${CHANNEL(peername)}-transfer)" >> $tmp # replace prefix '+' with '00' @@ -1511,12 +1583,11 @@ configure_extensions_provider() echo "exten => $user,n(rewrite),Set(CALLERID(num)=\"00\${CALLERID(num):1}\"))" >> $tmp echo "exten => $user,n(norewrite),NoOp()">> $tmp - config_get call_lines $1 call_lines + # read a list of lines that should be dialled on incoming calls + incoming_lines=$(read_lines $1) config_get call_queue $1 call_queue config_get call_ivr $1 call_ivr - if ! [ -z "$call_lines" ] ; then - # read a list of lines that should be dialled on incoming calls - incoming_lines=$(read_lines $1) + if [ -n "$incoming_lines" ]; then echo "exten => $user,n,Dial($incoming_lines,$(get_voicemail_timeout),tF(hangup,h,2))" >> $tmp echo "exten => $user,n,GotoIf($[\"\${DIALSTATUS}\"=\"ANSWER\"]?endcall)" >> $tmp echo "exten => $user,n,GotoIf($[\"\${DIALSTATUS}\"=\"BUSY\"]?noanswer)" >> $tmp From 9a0dcfd8958e30a140c9283f72768ce50f34c464 Mon Sep 17 00:00:00 2001 From: Nabeel Sowan Date: Tue, 8 Dec 2015 14:41:53 +0100 Subject: [PATCH 12/46] fix boardfiles with longpress option and set default minpress, refs #8318 --- peripheral_manager/src/src/button.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peripheral_manager/src/src/button.c b/peripheral_manager/src/src/button.c index b61cf0d24..e42230061 100644 --- a/peripheral_manager/src/src/button.c +++ b/peripheral_manager/src/src/button.c @@ -414,7 +414,7 @@ void button_init( struct server_ctx *s_ctx) { struct ucilist *node; LIST_HEAD(buttonnames); - int default_minpress = 0; + int default_minpress = 100; char *s; int r; From 4c377f65b5f063764021e66d67730f5d1ac9f327 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 8 Dec 2015 12:30:55 +0100 Subject: [PATCH 13/46] samba3 fixed --- samba3/Config.in | 4 + samba3/Makefile | 83 + samba3/files/config-lfs.h | 56 + samba3/files/samba.config | 7 + samba3/files/samba.init | 139 + samba3/files/smb.conf.template | 19 + samba3/patches/100-avm.patch | 7267 +++++++++++++++++ samba3/patches/110-compile_fixes.patch | 105 + samba3/patches/120-owrt_paths.patch | 57 + samba3/patches/130-owrt_smbpasswd.patch | 216 + samba3/patches/140-no_mmap.patch | 27 + samba3/patches/150-fix_ls.patch | 15 + samba3/patches/160-fix_log.patch | 13 + samba3/patches/170-no_rpc.patch | 28 + samba3/patches/180-fix_duplicate_define.patch | 12 + 15 files changed, 8048 insertions(+) create mode 100644 samba3/Config.in create mode 100644 samba3/Makefile create mode 100644 samba3/files/config-lfs.h create mode 100644 samba3/files/samba.config create mode 100755 samba3/files/samba.init create mode 100644 samba3/files/smb.conf.template create mode 100644 samba3/patches/100-avm.patch create mode 100644 samba3/patches/110-compile_fixes.patch create mode 100644 samba3/patches/120-owrt_paths.patch create mode 100644 samba3/patches/130-owrt_smbpasswd.patch create mode 100644 samba3/patches/140-no_mmap.patch create mode 100644 samba3/patches/150-fix_ls.patch create mode 100644 samba3/patches/160-fix_log.patch create mode 100644 samba3/patches/170-no_rpc.patch create mode 100644 samba3/patches/180-fix_duplicate_define.patch diff --git a/samba3/Config.in b/samba3/Config.in new file mode 100644 index 000000000..c6b7e765a --- /dev/null +++ b/samba3/Config.in @@ -0,0 +1,4 @@ +config SAMBA3_DEBUG + bool "Enable Logging for samba3" + depends PACKAGE_samba3 + default n diff --git a/samba3/Makefile b/samba3/Makefile new file mode 100644 index 000000000..1a101015d --- /dev/null +++ b/samba3/Makefile @@ -0,0 +1,83 @@ +# +# Copyright (C) 2008-2011 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. + +include $(TOPDIR)/rules.mk + +PKG_NAME:=samba3 +PKG_VERSION:=3.0.24 +PKG_RELEASE:=8 +PKG_MD5SUM:=89273f67a6d8067cbbecefaa13747153 + +PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/samba/old-versions/ +PKG_SOURCE:=samba-$(PKG_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/samba-$(PKG_VERSION)/ + +include $(INCLUDE_DIR)/package.mk + +TARGET_CFLAGS+=$(if $(CONFIG_SAMBA3_DEBUG),-DSAMBA_DEBUG) + +define Package/samba3 + SECTION:=net + CATEGORY:=Network + SUBMENU:=Filesystem + TITLE:=samba3 + DEPENDS:=+libpthread + URL:=http://www.samba.org/ +endef + +define Package/samba3/Description + Samba3 - made small with patches taken from AVM GPL releases and freetz +endef + +define Package/samba3/conffiles +/etc/config/samba +/etc/samba/smb.conf.template +endef + +define Package/samba3/config + source "$(SOURCE)/Config.in" +endef + +define Build/Prepare/LFS +endef + +define Build/Prepare +$(call Build/Prepare/Default) +endef + +define Build/Configure + [ -f "$(PKG_BUILD_DIR)/source/include/config.h.save" ] || \ + $(CP) $(PKG_BUILD_DIR)/source/include/config.h \ + $(PKG_BUILD_DIR)/source/include/config.h.save + cat \ + $(PKG_BUILD_DIR)/source/include/config.h.save \ + ./files/config-lfs.h >> $(PKG_BUILD_DIR)/source/include/config.h + $(Build/Configure/Default) +endef + +define Build/Compile + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + $(MAKE) -C $(PKG_BUILD_DIR)/source \ + $(TARGET_CONFIGURE_OPTS) \ + all bin/smbpasswd +endef + +define Package/samba3/install + $(INSTALL_DIR) $(1)/etc/{samba,init.d,config} + $(INSTALL_BIN) ./files/samba.init $(1)/etc/init.d/samba + $(INSTALL_DATA) ./files/samba.config $(1)/etc/config/samba + $(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/samba/ + touch $(1)/etc/samba/smbpasswd + $(INSTALL_DIR) $(1)/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/source/bin/smbpasswd $(1)/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/source/bin/smbd $(1)/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/source/bin/nmbd $(1)/bin/ +endef + +$(eval $(call BuildPackage,samba3)) diff --git a/samba3/files/config-lfs.h b/samba3/files/config-lfs.h new file mode 100644 index 000000000..128e8a526 --- /dev/null +++ b/samba3/files/config-lfs.h @@ -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 diff --git a/samba3/files/samba.config b/samba3/files/samba.config new file mode 100644 index 000000000..db064d587 --- /dev/null +++ b/samba3/files/samba.config @@ -0,0 +1,7 @@ +config samba + option 'name' 'IntenoSMB' + option 'workgroup' 'IntenoSMB' + option 'description' 'IntenoSMB' + option 'homes' '0' + option 'interface' 'lan' + diff --git a/samba3/files/samba.init b/samba3/files/samba.init new file mode 100755 index 000000000..57561d836 --- /dev/null +++ b/samba3/files/samba.init @@ -0,0 +1,139 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2008-2012 OpenWrt.org + +START=60 +USE_PROCD=1 + +useradd() +{ + local user + local password + config_get user $1 user + config_get password $1 password + grep -rq "^$user:" /etc/passwd || adduser $user -s /bin/false -D -H -h /mnt/$user + /bin/smbpasswd $user $password +} + +purgepasswd() +{ + for us in `grep mnt /etc/passwd | cut -d":" -f1`; do + deluser $us + done +} + +purgesmbpasswd() +{ + rm -rf /etc/samba/smbpasswd + touch /etc/samba/smbpasswd +} + +smb_header() { + local interface + config_get interface $1 interface "loopback lan" + + # 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 <> /var/etc/smb.conf + +[homes] + comment = Home Directories + browsable = no + read only = no + create mode = 0750 +EOT + } + + [ -L /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 + config_foreach useradd sambausers + config_foreach smb_header samba + config_foreach smb_add_share sambashare + service_start /bin/smbd -D + service_start /bin/nmbd -D +} + +stop_service() { + service_stop /bin/smbd + service_stop /bin/nmbd + purgepasswd + purgesmbpasswd +} + +reload_service() { + stop + start +} + +service_triggers() { + procd_add_reload_trigger samba network +} diff --git a/samba3/files/smb.conf.template b/samba3/files/smb.conf.template new file mode 100644 index 000000000..816cdd862 --- /dev/null +++ b/samba3/files/smb.conf.template @@ -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 = br-lan + bind interfaces only = yes + diff --git a/samba3/patches/100-avm.patch b/samba3/patches/100-avm.patch new file mode 100644 index 000000000..2db6e6133 --- /dev/null +++ b/samba3/patches/100-avm.patch @@ -0,0 +1,7267 @@ +diff -urN samba-3.0.24.orig/source/auth/auth_compat.c samba-3.0.24/source/auth/auth_compat.c +--- samba-3.0.24.orig/source/auth/auth_compat.c 2006-04-20 04:29:20.000000000 +0200 ++++ samba-3.0.24/source/auth/auth_compat.c 2007-07-17 13:19:05.000000000 +0200 +@@ -92,18 +92,25 @@ + check if a username/password pair is ok via the auth subsystem. + return True if the password is correct, False otherwise + ****************************************************************************/ ++ + BOOL password_ok(char *smb_name, DATA_BLOB password_blob) + { ++ ++ DATA_BLOB null_password = data_blob(NULL, 0); ++ BOOL encrypted = (global_encrypted_passwords_negotiated && (password_blob.length == 24 || password_blob.length > 46)); ++ ++ if (encrypted) { ++ /* ++ * The password could be either NTLM or plain LM. Try NTLM first, ++ * but fall-through as required. ++ * Vista sends NTLMv2 here - we need to try the client given workgroup. ++ */ ++ if (get_session_workgroup()) { ++ if (NT_STATUS_IS_OK(pass_check_smb(smb_name, get_session_workgroup(), null_password, password_blob, null_password, encrypted))) { ++ return True; ++ } ++ } + +- DATA_BLOB null_password = data_blob(NULL, 0); +- BOOL encrypted = (global_encrypted_passwords_negotiated && password_blob.length == 24); +- +- if (encrypted) { +- /* +- * The password could be either NTLM or plain LM. Try NTLM first, +- * but fall-through as required. +- * NTLMv2 makes no sense here. +- */ + if (NT_STATUS_IS_OK(pass_check_smb(smb_name, lp_workgroup(), null_password, password_blob, null_password, encrypted))) { + return True; + } +@@ -119,5 +126,3 @@ + + return False; + } +- +- +diff -urN samba-3.0.24.orig/source/auth/auth_util.c samba-3.0.24/source/auth/auth_util.c +--- samba-3.0.24.orig/source/auth/auth_util.c 2007-02-04 19:59:14.000000000 +0100 ++++ samba-3.0.24/source/auth/auth_util.c 2007-07-17 13:19:05.000000000 +0200 +@@ -2043,18 +2043,20 @@ + /* The only other possible result is that winbind is not up + and running. We need to update the trustdom_cache + ourselves */ +- ++#ifndef AVM_SMALLER + update_trustdom_cache(); ++#endif + } + + /* now the trustdom cache should be available a DC could still + * have a transitive trust so fall back to the cache of trusted + * domains (like a domain member would use */ + ++#ifndef AVM_SMALLER + if ( trustdom_cache_fetch(dom_name, &trustdom_sid) ) { + return True; + } +- ++#endif + return False; + } + + +diff -urN samba-3.0.24.orig/source/bin/dummy samba-3.0.24/source/bin/dummy +--- samba-3.0.24.orig/source/bin/dummy 1970-01-01 01:00:00.000000000 +0100 ++++ samba-3.0.24/source/bin/dummy 2007-07-17 13:19:05.000000000 +0200 +@@ -0,0 +1 @@ ++x +diff -urN samba-3.0.24.orig/source/.dmallocrc samba-3.0.24/source/.dmallocrc +--- samba-3.0.24.orig/source/.dmallocrc 2005-02-25 18:59:36.000000000 +0100 ++++ samba-3.0.24/source/.dmallocrc 1970-01-01 01:00:00.000000000 +0100 +@@ -1,2 +0,0 @@ +-samba allow-free-null, log-stats, log-non-free, log-trans, \ +- check-fence, check-heap, check-lists, error-abort +\ No newline at end of file +diff -urN samba-3.0.24.orig/source/include/config.h samba-3.0.24/source/include/config.h +--- samba-3.0.24.orig/source/include/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ samba-3.0.24/source/include/config.h 2008-01-28 10:18:38.000000000 +0100 +@@ -0,0 +1,2229 @@ ++/* include/config.h. Generated by configure. */ ++/* include/config.h.in. Generated from configure.in by autoheader. */ ++ ++/* Whether the host os is aix */ ++/* #undef AIX */ ++ ++/* Whether the AIX send_file() API is available */ ++/* #undef AIX_SENDFILE_API */ ++ ++/* Does extattr API work */ ++/* #undef BROKEN_EXTATTR */ ++ ++/* Does getgrnam work correctly */ ++/* #undef BROKEN_GETGRNAM */ ++ ++/* Whether the nisplus include files are broken */ ++#define BROKEN_NISPLUS_INCLUDE_FILES 1 ++ ++/* Broken RedHat 7.2 system header files */ ++/* #undef BROKEN_REDHAT_7_SYSTEM_HEADERS */ ++ ++/* Does strndup work correctly */ ++/* #undef BROKEN_STRNDUP */ ++ ++/* Does strnlen work correctly */ ++/* #undef BROKEN_STRNLEN */ ++ ++/* Does this system use unicode compose characters */ ++/* #undef BROKEN_UNICODE_COMPOSE_CHARACTERS */ ++ ++/* Whether the compiler supports the LL prefix on long long integers */ ++#define COMPILER_SUPPORTS_LL 1 ++ ++/* Whether the host os is Darwin/MacOSX */ ++/* #undef DARWINOS */ ++ ++/* Default display charset name */ ++#define DEFAULT_DISPLAY_CHARSET "ASCII" ++ ++/* Default dos charset name */ ++#define DEFAULT_DOS_CHARSET "CP850" ++ ++/* Default unix charset name */ ++#define DEFAULT_UNIX_CHARSET "UTF-8" ++ ++/* Define to check invariants around some common functions */ ++/* #undef DMALLOC_FUNC_CHECK */ ++ ++/* Define to turn on dmalloc debugging */ ++/* #undef ENABLE_DMALLOC */ ++ ++/* Whether the host os is FreeBSD */ ++/* #undef FREEBSD */ ++ ++/* Whether the FreeBSD sendfile() API is available */ ++/* #undef FREEBSD_SENDFILE_API */ ++ ++/* Whether we are running on 64bit linux */ ++/* #undef HAVE_64BIT_LINUX */ ++ ++/* Whether acl_get_perm_np() is available */ ++/* #undef HAVE_ACL_GET_PERM_NP */ ++ ++/* Whether the krb5_address struct has a addrtype property */ ++/* #undef HAVE_ADDRTYPE_IN_KRB5_ADDRESS */ ++ ++/* Whether the krb5_address struct has a addr_type property */ ++/* #undef HAVE_ADDR_TYPE_IN_KRB5_ADDRESS */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_AFS_AFS_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_AFS_H */ ++ ++/* Whether 64 bit aio is available */ ++/* #undef HAVE_AIOCB64 */ ++ ++/* Have aio_cancel */ ++/* #undef HAVE_AIO_CANCEL */ ++ ++/* Have aio_cancel64 */ ++/* #undef HAVE_AIO_CANCEL64 */ ++ ++/* Have aio_error */ ++/* #undef HAVE_AIO_ERROR */ ++ ++/* Have aio_error64 */ ++/* #undef HAVE_AIO_ERROR64 */ ++ ++/* Have aio_fsync */ ++/* #undef HAVE_AIO_FSYNC */ ++ ++/* Have aio_fsync64 */ ++/* #undef HAVE_AIO_FSYNC64 */ ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_AIO_H 1 */ ++ ++/* Have aio_read */ ++/* #undef HAVE_AIO_READ */ ++ ++/* Have aio_read64 */ ++/* #undef HAVE_AIO_READ64 */ ++ ++/* Have aio_return */ ++/* #undef HAVE_AIO_RETURN */ ++ ++/* Have aio_return64 */ ++/* #undef HAVE_AIO_RETURN64 */ ++ ++/* Have aio_suspend */ ++/* #undef HAVE_AIO_SUSPEND */ ++ ++/* Have aio_suspend64 */ ++/* #undef HAVE_AIO_SUSPEND64 */ ++ ++/* Have aio_write */ ++/* #undef HAVE_AIO_WRITE */ ++ ++/* Have aio_write64 */ ++/* #undef HAVE_AIO_WRITE64 */ ++ ++/* Whether AIX ACLs are available */ ++/* #undef HAVE_AIX_ACLS */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_ALLOCA_H 1 ++ ++/* Whether the AP_OPTS_USE_SUBKEY ap option is available */ ++/* #undef HAVE_AP_OPTS_USE_SUBKEY */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_ARPA_INET_H 1 ++ ++/* check for */ ++#define HAVE_ASM_TYPES_H 1 ++ ++/* Define to 1 if you have the `asprintf' function. */ ++#define HAVE_ASPRINTF 1 ++ ++/* Whether asprintf() is available */ ++#define HAVE_ASPRINTF_DECL 1 ++ ++/* Define to 1 if you have the `atexit' function. */ ++#define HAVE_ATEXIT 1 ++ ++/* Define to 1 if you have the `attr_get' function. */ ++/* #undef HAVE_ATTR_GET */ ++ ++/* Define to 1 if you have the `attr_getf' function. */ ++/* #undef HAVE_ATTR_GETF */ ++ ++/* Define to 1 if you have the `attr_list' function. */ ++/* #undef HAVE_ATTR_LIST */ ++ ++/* Define to 1 if you have the `attr_listf' function. */ ++/* #undef HAVE_ATTR_LISTF */ ++ ++/* Define to 1 if you have the `attr_remove' function. */ ++/* #undef HAVE_ATTR_REMOVE */ ++ ++/* Define to 1 if you have the `attr_removef' function. */ ++/* #undef HAVE_ATTR_REMOVEF */ ++ ++/* Define to 1 if you have the `attr_set' function. */ ++/* #undef HAVE_ATTR_SET */ ++ ++/* Define to 1 if you have the `attr_setf' function. */ ++/* #undef HAVE_ATTR_SETF */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ATTR_XATTR_H */ ++ ++/* Define to 1 if you have the `backtrace_symbols' function. */ ++/* AR7 #define HAVE_BACKTRACE_SYMBOLS 1 */ ++ ++/* Define to 1 if you have the `ber_scanf' function. */ ++/* #undef HAVE_BER_SCANF */ ++ ++/* What header to include for iconv() function: biconv.h */ ++/* #undef HAVE_BICONV */ ++ ++/* Define to 1 if you have the `bigcrypt' function. */ ++/* #undef HAVE_BIGCRYPT */ ++ ++/* Whether fcntl64 locks are broken */ ++/* #undef HAVE_BROKEN_FCNTL64_LOCKS */ ++ ++/* Whether getgroups is broken */ ++/* #undef HAVE_BROKEN_GETGROUPS */ ++ ++/* Whether readdir() is broken */ ++/* #undef HAVE_BROKEN_READDIR */ ++ ++/* Whether there is a C99 compliant vsnprintf */ ++#define HAVE_C99_VSNPRINTF 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_CFSTRINGENCODINGCONVERTER_H */ ++ ++/* Define to 1 if you have the `chmod' function. */ ++#define HAVE_CHMOD 1 ++ ++/* Define to 1 if you have the `chown' function. */ ++#define HAVE_CHOWN 1 ++ ++/* Define to 1 if you have the `chroot' function. */ ++#define HAVE_CHROOT 1 ++ ++/* Define to 1 if you have the `chsize' function. */ ++/* #undef HAVE_CHSIZE */ ++ ++/* Define to 1 if you have the `closedir64' function. */ ++/* #undef HAVE_CLOSEDIR64 */ ++ ++/* Whether the compiler will optimize out function calls */ ++#define HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_COM_ERR_H */ ++ ++/* Whether the system has connect() */ ++#define HAVE_CONNECT 1 ++ ++/* Define to 1 if you have the `copy_Authenticator' function. */ ++/* #undef HAVE_COPY_AUTHENTICATOR */ ++ ++/* Define to 1 if you have the ++ header file. */ ++/* #undef HAVE_COREFOUNDATION_CFSTRINGENCODINGCONVERTER_H */ ++ ++/* Define to 1 if you have the `creat64' function. */ ++/* AR7 #define HAVE_CREAT64 1 */ ++ ++/* Whether the system has the crypt() function */ ++#define HAVE_CRYPT 1 ++ ++/* Define to 1 if you have the `crypt16' function. */ ++/* #undef HAVE_CRYPT16 */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_CTYPE_H 1 ++ ++/* Whether we have CUPS */ ++/* #undef HAVE_CUPS */ ++ ++/* Define to 1 if you have the `des_set_key' function. */ ++/* #undef HAVE_DES_SET_KEY */ ++ ++/* Whether the 'dev64_t' type is available */ ++/* #undef HAVE_DEV64_T */ ++ ++/* Whether the major macro for dev_t is available */ ++#define HAVE_DEVICE_MAJOR_FN 1 ++ ++/* Whether the minor macro for dev_t is available */ ++#define HAVE_DEVICE_MINOR_FN 1 ++ ++/* Define to 1 if you have the `devnm' function. */ ++/* #undef HAVE_DEVNM */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DEVNM_H */ ++ ++/* Whether dirent has a d_off member */ ++#define HAVE_DIRENT_D_OFF 1 ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++#define HAVE_DIRENT_H 1 ++ ++/* Define to 1 if you have the `dlclose' function. */ ++#define HAVE_DLCLOSE 1 ++ ++/* Define to 1 if you have the `dlerror' function. */ ++#define HAVE_DLERROR 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_DLFCN_H 1 ++ ++/* Define to 1 if you have the `dlopen' function. */ ++#define HAVE_DLOPEN 1 ++ ++/* Define to 1 if you have the `dlsym' function. */ ++#define HAVE_DLSYM 1 ++ ++/* Define to 1 if you have the `dlsym_prepend_underscore' function. */ ++/* #undef HAVE_DLSYM_PREPEND_UNDERSCORE */ ++ ++/* struct dqblk .dqb_fsoftlimit */ ++/* #undef HAVE_DQB_FSOFTLIMIT */ ++ ++/* Define to 1 if you have the `dup2' function. */ ++#define HAVE_DUP2 1 ++ ++/* Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available */ ++/* #undef HAVE_ENCTYPE_ARCFOUR_HMAC_MD5 */ ++ ++/* Define to 1 if you have the `endmntent' function. */ ++#define HAVE_ENDMNTENT 1 ++ ++/* Define to 1 if you have the `endnetgrent' function. */ ++/* AR7 #define HAVE_ENDNETGRENT 1 */ ++ ++/* Whether errno() is available */ ++#define HAVE_ERRNO_DECL 1 ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_EXECINFO_H 1 */ ++ ++ ++/* Define to 1 if you have the `execl' function. */ ++#define HAVE_EXECL 1 ++ ++/* Whether large file support can be enabled */ ++/* AR7 #define HAVE_EXPLICIT_LARGEFILE_SUPPORT 1 */ ++ ++/* Define to 1 if you have the `extattr_delete_fd' function. */ ++/* #undef HAVE_EXTATTR_DELETE_FD */ ++ ++/* Define to 1 if you have the `extattr_delete_file' function. */ ++/* #undef HAVE_EXTATTR_DELETE_FILE */ ++ ++/* Define to 1 if you have the `extattr_delete_link' function. */ ++/* #undef HAVE_EXTATTR_DELETE_LINK */ ++ ++/* Define to 1 if you have the `extattr_get_fd' function. */ ++/* #undef HAVE_EXTATTR_GET_FD */ ++ ++/* Define to 1 if you have the `extattr_get_file' function. */ ++/* #undef HAVE_EXTATTR_GET_FILE */ ++ ++/* Define to 1 if you have the `extattr_get_link' function. */ ++/* #undef HAVE_EXTATTR_GET_LINK */ ++ ++/* Define to 1 if you have the `extattr_list_fd' function. */ ++/* #undef HAVE_EXTATTR_LIST_FD */ ++ ++/* Define to 1 if you have the `extattr_list_file' function. */ ++/* #undef HAVE_EXTATTR_LIST_FILE */ ++ ++/* Define to 1 if you have the `extattr_list_link' function. */ ++/* #undef HAVE_EXTATTR_LIST_LINK */ ++ ++/* Define to 1 if you have the `extattr_set_fd' function. */ ++/* #undef HAVE_EXTATTR_SET_FD */ ++ ++/* Define to 1 if you have the `extattr_set_file' function. */ ++/* #undef HAVE_EXTATTR_SET_FILE */ ++ ++/* Define to 1 if you have the `extattr_set_link' function. */ ++/* #undef HAVE_EXTATTR_SET_LINK */ ++ ++/* Define to 1 if you have the `fchmod' function. */ ++#define HAVE_FCHMOD 1 ++ ++/* Define to 1 if you have the `fchown' function. */ ++#define HAVE_FCHOWN 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Whether fcntl locking is available */ ++#define HAVE_FCNTL_LOCK 1 ++ ++/* Define to 1 if you have the `fcvt' function. */ ++#define HAVE_FCVT 1 ++ ++/* Define to 1 if you have the `fcvtl' function. */ ++/* #undef HAVE_FCVTL */ ++ ++/* Define to 1 if you have the `fgetxattr' function. */ ++/* AR7 #define HAVE_FGETXATTR 1 */ ++ ++/* Define to 1 if you have the `flistxattr' function. */ ++/* AR7 #define HAVE_FLISTXATTR 1 */ ++ ++/* Define to 1 if you have the `fopen64' function. */ ++/* AR7 #define HAVE_FOPEN64 1 */ ++ ++/* Define to 1 if you have the `fremovexattr' function. */ ++/* AR7 #define HAVE_FREMOVEXATTR 1 */ ++ ++/* Define to 1 if you have the `fseek64' function. */ ++/* #undef HAVE_FSEEK64 */ ++ ++/* Define to 1 if you have the `fseeko64' function. */ ++/* #define HAVE_FSEEKO64 1 */ ++ ++/* Define to 1 if you have the `fsetxattr' function. */ ++/* AR7 #define HAVE_FSETXATTR 1 */ ++ ++/* Define to 1 if you have the `fstat' function. */ ++#define HAVE_FSTAT 1 ++ ++/* Whether fstat64() is available */ ++/* AR7 #define HAVE_FSTAT64 1 */ ++ ++/* Define to 1 if you have the `fsync' function. */ ++#define HAVE_FSYNC 1 ++ ++/* Define to 1 if you have the `ftell64' function. */ ++/* #undef HAVE_FTELL64 */ ++ ++/* Define to 1 if you have the `ftello64' function. */ ++/* AR7 #define HAVE_FTELLO64 1 */ ++ ++/* Define to 1 if you have the `ftruncate' function. */ ++#define HAVE_FTRUNCATE 1 ++ ++/* Define to 1 if you have the `ftruncate64' function. */ ++/* AR7 #define HAVE_FTRUNCATE64 1 */ ++ ++/* Truncate extend */ ++#define HAVE_FTRUNCATE_EXTEND 1 ++ ++/* Whether there is a __FUNCTION__ macro */ ++#define HAVE_FUNCTION_MACRO 1 ++ ++/* Define to 1 if you have the `getauthuid' function. */ ++/* #undef HAVE_GETAUTHUID */ ++ ++/* Define to 1 if you have the `getcwd' function. */ ++#define HAVE_GETCWD 1 ++ ++/* Define to 1 if you have the `getdents' function. */ ++/* #undef HAVE_GETDENTS */ ++ ++/* Define to 1 if you have the `getdirentries' function. */ ++#define HAVE_GETDIRENTRIES 1 ++ ++/* Define to 1 if you have the `getgrent' function. */ ++#define HAVE_GETGRENT 1 ++ ++/* Define to 1 if you have the `getgrnam' function. */ ++#define HAVE_GETGRNAM 1 ++ ++/* Define to 1 if you have the `getgrouplist' function. */ ++/* #undef HAVE_GETGROUPLIST */ ++ ++/* Define to 1 if you have the `getmntent' function. */ ++#define HAVE_GETMNTENT 1 ++ ++/* Define to 1 if you have the `getnetgrent' function. */ ++#define HAVE_GETNETGRENT 1 ++ ++/* Define to 1 if you have the `getprpwnam' function. */ ++/* #undef HAVE_GETPRPWNAM */ ++ ++/* Define to 1 if you have the `getpwanam' function. */ ++/* #undef HAVE_GETPWANAM */ ++ ++/* Define to 1 if you have the `getrlimit' function. */ ++#define HAVE_GETRLIMIT 1 ++ ++/* Define to 1 if you have the `getspnam' function. */ ++#define HAVE_GETSPNAM 1 ++ ++/* Whether gettimeofday() is available */ ++#define HAVE_GETTIMEOFDAY_TZ 1 ++ ++/* Define to 1 if you have the `getutmpx' function. */ ++#define HAVE_GETUTMPX 1 ++ ++/* Define to 1 if you have the `getxattr' function. */ ++/* AR7 #define HAVE_GETXATTR 1 */ ++ ++/* What header to include for iconv() function: giconv.h */ ++/* #undef HAVE_GICONV */ ++ ++/* Define to 1 if you have the `glob' function. */ ++#define HAVE_GLOB 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_GLOB_H 1 ++ ++/* Define to 1 if you have the `grantpt' function. */ ++#define HAVE_GRANTPT 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_GRP_H 1 ++ ++/* Whether GSSAPI is available */ ++/* #undef HAVE_GSSAPI */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_GSSAPI_GSSAPI_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_GSSAPI_H */ ++ ++/* Define to 1 if you have the `gss_display_status' function. */ ++/* #undef HAVE_GSS_DISPLAY_STATUS */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_HISTORY_H */ ++ ++/* Whether HPUX ACLs are available */ ++/* #undef HAVE_HPUX_ACLS */ ++ ++/* What header to include for iconv() function: iconv.h */ ++/* AR7 #define HAVE_ICONV 1 */ ++ ++/* Whether iface AIX is available */ ++/* #undef HAVE_IFACE_AIX */ ++ ++/* Whether iface ifconf is available */ ++#define HAVE_IFACE_IFCONF 1 ++ ++/* Whether iface ifreq is available */ ++/* #undef HAVE_IFACE_IFREQ */ ++ ++/* Whether the compiler supports immediate structures */ ++#define HAVE_IMMEDIATE_STRUCTURES 1 ++ ++/* Define to 1 if you have the `initgroups' function. */ ++#define HAVE_INITGROUPS 1 ++ ++/* Define to 1 if you have the `innetgr' function. */ ++/* AR7 #define HAVE_INNETGR 1 */ ++ ++/* Whether the 'ino64_t' type is available */ ++/* #undef HAVE_INO64_T */ ++ ++/* Whether int16 typedef is included by rpc/rpc.h */ ++/* #undef HAVE_INT16_FROM_RPC_RPC_H */ ++ ++/* Whether int32 typedef is included by rpc/rpc.h */ ++/* #undef HAVE_INT32_FROM_RPC_RPC_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_INTTYPES_H 1 ++ ++/* Whether IRIX ACLs are available */ ++/* #undef HAVE_IRIX_ACLS */ ++ ++/* Whether IRIX specific capabilities are available */ ++/* #undef HAVE_IRIX_SPECIFIC_CAPABILITIES */ ++ ++/* Whether kernel notifies changes */ ++#define HAVE_KERNEL_CHANGE_NOTIFY 1 ++ ++/* Whether IRIX kernel oplock type definitions are available */ ++/* #undef HAVE_KERNEL_OPLOCKS_IRIX */ ++ ++/* Whether to use linux kernel oplocks */ ++#define HAVE_KERNEL_OPLOCKS_LINUX 1 ++ ++/* Whether the kernel supports share modes */ ++#define HAVE_KERNEL_SHARE_MODES 1 ++ ++/* Whether to have KRB5 support */ ++/* #undef HAVE_KRB5 */ ++ ++/* Define to 1 if you have the `krb5_auth_con_setkey' function. */ ++/* #undef HAVE_KRB5_AUTH_CON_SETKEY */ ++ ++/* Define to 1 if you have the `krb5_auth_con_setuseruserkey' function. */ ++/* #undef HAVE_KRB5_AUTH_CON_SETUSERUSERKEY */ ++ ++/* Define to 1 if you have the `krb5_c_enctype_compare' function. */ ++/* #undef HAVE_KRB5_C_ENCTYPE_COMPARE */ ++ ++/* Whether the type krb5_encrypt_block exists */ ++/* #undef HAVE_KRB5_ENCRYPT_BLOCK */ ++ ++/* Define to 1 if you have the `krb5_encrypt_data' function. */ ++/* #undef HAVE_KRB5_ENCRYPT_DATA */ ++ ++/* Define to 1 if you have the `krb5_enctypes_compatible_keys' function. */ ++/* #undef HAVE_KRB5_ENCTYPES_COMPATIBLE_KEYS */ ++ ++/* Define to 1 if you have the `krb5_free_data_contents' function. */ ++/* #undef HAVE_KRB5_FREE_DATA_CONTENTS */ ++ ++/* Define to 1 if you have the `krb5_free_keytab_entry_contents' function. */ ++/* #undef HAVE_KRB5_FREE_KEYTAB_ENTRY_CONTENTS */ ++ ++/* Define to 1 if you have the `krb5_free_ktypes' function. */ ++/* #undef HAVE_KRB5_FREE_KTYPES */ ++ ++/* Define to 1 if you have the `krb5_free_unparsed_name' function. */ ++/* #undef HAVE_KRB5_FREE_UNPARSED_NAME */ ++ ++/* Define to 1 if you have the `krb5_get_default_in_tkt_etypes' function. */ ++/* #undef HAVE_KRB5_GET_DEFAULT_IN_TKT_ETYPES */ ++ ++/* Define to 1 if you have the `krb5_get_permitted_enctypes' function. */ ++/* #undef HAVE_KRB5_GET_PERMITTED_ENCTYPES */ ++ ++/* Define to 1 if you have the `krb5_get_pw_salt' function. */ ++/* #undef HAVE_KRB5_GET_PW_SALT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_KRB5_H */ ++ ++/* Whether the krb5_creds struct has a keyblock property */ ++/* #undef HAVE_KRB5_KEYBLOCK_IN_CREDS */ ++ ++/* Whether the krb5_keyblock struct has a keyvalue property */ ++/* #undef HAVE_KRB5_KEYBLOCK_KEYVALUE */ ++ ++/* Whether krb5_keytab_entry has key member */ ++/* #undef HAVE_KRB5_KEYTAB_ENTRY_KEY */ ++ ++/* Whether krb5_keytab_entry has keyblock member */ ++/* #undef HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK */ ++ ++/* Define to 1 if you have the `krb5_krbhst_get_addrinfo' function. */ ++/* #undef HAVE_KRB5_KRBHST_GET_ADDRINFO */ ++ ++/* Define to 1 if you have the `krb5_kt_compare' function. */ ++/* #undef HAVE_KRB5_KT_COMPARE */ ++ ++/* Define to 1 if you have the `krb5_kt_free_entry' function. */ ++/* #undef HAVE_KRB5_KT_FREE_ENTRY */ ++ ++/* Define to 1 if you have the `krb5_locate_kdc' function. */ ++/* #undef HAVE_KRB5_LOCATE_KDC */ ++ ++/* Define to 1 if you have the `krb5_mk_req_extended' function. */ ++/* #undef HAVE_KRB5_MK_REQ_EXTENDED */ ++ ++/* Define to 1 if you have the `krb5_principal2salt' function. */ ++/* #undef HAVE_KRB5_PRINCIPAL2SALT */ ++ ++/* Define to 1 if you have the `krb5_principal_get_comp_string' function. */ ++/* #undef HAVE_KRB5_PRINCIPAL_GET_COMP_STRING */ ++ ++/* Whether krb5_princ_component is available */ ++/* #undef HAVE_KRB5_PRINC_COMPONENT */ ++ ++/* Whether the krb5_creds struct has a session property */ ++/* #undef HAVE_KRB5_SESSION_IN_CREDS */ ++ ++/* Define to 1 if you have the `krb5_set_default_in_tkt_etypes' function. */ ++/* #undef HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES */ ++ ++/* Define to 1 if you have the `krb5_set_default_tgs_ktypes' function. */ ++/* #undef HAVE_KRB5_SET_DEFAULT_TGS_KTYPES */ ++ ++/* Define to 1 if you have the `krb5_set_real_time' function. */ ++/* #undef HAVE_KRB5_SET_REAL_TIME */ ++ ++/* Define to 1 if you have the `krb5_string_to_key' function. */ ++/* #undef HAVE_KRB5_STRING_TO_KEY */ ++ ++/* Define to 1 if you have the `krb5_string_to_key_salt' function. */ ++/* #undef HAVE_KRB5_STRING_TO_KEY_SALT */ ++ ++/* Whether the krb5_ticket struct has a enc_part2 property */ ++/* #undef HAVE_KRB5_TKT_ENC_PART2 */ ++ ++/* Define to 1 if you have the `krb5_use_enctype' function. */ ++/* #undef HAVE_KRB5_USE_ENCTYPE */ ++ ++/* Whether the KV5M_KEYTAB option is available */ ++/* #undef HAVE_KV5M_KEYTAB */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LANGINFO_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LASTLOG_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LBER_H */ ++ ++/* Whether ldap is available */ ++/* #undef HAVE_LDAP */ ++ ++/* Define to 1 if you have the `ldap_domain2hostlist' function. */ ++/* #undef HAVE_LDAP_DOMAIN2HOSTLIST */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LDAP_H */ ++ ++/* Define to 1 if you have the `ldap_init' function. */ ++/* #undef HAVE_LDAP_INIT */ ++ ++/* Define to 1 if you have the `ldap_initialize' function. */ ++/* #undef HAVE_LDAP_INITIALIZE */ ++ ++/* Define to 1 if you have the `ldap_set_rebind_proc' function. */ ++/* #undef HAVE_LDAP_SET_REBIND_PROC */ ++ ++/* Define to 1 if you have the `lgetxattr' function. */ ++/* AR7 #define HAVE_LGETXATTR 1 */ ++ ++/* Define to 1 if you have the `asn1' library (-lasn1). */ ++/* #undef HAVE_LIBASN1 */ ++ ++/* Define to 1 if you have the `com_err' library (-lcom_err). */ ++/* #undef HAVE_LIBCOM_ERR */ ++ ++/* Define to 1 if you have the `crypto' library (-lcrypto). */ ++/* #undef HAVE_LIBCRYPTO */ ++ ++/* Define to 1 if you have the `dl' library (-ldl). */ ++/* #undef HAVE_LIBDL */ ++ ++/* Define to 1 if you have the `exc' library (-lexc). */ ++/* #undef HAVE_LIBEXC */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LIBEXC_H */ ++ ++/* Define to 1 if you have the `gen' library (-lgen). */ ++/* #undef HAVE_LIBGEN */ ++ ++/* Define to 1 if you have the `gssapi' library (-lgssapi). */ ++/* #undef HAVE_LIBGSSAPI */ ++ ++/* Define to 1 if you have the `gssapi_krb5' library (-lgssapi_krb5). */ ++/* #undef HAVE_LIBGSSAPI_KRB5 */ ++ ++/* Define to 1 if you have the `inet' library (-linet). */ ++/* #undef HAVE_LIBINET */ ++ ++/* Define to 1 if you have the `k5crypto' library (-lk5crypto). */ ++/* #undef HAVE_LIBK5CRYPTO */ ++ ++/* Define to 1 if you have the `krb5' library (-lkrb5). */ ++/* #undef HAVE_LIBKRB5 */ ++ ++/* Define to 1 if you have the `lber' library (-llber). */ ++/* #undef HAVE_LIBLBER */ ++ ++/* Define to 1 if you have the `ldap' library (-lldap). */ ++/* #undef HAVE_LIBLDAP */ ++ ++/* Define to 1 if you have the `nsl' library (-lnsl). */ ++/* #undef HAVE_LIBNSL */ ++ ++/* Define to 1 if you have the `nsl_s' library (-lnsl_s). */ ++/* #undef HAVE_LIBNSL_S */ ++ ++/* Whether libpam is available */ ++#define HAVE_LIBPAM 1 ++ ++/* Whether the system has readline */ ++/* AR7 #define HAVE_LIBREADLINE 1 */ ++ ++/* Define to 1 if you have the `resolv' library (-lresolv). */ ++#define HAVE_LIBRESOLV 1 ++ ++/* Define to 1 if you have the `roken' library (-lroken). */ ++/* #undef HAVE_LIBROKEN */ ++ ++/* Define to 1 if you have the `sec' library (-lsec). */ ++/* #undef HAVE_LIBSEC */ ++ ++/* Define to 1 if you have the `security' library (-lsecurity). */ ++/* #undef HAVE_LIBSECURITY */ ++ ++/* Define to 1 if you have the `sendfile' library (-lsendfile). */ ++/* #undef HAVE_LIBSENDFILE */ ++ ++/* Define to 1 if you have the `socket' library (-lsocket). */ ++/* #undef HAVE_LIBSOCKET */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LIMITS_H 1 ++ ++/* Define to 1 if you have the `link' function. */ ++#define HAVE_LINK 1 ++ ++/* Whether Linux xfs quota support is available */ ++/* AR7 #define HAVE_LINUX_XFS_QUOTAS 1 */ ++ ++/* Define to 1 if you have the `listxattr' function. */ ++/* AR7 #define HAVE_LISTXATTR 1 */ ++ ++/* Define to 1 if you have the `llistxattr' function. */ ++/* AR7 #define HAVE_LLISTXATTR 1 */ ++ ++/* Define to 1 if you have the `llseek' function. */ ++#define HAVE_LLSEEK 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LOCALE_H 1 ++ ++/* Whether the host supports long long's */ ++#define HAVE_LONGLONG 1 ++ ++/* Define to 1 if you have the `lremovexattr' function. */ ++/* AR7 #define HAVE_LREMOVEXATTR 1 */ ++ ++/* Define to 1 if you have the `lseek64' function. */ ++/* AR7 #define HAVE_LSEEK64 1 */ ++ ++/* Define to 1 if you have the `lsetxattr' function. */ ++/* AR7 #define HAVE_LSETXATTR 1 */ ++ ++/* Define to 1 if you have the `lstat64' function. */ ++/* AR7 #define HAVE_LSTAT64 1 */ ++ ++/* Whether the macro for makedev is available */ ++#define HAVE_MAKEDEV 1 ++ ++/* Define to 1 if you have the `memmove' function. */ ++#define HAVE_MEMMOVE 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Whether memset() is available */ ++#define HAVE_MEMSET 1 ++ ++/* Define to 1 if you have the `mknod' function. */ ++#define HAVE_MKNOD 1 ++ ++/* Define to 1 if you have the `mknod64' function. */ ++/* #undef HAVE_MKNOD64 */ ++ ++/* Define to 1 if you have the `mktime' function. */ ++#define HAVE_MKTIME 1 ++ ++/* Whether mmap works */ ++#define HAVE_MMAP 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MNTENT_H 1 ++ ++/* Define to 1 if you have the `nanosleep' function. */ ++#define HAVE_NANOSLEEP 1 ++ ++/* Whether to use native iconv */ ++/* AR7 #define HAVE_NATIVE_ICONV 1 */ ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. */ ++/* #undef HAVE_NDIR_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NETINET_IN_IP_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_NETINET_IN_SYSTM_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_NETINET_IP_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_NETINET_TCP_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_NET_IF_H 1 ++ ++/* Do we have rl_completion_matches? */ ++/* AR7 #define HAVE_NEW_LIBREADLINE 1 */ ++ ++/* Define to 1 if you have the `nl_langinfo' function. */ ++#define HAVE_NL_LANGINFO 1 ++ ++/* Whether no ACLs support is available */ ++#define HAVE_NO_ACLS 1 ++ ++/* Whether no asynchronous io support is available */ ++#define HAVE_NO_AIO 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NSSWITCH_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NSS_COMMON_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_NSS_H 1 */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NS_API_H */ ++ ++/* Whether off64_t is available */ ++/* #undef HAVE_OFF64_T */ ++ ++/* Define to 1 if you have the `open64' function. */ ++/* AR7 #define HAVE_OPEN64 1 */ ++ ++/* Define to 1 if you have the `opendir64' function. */ ++/* #undef HAVE_OPENDIR64 */ ++ ++/* Defined if struct passwd has pw_age field */ ++/* #undef HAVE_PASSWD_PW_AGE */ ++ ++/* Defined if struct passwd has pw_comment field */ ++/* #undef HAVE_PASSWD_PW_COMMENT */ ++ ++/* Define to 1 if you have the `pathconf' function. */ ++#define HAVE_PATHCONF 1 ++ ++/* Define to 1 if you have the `pipe' function. */ ++#define HAVE_PIPE 1 ++ ++/* Define to 1 if you have the `poll' function. */ ++#define HAVE_POLL 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_POLL_H 1 ++ ++/* Whether POSIX ACLs are available */ ++/* #undef HAVE_POSIX_ACLS */ ++ ++/* Whether prctl is available */ ++#define HAVE_PRCTL 1 ++ ++/* Define to 1 if you have the `pread' function. */ ++#define HAVE_PREAD 1 ++ ++/* Define to 1 if you have the `pread64' function. */ ++/* AR7 #define HAVE_PREAD64 1 */ ++ ++/* Define to 1 if you have the `putprpwnam' function. */ ++/* #undef HAVE_PUTPRPWNAM */ ++ ++/* Define to 1 if you have the `pututline' function. */ ++#define HAVE_PUTUTLINE 1 ++ ++/* Define to 1 if you have the `pututxline' function. */ ++#define HAVE_PUTUTXLINE 1 ++ ++/* Define to 1 if you have the `pwrite' function. */ ++#define HAVE_PWRITE 1 ++ ++/* Define to 1 if you have the `pwrite64' function. */ ++/* AR7 #define HAVE_PWRITE64 1 */ ++ ++/* Whether CRAY int quotactl (char *spec, int request, char *arg); is ++ available */ ++/* #undef HAVE_QUOTACTL_3 */ ++ ++/* Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is ++ available */ ++/* #undef HAVE_QUOTACTL_4A */ ++ ++/* Whether int quotactl(const char *path, int cmd, int id, char *addr) is ++ available */ ++/* #undef HAVE_QUOTACTL_4B */ ++ ++/* Whether Linux quota support is available */ ++/* AR7 #define HAVE_QUOTACTL_LINUX 1 */ ++ ++/* Define to 1 if you have the `rand' function. */ ++#define HAVE_RAND 1 ++ ++/* Define to 1 if you have the `random' function. */ ++#define HAVE_RANDOM 1 ++ ++/* Define to 1 if you have the `rdchk' function. */ ++/* #undef HAVE_RDCHK */ ++ ++/* Define to 1 if you have the `readdir64' function. */ ++/* AR7 #define HAVE_READDIR64 1 */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_READLINE_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_READLINE_HISTORY_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_READLINE_READLINE_H 1 ++ ++/* Define to 1 if you have the `readlink' function. */ ++#define HAVE_READLINK 1 ++ ++/* Define to 1 if you have the `realpath' function. */ ++#define HAVE_REALPATH 1 ++ ++/* Define to 1 if you have the `removexattr' function. */ ++/* AR7 #define HAVE_REMOVEXATTR 1 */ ++ ++/* Define to 1 if you have the `rename' function. */ ++#define HAVE_RENAME 1 ++ ++/* Define to 1 if you have the `rewinddir64' function. */ ++/* #undef HAVE_REWINDDIR64 */ ++ ++/* Define to 1 if you have the `roken_getaddrinfo_hostspec' function. */ ++/* #undef HAVE_ROKEN_GETADDRINFO_HOSTSPEC */ ++ ++/* Whether current user is root */ ++/* #undef HAVE_ROOT */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_RPCSVC_NIS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_RPCSVC_YPCLNT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_RPCSVC_YP_PROT_H 1 ++ ++/* Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h */ ++/* #undef HAVE_RPC_AUTH_ERROR_CONFLICT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_RPC_NETTYPE_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_RPC_RPC_H 1 ++ ++/* Whether mkstemp is secure */ ++#define HAVE_SECURE_MKSTEMP 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SECURITY_PAM_APPL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SECURITY_PAM_MODULES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SECURITY__PAM_MACROS_H 1 ++ ++/* Define to 1 if you have the `seekdir64' function. */ ++/* #undef HAVE_SEEKDIR64 */ ++ ++/* Define to 1 if you have the `select' function. */ ++#define HAVE_SELECT 1 ++ ++/* Whether sendfile() is available */ ++/* #undef HAVE_SENDFILE */ ++ ++/* Whether sendfile64() is available */ ++/* AR7 #define HAVE_SENDFILE64 1 */ ++ ++/* Whether sendfilev() is available */ ++/* #undef HAVE_SENDFILEV */ ++ ++/* Whether sendfilev64() is available */ ++/* #undef HAVE_SENDFILEV64 */ ++ ++/* Define to 1 if you have the `setbuffer' function. */ ++#define HAVE_SETBUFFER 1 ++ ++/* Define to 1 if you have the `setenv' function. */ ++#define HAVE_SETENV 1 ++ ++/* Define to 1 if you have the `setgidx' function. */ ++/* #undef HAVE_SETGIDX */ ++ ++/* Define to 1 if you have the `setgroups' function. */ ++#define HAVE_SETGROUPS 1 ++ ++/* Define to 1 if you have the `setlinebuf' function. */ ++#define HAVE_SETLINEBUF 1 ++ ++/* Define to 1 if you have the `setlocale' function. */ ++#define HAVE_SETLOCALE 1 ++ ++/* Define to 1 if you have the `setluid' function. */ ++/* #undef HAVE_SETLUID */ ++ ++/* Define to 1 if you have the `setmntent' function. */ ++#define HAVE_SETMNTENT 1 ++ ++/* Define to 1 if you have the `setnetgrent' function. */ ++#define HAVE_SETNETGRENT 1 ++ ++/* Define to 1 if you have the `setpgid' function. */ ++#define HAVE_SETPGID 1 ++ ++/* Define to 1 if you have the `setpriv' function. */ ++/* #undef HAVE_SETPRIV */ ++ ++/* Whether the system has setresgid */ ++#define HAVE_SETRESGID 1 ++ ++/* Whether setresgid() is available */ ++#define HAVE_SETRESGID_DECL 1 ++ ++/* Whether the system has setresuid */ ++#define HAVE_SETRESUID 1 ++ ++/* Whether setresuid() is available */ ++#define HAVE_SETRESUID_DECL 1 ++ ++/* Define to 1 if you have the `setsid' function. */ ++#define HAVE_SETSID 1 ++ ++/* Define to 1 if you have the `setuidx' function. */ ++/* #undef HAVE_SETUIDX */ ++ ++/* Define to 1 if you have the `setxattr' function. */ ++/* AR7 #define HAVE_SETXATTR 1 */ ++ ++/* Define to 1 if you have the `set_auth_parameters' function. */ ++/* #undef HAVE_SET_AUTH_PARAMETERS */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SHADOW_H 1 ++ ++/* Define to 1 if you have the `shmget' function. */ ++#define HAVE_SHMGET 1 ++ ++/* Define to 1 if you have the `shm_open' function. */ ++/* #undef HAVE_SHM_OPEN */ ++ ++/* Define to 1 if you have the `sigaction' function. */ ++#define HAVE_SIGACTION 1 ++ ++/* Define to 1 if you have the `sigblock' function. */ ++#define HAVE_SIGBLOCK 1 ++ ++/* Define to 1 if you have the `sigprocmask' function. */ ++#define HAVE_SIGPROCMASK 1 ++ ++/* Define to 1 if you have the `sigset' function. */ ++#define HAVE_SIGSET 1 ++ ++/* Whether we have the atomic_t variable type */ ++#define HAVE_SIG_ATOMIC_T_TYPE 1 ++ ++/* Define to 1 if you have the `snprintf' function. */ ++#define HAVE_SNPRINTF 1 ++ ++/* Whether snprintf() is available */ ++#define HAVE_SNPRINTF_DECL 1 ++ ++/* Whether we have the variable type socklen_t */ ++#define HAVE_SOCKLEN_T_TYPE 1 ++ ++/* Whether the sockaddr_in struct has a sin_len property */ ++/* #undef HAVE_SOCK_SIN_LEN */ ++ ++/* Whether solaris ACLs are available */ ++/* #undef HAVE_SOLARIS_ACLS */ ++ ++/* Define to 1 if you have the `srand' function. */ ++#define HAVE_SRAND 1 ++ ++/* Define to 1 if you have the `srandom' function. */ ++#define HAVE_SRANDOM 1 ++ ++/* Whether stat64() is available */ ++/* AR7 #define HAVE_STAT64 1 */ ++ ++/* whether struct stat has sub-second timestamps */ ++/* AR7 #define HAVE_STAT_HIRES_TIMESTAMPS 1 */ ++ ++/* whether struct stat contains st_atim */ ++#define HAVE_STAT_ST_ATIM 1 ++ ++/* Whether the stat struct has a st_blksize property */ ++#define HAVE_STAT_ST_BLKSIZE 1 ++ ++/* Whether the stat struct has a st_block property */ ++#define HAVE_STAT_ST_BLOCKS 1 ++ ++/* whether struct stat contains st_ctim */ ++#define HAVE_STAT_ST_CTIM 1 ++ ++/* whether struct stat contains st_mtim */ ++#define HAVE_STAT_ST_MTIM 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDARG_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDINT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the `strcasecmp' function. */ ++#define HAVE_STRCASECMP 1 ++ ++/* Define to 1 if you have the `strchr' function. */ ++#define HAVE_STRCHR 1 ++ ++/* Define to 1 if you have the `strdup' function. */ ++#define HAVE_STRDUP 1 ++ ++/* Define to 1 if you have the `strerror' function. */ ++#define HAVE_STRERROR 1 ++ ++/* Define to 1 if you have the `strftime' function. */ ++#define HAVE_STRFTIME 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRINGS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRING_H 1 ++ ++/* Define to 1 if you have the `strlcat' function. */ ++/* #undef HAVE_STRLCAT */ ++ ++/* Define to 1 if you have the `strlcpy' function. */ ++/* #undef HAVE_STRLCPY */ ++ ++/* Define to 1 if you have the `strndup' function. */ ++#define HAVE_STRNDUP 1 ++ ++/* Define to 1 if you have the `strnlen' function. */ ++#define HAVE_STRNLEN 1 ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_STROPTS_H 1 */ ++ ++/* Define to 1 if you have the `strpbrk' function. */ ++#define HAVE_STRPBRK 1 ++ ++/* Define to 1 if you have the `strtoul' function. */ ++#define HAVE_STRTOUL 1 ++ ++/* Whether the 'DIR64' abstract data type is available */ ++/* #undef HAVE_STRUCT_DIR64 */ ++ ++/* Whether the 'dirent64' struct is available */ ++/* AR7 #define HAVE_STRUCT_DIRENT64 1 */ ++ ++/* Whether the flock64 struct is available */ ++/* AR7 #define HAVE_STRUCT_FLOCK64 1 */ ++ ++/* Define to 1 if `method_attrlist' is member of `struct secmethod_table'. */ ++/* #undef HAVE_STRUCT_SECMETHOD_TABLE_METHOD_ATTRLIST */ ++ ++/* Define to 1 if `method_version' is member of `struct secmethod_table'. */ ++/* #undef HAVE_STRUCT_SECMETHOD_TABLE_METHOD_VERSION */ ++ ++/* Define to 1 if `st_rdev' is member of `struct stat'. */ ++#define HAVE_STRUCT_STAT_ST_RDEV 1 ++ ++/* Whether we have struct timespec */ ++#define HAVE_STRUCT_TIMESPEC 1 ++ ++/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use ++ `HAVE_STRUCT_STAT_ST_RDEV' instead. */ ++#define HAVE_ST_RDEV 1 ++ ++/* Define to 1 if you have the `symlink' function. */ ++#define HAVE_SYMLINK 1 ++ ++/* Define to 1 if you have the `syscall' function. */ ++#define HAVE_SYSCALL 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYSCALL_H 1 ++ ++/* Define to 1 if you have the `sysconf' function. */ ++#define HAVE_SYSCONF 1 ++ ++/* Define to 1 if you have the `syslog' function. */ ++#define HAVE_SYSLOG 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYSLOG_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_ACL_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_ATTRIBUTES_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_CAPABILITY_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_CDEFS_H 1 ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++/* #undef HAVE_SYS_DIR_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_DUSTAT_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_EXTATTR_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_FCNTL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_FILIO_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_FILSYS_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_FS_S5PARAM_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_FS_VX_QUOTA_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_ID_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_IOCTL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_IPC_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_MMAN_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_MODE_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_MOUNT_H 1 ++ ++/* Define to 1 if you have the header file, and it defines `DIR'. ++ */ ++/* #undef HAVE_SYS_NDIR_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_PARAM_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_PRCTL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_PRIV_H */ ++ ++/* Whether the new lib/sysquotas.c interface can be used */ ++/* AR7 #define HAVE_SYS_QUOTAS 1 */ ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_SYS_QUOTA_H 1 */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_RESOURCE_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_SECURITY_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SELECT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SHM_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SOCKET_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_SOCKIO_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_STATFS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_STATVFS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_STAT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SYSCALL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SYSLOG_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_SYSMACROS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_TERMIO_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TIME_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TYPES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_UIO_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_UNISTD_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_UN_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_VFS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_WAIT_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* AR7 #define HAVE_SYS_XATTR_H 1 */ ++ ++/* Define to 1 if you have the `telldir64' function. */ ++/* #undef HAVE_TELLDIR64 */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_TERMIOS_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_TERMIO_H 1 ++ ++/* Define to 1 if you have the `timegm' function. */ ++/* AR7 #define HAVE_TIMEGM 1 */ ++ ++/* Whether Tru64 ACLs are available */ ++/* #undef HAVE_TRU64_ACLS */ ++ ++/* Whether crypt needs truncated salt */ ++/* #undef HAVE_TRUNCATED_SALT */ ++ ++/* Whether uint16 typedef is included by rpc/rpc.h */ ++/* #undef HAVE_UINT16_FROM_RPC_RPC_H */ ++ ++/* Whether uint32 typedef is included by rpc/rpc.h */ ++/* #undef HAVE_UINT32_FROM_RPC_RPC_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_UNISTD_H 1 ++ ++/* If we need to build with unixscoket support */ ++#define HAVE_UNIXSOCKET 1 ++ ++/* Whether UnixWare ACLs are available */ ++/* #undef HAVE_UNIXWARE_ACLS */ ++ ++/* Whether the 'unsigned char' type is available */ ++/* #undef HAVE_UNSIGNED_CHAR */ ++ ++/* Define to 1 if you have the `updwtmp' function. */ ++#define HAVE_UPDWTMP 1 ++ ++/* Define to 1 if you have the `updwtmpx' function. */ ++#define HAVE_UPDWTMPX 1 ++ ++/* Define to 1 if you have the `usleep' function. */ ++#define HAVE_USLEEP 1 ++ ++/* Whether struct utimbuf is available */ ++#define HAVE_UTIMBUF 1 ++ ++/* Define to 1 if you have the `utime' function. */ ++#define HAVE_UTIME 1 ++ ++/* Define to 1 if you have the `utimes' function. */ ++#define HAVE_UTIMES 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_UTIME_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #define HAVE_UTMPX_H 1 */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_UTMP_H 1 ++ ++/* Whether the utmp struct has a property ut_addr */ ++#define HAVE_UT_UT_ADDR 1 ++ ++/* Whether the utmp struct has a property ut_exit */ ++#define HAVE_UT_UT_EXIT 1 ++ ++/* Whether the utmp struct has a property ut_host */ ++#define HAVE_UT_UT_HOST 1 ++ ++/* Whether the utmp struct has a property ut_id */ ++#define HAVE_UT_UT_ID 1 ++ ++/* Whether the utmp struct has a property ut_name */ ++#define HAVE_UT_UT_NAME 1 ++ ++/* Whether the utmp struct has a property ut_pid */ ++#define HAVE_UT_UT_PID 1 ++ ++/* Whether the utmp struct has a property ut_time */ ++#define HAVE_UT_UT_TIME 1 ++ ++/* Whether the utmp struct has a property ut_tv */ ++#define HAVE_UT_UT_TV 1 ++ ++/* Whether the utmp struct has a property ut_type */ ++#define HAVE_UT_UT_TYPE 1 ++ ++/* Whether the utmp struct has a property ut_user */ ++#define HAVE_UT_UT_USER 1 ++ ++/* Whether the utmpx struct has a property ut_syslen */ ++/* #undef HAVE_UX_UT_SYSLEN */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_VALGRIND_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_VALGRIND_MEMCHECK_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_VALGRIND_VALGRIND_H */ ++ ++/* Define to 1 if you have the `vasprintf' function. */ ++#define HAVE_VASPRINTF 1 ++ ++/* Whether vasprintf() is available */ ++#define HAVE_VASPRINTF_DECL 1 ++ ++/* Whether va_copy() is available */ ++#define HAVE_VA_COPY 1 ++ ++/* Whether the C compiler understands volatile */ ++#define HAVE_VOLATILE 1 ++ ++/* Define to 1 if you have the `vsnprintf' function. */ ++#define HAVE_VSNPRINTF 1 ++ ++/* Whether vsnprintf() is available */ ++#define HAVE_VSNPRINTF_DECL 1 ++ ++/* Define to 1 if you have the `vsyslog' function. */ ++#define HAVE_VSYSLOG 1 ++ ++/* Define to 1 if you have the `waitpid' function. */ ++#define HAVE_WAITPID 1 ++ ++/* Define if you have working AF_LOCAL sockets */ ++#define HAVE_WORKING_AF_LOCAL 1 ++ ++/* Whether the WRFILE:-keytab is supported */ ++/* #undef HAVE_WRFILE_KEYTAB */ ++ ++/* Whether xfs quota support is available */ ++/* AR7 #define HAVE_XFS_QUOTAS 1 */ ++ ++/* Define to 1 if you have the `yp_get_default_domain' function. */ ++#define HAVE_YP_GET_DEFAULT_DOMAIN 1 ++ ++/* Define to 1 if you have the `_acl' function. */ ++/* #undef HAVE__ACL */ ++ ++/* Define to 1 if you have the `_chdir' function. */ ++/* #undef HAVE__CHDIR */ ++ ++/* Define to 1 if you have the `_close' function. */ ++/* #undef HAVE__CLOSE */ ++ ++/* Define to 1 if you have the `_closedir' function. */ ++/* #undef HAVE__CLOSEDIR */ ++ ++/* Define to 1 if you have the `_dup' function. */ ++/* #undef HAVE__DUP */ ++ ++/* Define to 1 if you have the `_dup2' function. */ ++/* #undef HAVE__DUP2 */ ++ ++/* Define to 1 if you have the `_et_list' function. */ ++/* #undef HAVE__ET_LIST */ ++ ++/* Define to 1 if you have the `_facl' function. */ ++/* #undef HAVE__FACL */ ++ ++/* Define to 1 if you have the `_fchdir' function. */ ++/* #undef HAVE__FCHDIR */ ++ ++/* Define to 1 if you have the `_fcntl' function. */ ++/* #undef HAVE__FCNTL */ ++ ++/* Define to 1 if you have the `_fork' function. */ ++/* #undef HAVE__FORK */ ++ ++/* Define to 1 if you have the `_fstat' function. */ ++/* #undef HAVE__FSTAT */ ++ ++/* Define to 1 if you have the `_fstat64' function. */ ++/* #undef HAVE__FSTAT64 */ ++ ++/* Define to 1 if you have the `_getcwd' function. */ ++/* #undef HAVE__GETCWD */ ++ ++/* Define to 1 if you have the `_getdents' function. */ ++/* #undef HAVE__GETDENTS */ ++ ++/* Define to 1 if you have the `_llseek' function. */ ++/* #undef HAVE__LLSEEK */ ++ ++/* Define to 1 if you have the `_lseek' function. */ ++/* #undef HAVE__LSEEK */ ++ ++/* Define to 1 if you have the `_lstat' function. */ ++/* #undef HAVE__LSTAT */ ++ ++/* Define to 1 if you have the `_lstat64' function. */ ++/* #undef HAVE__LSTAT64 */ ++ ++/* Define to 1 if you have the `_open' function. */ ++/* #undef HAVE__OPEN */ ++ ++/* Define to 1 if you have the `_open64' function. */ ++/* #undef HAVE__OPEN64 */ ++ ++/* Define to 1 if you have the `_opendir' function. */ ++/* #undef HAVE__OPENDIR */ ++ ++/* Define to 1 if you have the `_pread' function. */ ++/* #undef HAVE__PREAD */ ++ ++/* Define to 1 if you have the `_pread64' function. */ ++/* #undef HAVE__PREAD64 */ ++ ++/* Define to 1 if you have the `_pwrite' function. */ ++/* #undef HAVE__PWRITE */ ++ ++/* Define to 1 if you have the `_pwrite64' function. */ ++/* #undef HAVE__PWRITE64 */ ++ ++/* Define to 1 if you have the `_read' function. */ ++/* #undef HAVE__READ */ ++ ++/* Define to 1 if you have the `_readdir' function. */ ++/* #undef HAVE__READDIR */ ++ ++/* Define to 1 if you have the `_readdir64' function. */ ++/* #undef HAVE__READDIR64 */ ++ ++/* Define to 1 if you have the `_seekdir' function. */ ++/* #undef HAVE__SEEKDIR */ ++ ++/* Define to 1 if you have the `_stat' function. */ ++/* #undef HAVE__STAT */ ++ ++/* Define to 1 if you have the `_stat64' function. */ ++/* #undef HAVE__STAT64 */ ++ ++/* Define to 1 if you have the `_telldir' function. */ ++/* #undef HAVE__TELLDIR */ ++ ++/* Define to 1 if you have the `_write' function. */ ++/* #undef HAVE__WRITE */ ++ ++/* Define to 1 if you have the `__acl' function. */ ++/* #undef HAVE___ACL */ ++ ++/* Define to 1 if you have the `__chdir' function. */ ++/* #undef HAVE___CHDIR */ ++ ++/* Define to 1 if you have the `__close' function. */ ++#define HAVE___CLOSE 1 ++ ++/* Define to 1 if you have the `__closedir' function. */ ++/* #undef HAVE___CLOSEDIR */ ++ ++/* Define to 1 if you have the `__dup' function. */ ++/* #undef HAVE___DUP */ ++ ++/* Define to 1 if you have the `__dup2' function. */ ++#define HAVE___DUP2 1 ++ ++/* Define to 1 if you have the `__facl' function. */ ++/* #undef HAVE___FACL */ ++ ++/* Define to 1 if you have the `__fchdir' function. */ ++/* #undef HAVE___FCHDIR */ ++ ++/* Define to 1 if you have the `__fcntl' function. */ ++#define HAVE___FCNTL 1 ++ ++/* Define to 1 if you have the `__fork' function. */ ++#define HAVE___FORK 1 ++ ++/* Define to 1 if you have the `__fstat' function. */ ++#define HAVE___FSTAT 1 ++ ++/* Define to 1 if you have the `__fstat64' function. */ ++/* #undef HAVE___FSTAT64 */ ++ ++/* Define to 1 if you have the `__fxstat' function. */ ++#define HAVE___FXSTAT 1 ++ ++/* Define to 1 if you have the `__getcwd' function. */ ++/* #undef HAVE___GETCWD */ ++ ++/* Define to 1 if you have the `__getdents' function. */ ++/* #undef HAVE___GETDENTS */ ++ ++/* Define to 1 if you have the `__llseek' function. */ ++/* #undef HAVE___LLSEEK */ ++ ++/* Define to 1 if you have the `__lseek' function. */ ++#define HAVE___LSEEK 1 ++ ++/* Define to 1 if you have the `__lstat' function. */ ++#define HAVE___LSTAT 1 ++ ++/* Define to 1 if you have the `__lstat64' function. */ ++/* #undef HAVE___LSTAT64 */ ++ ++/* Define to 1 if you have the `__lxstat' function. */ ++#define HAVE___LXSTAT 1 ++ ++/* Define to 1 if you have the `__open' function. */ ++#define HAVE___OPEN 1 ++ ++/* Define to 1 if you have the `__open64' function. */ ++/* AR7 #define HAVE___OPEN64 1 */ ++ ++/* Define to 1 if you have the `__opendir' function. */ ++/* #undef HAVE___OPENDIR */ ++ ++/* Define to 1 if you have the `__pread' function. */ ++/* #undef HAVE___PREAD */ ++ ++/* Define to 1 if you have the `__pread64' function. */ ++/* AR7 #define HAVE___PREAD64 1 */ ++ ++/* Define to 1 if you have the `__pwrite' function. */ ++/* #undef HAVE___PWRITE */ ++ ++/* Define to 1 if you have the `__pwrite64' function. */ ++/* AR7 #define HAVE___PWRITE64 1 */ ++ ++/* Define to 1 if you have the `__read' function. */ ++#define HAVE___READ 1 ++ ++/* Define to 1 if you have the `__readdir' function. */ ++/* #undef HAVE___READDIR */ ++ ++/* Define to 1 if you have the `__readdir64' function. */ ++/* #undef HAVE___READDIR64 */ ++ ++/* Define to 1 if you have the `__seekdir' function. */ ++/* #undef HAVE___SEEKDIR */ ++ ++/* Define to 1 if you have the `__stat' function. */ ++#define HAVE___STAT 1 ++ ++/* Define to 1 if you have the `__stat64' function. */ ++/* #undef HAVE___STAT64 */ ++ ++/* Define to 1 if you have the `__sys_llseek' function. */ ++/* #undef HAVE___SYS_LLSEEK */ ++ ++/* Define to 1 if you have the `__telldir' function. */ ++/* #undef HAVE___TELLDIR */ ++ ++/* Whether __va_copy() is available */ ++/* #undef HAVE___VA_COPY */ ++ ++/* Define to 1 if you have the `__write' function. */ ++#define HAVE___WRITE 1 ++ ++/* Define to 1 if you have the `__xstat' function. */ ++#define HAVE___XSTAT 1 ++ ++/* Whether the host os is HPUX */ ++/* #undef HPUX */ ++ ++/* Whether the hpux sendfile() API is available */ ++/* #undef HPUX_SENDFILE_API */ ++ ++/* Whether to use intel spinlocks */ ++/* #undef INTEL_SPINLOCKS */ ++ ++/* Whether the host os is irix */ ++/* #undef IRIX */ ++ ++/* Whether the host os is irix6 */ ++/* #undef IRIX6 */ ++ ++/* Whether krb5_princ_realm returns krb5_realm or krb5_data */ ++/* #undef KRB5_PRINC_REALM_RETURNS_REALM */ ++ ++/* Number of arguments to ldap_set_rebind_proc */ ++/* #undef LDAP_SET_REBIND_PROC_ARGS */ ++ ++/* Whether the host os is linux */ ++#define LINUX 1 ++ ++/* Whether (linux) sendfile() is broken */ ++/* #undef LINUX_BROKEN_SENDFILE_API */ ++ ++/* Whether linux sendfile() API is available */ ++#define LINUX_SENDFILE_API 1 ++ ++/* Whether to use mips spinlocks */ ++/* #undef MIPS_SPINLOCKS */ ++ ++/* Whether MMAP is broken */ ++/* #undef MMAP_BLACKLIST */ ++ ++/* Whether the host os is NeXT v2 */ ++/* #undef NEXT2 */ ++ ++/* Define to 1 if your C compiler doesn't accept -c and -o together. */ ++/* #undef NO_MINUS_C_MINUS_O */ ++ ++/* Whether the host os is osf1 */ ++/* #undef OSF1 */ ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "" ++ ++/* Does a POSIX ACL need a mask element */ ++/* #undef POSIX_ACL_NEEDS_MASK */ ++ ++/* Whether to use powerpc spinlocks */ ++/* #undef POWERPC_SPINLOCKS */ ++ ++/* Whether pututline returns pointer */ ++#define PUTUTLINE_RETURNS_UTMP 1 ++ ++/* Whether the host os is qnx */ ++/* #undef QNX */ ++ ++/* Whether the realpath function allows NULL */ ++#define REALPATH_TAKES_NULL 1 ++ ++/* Whether the host os is reliantunix */ ++/* #undef RELIANTUNIX */ ++ ++/* Whether getpass should be replaced */ ++#define REPLACE_GETPASS 1 ++ ++/* Whether inet_ntoa should be replaced */ ++/* #undef REPLACE_INET_NTOA */ ++ ++/* Define as the return type of signal handlers (`int' or `void'). */ ++#define RETSIGTYPE void ++ ++/* Whether the host os is sco unix */ ++/* #undef SCO */ ++ ++/* Whether seekdir returns void */ ++#define SEEKDIR_RETURNS_VOID 1 ++ ++/* The size of the 'ino_t' type */ ++/* AR7 #define SIZEOF_INO_T 8 */ ++#define SIZEOF_INO_T 4 /* AR7 */ ++ ++/* The size of a `int', as computed by sizeof. */ ++#define SIZEOF_INT 4 ++ ++/* The size of a `long', as computed by sizeof. */ ++#define SIZEOF_LONG 4 ++ ++/* The size of the 'off_t' type */ ++/* AR7 #define SIZEOF_OFF_T 8 */ ++#define SIZEOF_OFF_T 4 /* AR7 */ ++ ++/* The size of a `short', as computed by sizeof. */ ++#define SIZEOF_SHORT 2 ++ ++/* Use socket wrapper library */ ++/* #undef SOCKET_WRAPPER */ ++ ++/* Whether the solaris sendfile() API is available */ ++/* #undef SOLARIS_SENDFILE_API */ ++ ++/* Whether to use sparc spinlocks */ ++/* #undef SPARC_SPINLOCKS */ ++ ++/* Whether statfs requires two arguments and struct statfs has bsize property ++ */ ++/* #undef STAT_STATFS2_BSIZE */ ++ ++/* Whether statfs requires 2 arguments and struct statfs has fsize */ ++/* #undef STAT_STATFS2_FSIZE */ ++ ++/* Whether statfs requires 2 arguments and struct fs_data is available */ ++/* #undef STAT_STATFS2_FS_DATA */ ++ ++/* Whether statfs requires 3 arguments */ ++/* #undef STAT_STATFS3_OSF1 */ ++ ++/* Whether statfs requires 4 arguments */ ++/* #undef STAT_STATFS4 */ ++ ++/* Whether statvfs() is available */ ++#define STAT_STATVFS 1 /* AR7 */ ++ ++/* Whether statvfs64() is available */ ++/* AR7 #define STAT_STATVFS64 1 */ ++ ++/* The size of a block */ ++#define STAT_ST_BLOCKSIZE 512 ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#define STDC_HEADERS 1 ++ ++/* String list of builtin modules */ ++#define STRING_STATIC_MODULES " pdb_smbpasswd pdb_tdbsam pdb_guest rpc_lsa rpc_reg rpc_lsa_ds rpc_wks rpc_svcctl rpc_net rpc_dfs rpc_srv rpc_spoolss rpc_eventlog rpc_samr idmap_tdb auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin" ++ ++/* Whether the host os is sunos4 */ ++/* #undef SUNOS4 */ ++ ++/* Whether the host os is solaris */ ++/* #undef SUNOS5 */ ++ ++/* Whether sysconf(_SC_NGROUPS_MAX) is available */ ++#define SYSCONF_SC_NGROUPS_MAX 1 ++ ++/* Whether sysconf(_SC_NPROC_ONLN) is available */ ++/* #undef SYSCONF_SC_NPROC_ONLN */ ++ ++/* Whether this is a system V system */ ++/* #undef SYSV */ ++ ++/* Define to 1 if you can safely include both and . */ ++#define TIME_WITH_SYS_TIME 1 ++ ++/* Whether the host os is unixware */ ++/* #undef UNIXWARE */ ++ ++/* Whether to use both of HPUX' crypt calls */ ++/* #undef USE_BOTH_CRYPT_CALLS */ ++ ++/* Whether seteuid() is available */ ++/* #undef USE_SETEUID */ ++ ++/* Whether setresuid() is available */ ++#define USE_SETRESUID 1 ++ ++/* Whether setreuid() is available */ ++/* #undef USE_SETREUID */ ++ ++/* Whether setuidx() is available */ ++/* #undef USE_SETUIDX */ ++ ++/* Whether to use spin locks instead of fcntl locks */ ++/* #undef USE_SPINLOCKS */ ++ ++/* Whether to include Active Directory support */ ++/* #undef WITH_ADS */ ++ ++/* Whether to include AFS clear-text auth support */ ++/* #undef WITH_AFS */ ++ ++/* Using asynchronous io */ ++/* #undef WITH_AIO */ ++ ++/* Whether to include automount support */ ++/* #undef WITH_AUTOMOUNT */ ++ ++/* Whether to include DFS support */ ++/* #undef WITH_DFS */ ++ ++/* Whether to include AFS fake-kaserver support */ ++/* #undef WITH_FAKE_KASERVER */ ++ ++/* Whether to include 2.2 compatible LDAP SAM configuration */ ++/* #undef WITH_LDAP_SAMCONFIG */ ++ ++/* Whether to include nisplus_home support */ ++/* #undef WITH_NISPLUS_HOME */ ++ ++/* Whether to include PAM support */ ++/* #undef WITH_PAM */ ++ ++/* Whether to use profiling */ ++/* #undef WITH_PROFILE */ ++ ++/* Whether to use disk quota support */ ++/* AR7 #define WITH_QUOTAS 1 */ ++ ++/* Whether to include sendfile() support */ ++#define WITH_SENDFILE 1 ++ ++/* Whether to build smbmount */ ++/* #undef WITH_SMBMOUNT */ ++ ++/* Whether to include smbwrapper support */ ++/* #undef WITH_SMBWRAPPER */ ++ ++/* Whether to include experimental syslog support */ ++/* #undef WITH_SYSLOG */ ++ ++/* Whether to include experimental utmp accounting */ ++#define WITH_UTMP 1 ++ ++/* Whether to build winbind */ ++#define WITH_WINBIND 1 ++ ++/* Define to 1 if your processor stores words with the most significant byte ++ first (like Motorola and SPARC, unlike Intel and VAX). */ ++/* #undef WORDS_BIGENDIAN */ ++ ++/* Required alignment */ ++/* #undef _ALIGNMENT_REQUIRED */ ++ ++/* File offset bits */ ++#ifdef WITH_LFS ++#define _FILE_OFFSET_BITS 64 /* Large File Support */ ++#endif ++ ++/* Whether to use GNU libc extensions */ ++#define _GNU_SOURCE 1 ++ ++/* Whether to use HPUX extensions */ ++/* #undef _HPUX_SOURCE */ ++ ++/* Whether to enable large file support */ ++/* AR7 #define _LARGEFILE64_SOURCE 1 */ ++ ++/* Whether to enable large file support */ ++/* #undef _LARGE_FILES */ ++ ++/* Maximum alignment */ ++/* #undef _MAX_ALIGNMENT */ ++ ++/* Whether to enable POSIX support */ ++/* #undef _POSIX_C_SOURCE */ ++ ++/* Whether to use POSIX compatible functions */ ++/* #undef _POSIX_SOURCE */ ++ ++/* Whether to enable System V compatibility */ ++/* #undef _SYSV */ ++ ++/* Define to 1 if type `char' is unsigned and you are not using gcc. */ ++#ifndef __CHAR_UNSIGNED__ ++/* # undef __CHAR_UNSIGNED__ */ ++#endif ++ ++/* Whether to build auth_builtin as shared module */ ++/* #undef auth_builtin_init */ ++ ++/* Whether to build auth_domain as shared module */ ++/* #undef auth_domain_init */ ++ ++/* Whether to build auth_rhosts as shared module */ ++/* #undef auth_rhosts_init */ ++ ++/* Whether to build auth_sam as shared module */ ++/* #undef auth_sam_init */ ++ ++/* Whether to build auth_server as shared module */ ++/* #undef auth_server_init */ ++ ++/* Whether to build auth_unix as shared module */ ++/* #undef auth_unix_init */ ++ ++/* Whether to build auth_winbind as shared module */ ++/* #undef auth_winbind_init */ ++ ++/* Whether to build charset_CP437 as shared module */ ++#define charset_CP437_init init_module ++ ++/* Whether to build charset_CP850 as shared module */ ++#define charset_CP850_init init_module ++ ++/* Whether to build charset_macosxfs as shared module */ ++/* #undef charset_macosxfs_init */ ++ ++/* Whether to build charset_weird as shared module */ ++/* #undef charset_weird_init */ ++ ++/* Define to empty if `const' does not conform to ANSI C. */ ++/* #undef const */ ++ ++/* Define to `int' if doesn't define. */ ++/* #undef gid_t */ ++ ++/* Whether to build idmap_ad as shared module */ ++/* #undef idmap_ad_init */ ++ ++/* Whether to build idmap_ldap as shared module */ ++/* #undef idmap_ldap_init */ ++ ++/* Whether to build idmap_rid as shared module */ ++/* #undef idmap_rid_init */ ++ ++/* Whether to build idmap_tdb as shared module */ ++/* #undef idmap_tdb_init */ ++ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#ifndef __cplusplus ++/* #undef inline */ ++#endif ++ ++/* Define to `unsigned' if does not define. */ ++/* #undef ino_t */ ++ ++/* Define to `off_t' if does not define. */ ++/* #undef loff_t */ ++ ++/* Define to `int' if does not define. */ ++/* #undef mode_t */ ++ ++/* Define to `long' if does not define. */ ++/* #undef off_t */ ++ ++/* Define to `loff_t' if does not define. */ ++#define offset_t loff_t ++ ++/* Whether to build pdb_guest as shared module */ ++/* #undef pdb_guest_init */ ++ ++/* Whether to build pdb_ldap as shared module */ ++/* #undef pdb_ldap_init */ ++ ++/* Whether to build pdb_mysql as shared module */ ++/* #undef pdb_mysql_init */ ++ ++/* Whether to build pdb_pgsql as shared module */ ++/* #undef pdb_pgsql_init */ ++ ++/* Whether to build pdb_smbpasswd as shared module */ ++/* #undef pdb_smbpasswd_init */ ++ ++/* Whether to build pdb_tdbsam as shared module */ ++/* #undef pdb_tdbsam_init */ ++ ++/* Whether to build pdb_xml as shared module */ ++/* #undef pdb_xml_init */ ++ ++/* Define to `int' if does not define. */ ++/* #undef pid_t */ ++ ++/* Whether to build rpc_dfs as shared module */ ++/* #undef rpc_dfs_init */ ++ ++/* Whether to build rpc_echo as shared module */ ++/* #undef rpc_echo_init */ ++ ++/* Whether to build rpc_eventlog as shared module */ ++/* #undef rpc_eventlog_init */ ++ ++/* Whether to build rpc_lsa_ds as shared module */ ++/* #undef rpc_lsa_ds_init */ ++ ++/* Whether to build rpc_lsa as shared module */ ++/* #undef rpc_lsa_init */ ++ ++/* Whether to build rpc_net as shared module */ ++/* #undef rpc_net_init */ ++ ++/* Whether to build rpc_reg as shared module */ ++/* #undef rpc_reg_init */ ++ ++/* Whether to build rpc_samr as shared module */ ++/* #undef rpc_samr_init */ ++ ++/* Whether to build rpc_spoolss as shared module */ ++/* #undef rpc_spoolss_init */ ++ ++/* Whether to build rpc_srv as shared module */ ++/* #undef rpc_srv_init */ ++ ++/* Whether to build rpc_svcctl as shared module */ ++/* #undef rpc_svcctl_init */ ++ ++/* Whether to build rpc_wks as shared module */ ++/* #undef rpc_wks_init */ ++ ++/* Define to `unsigned' if does not define. */ ++/* #undef size_t */ ++ ++/* Define to `int' if does not define. */ ++/* #undef ssize_t */ ++ ++/* Static init functions */ ++/* AR7 #define static_init_auth { auth_rhosts_init(); auth_sam_init(); auth_unix_init(); auth_winbind_init(); auth_server_init(); auth_domain_init(); auth_builtin_init();} */ ++#define static_init_auth { auth_sam_init(); auth_builtin_init();} ++ ++/* Static init functions */ ++#define static_init_charset {} ++ ++/* Static init functions */ ++#define static_init_idmap { idmap_tdb_init();} ++ ++/* Static init functions */ ++#define static_init_pdb { pdb_smbpasswd_init(); pdb_tdbsam_init(); /* pdb_guest_init(); */} ++ ++/* Static init functions */ ++/* AR7 #define static_init_rpc { rpc_lsa_init(); rpc_reg_init(); rpc_lsa_ds_init(); rpc_wks_init(); rpc_svcctl_init(); rpc_net_init(); rpc_dfs_init(); rpc_srv_init(); rpc_spoolss_init(); rpc_eventlog_init(); rpc_samr_init();} */ ++#define static_init_rpc { rpc_lsa_init(); /* rpc_reg_init();*/ rpc_lsa_ds_init(); rpc_wks_init(); /* rpc_svcctl_init(); */ rpc_net_init(); rpc_dfs_init(); /* rpc_srv_init(); */ /* rpc_eventlog_init(); */ /* rpc_samr_init(); */} ++ ++/* Static init functions */ ++#define static_init_vfs {} ++ ++/* Define to `int' if doesn't define. */ ++/* #undef uid_t */ ++ ++/* Whether to build vfs_afsacl as shared module */ ++/* #undef vfs_afsacl_init */ ++ ++/* Whether to build vfs_audit as shared module */ ++#define vfs_audit_init init_module ++ ++/* Whether to build vfs_cap as shared module */ ++#define vfs_cap_init init_module ++ ++/* Whether to build vfs_catia as shared module */ ++/* #undef vfs_catia_init */ ++ ++/* Whether to build vfs_default_quota as shared module */ ++#define vfs_default_quota_init init_module ++ ++/* Whether to build vfs_expand_msdfs as shared module */ ++#define vfs_expand_msdfs_init init_module ++ ++/* Whether to build vfs_extd_audit as shared module */ ++#define vfs_extd_audit_init init_module ++ ++/* Whether to build vfs_fake_perms as shared module */ ++#define vfs_fake_perms_init init_module ++ ++/* Whether to build vfs_full_audit as shared module */ ++#define vfs_full_audit_init init_module ++ ++/* Whether to build vfs_netatalk as shared module */ ++#define vfs_netatalk_init init_module ++ ++/* Whether to build vfs_readonly as shared module */ ++#define vfs_readonly_init init_module ++ ++/* Whether to build vfs_recycle as shared module */ ++#define vfs_recycle_init init_module ++ ++/* Whether to build vfs_shadow_copy as shared module */ ++#define vfs_shadow_copy_init init_module ++ ++/* Define to `unsigned short' if does not define. */ ++/* #undef wchar_t */ +diff -urN samba-3.0.24.orig/source/include/debug.h samba-3.0.24/source/include/debug.h +--- samba-3.0.24.orig/source/include/debug.h 2006-04-20 04:29:39.000000000 +0200 ++++ samba-3.0.24/source/include/debug.h 2007-08-07 09:38:18.000000000 +0200 +@@ -162,6 +162,26 @@ + * will remove the extra conditional test. + */ + ++#if 1 /* AR7 */ ++ ++#define DEBUGLVL( level ) (0) ++#define DEBUGLVLC( dbgc_class, level ) (0) ++#ifndef SAMBA_DEBUG ++#define DEBUG( level, body ) (0) ++#define Log(x) (0) ++#else ++void _fDebug(char *fmt, ...); ++#define DEBUG( level, body ) _fDebug body ++#define Log(x) _fLog x ++void _fLog(char *fmt, ...); ++#endif ++ ++#define DEBUGC( dbgc_class, level, body ) (0) ++#define DEBUGADD( level, body ) (0) ++#define DEBUGADDC( dbgc_class, level, body ) (0) ++ ++#else ++ + #define DEBUGLVL( level ) \ + ( ((level) <= MAX_DEBUG_LEVEL) && \ + ((DEBUGLEVEL_CLASS[ DBGC_CLASS ] >= (level))|| \ +@@ -208,8 +228,13 @@ + DEBUGLEVEL_CLASS[ DBGC_ALL ] >= (level)) ) \ + && (dbgtext body) ) + ++#endif /* AR7 */ ++ ++ + /* Print a separator to the debug log. */ + #define DEBUGSEP(level)\ + DEBUG((level),("===============================================================\n")) + ++ ++ + #endif +diff -urN samba-3.0.24.orig/source/include/local.h samba-3.0.24/source/include/local.h +--- samba-3.0.24.orig/source/include/local.h 2006-04-20 04:29:39.000000000 +0200 ++++ samba-3.0.24/source/include/local.h 2007-07-17 13:19:05.000000000 +0200 +@@ -16,7 +16,8 @@ + only important messages. This gives *much* smaller binaries + */ + #ifndef MAX_DEBUG_LEVEL +-#define MAX_DEBUG_LEVEL 1000 ++/* AR7 #define MAX_DEBUG_LEVEL 1000 */ ++#define MAX_DEBUG_LEVEL 0 + #endif + + /* This defines the section name in the configuration file that will contain */ +@@ -49,7 +50,8 @@ + #define MAX_DIRECTORY_HANDLES 2048 + + /* maximum number of file caches per smbd */ +-#define MAX_WRITE_CACHES 10 ++/* #define MAX_WRITE_CACHES 10 */ ++#define MAX_WRITE_CACHES 2 /* AVM */ + + /* define what facility to use for syslog */ + #ifndef SYSLOG_FACILITY +diff -urN samba-3.0.24.orig/source/include/smb.h samba-3.0.24/source/include/smb.h +--- samba-3.0.24.orig/source/include/smb.h 2007-02-04 19:59:23.000000000 +0100 ++++ samba-3.0.24/source/include/smb.h 2007-08-07 09:38:18.000000000 +0200 +@@ -1436,6 +1436,7 @@ + #define FLAGS2_LONG_PATH_COMPONENTS 0x0001 + #define FLAGS2_EXTENDED_ATTRIBUTES 0x0002 + #define FLAGS2_SMB_SECURITY_SIGNATURES 0x0004 ++#define FLAGS2_UNKNOWN_BIT4 0x0010 + #define FLAGS2_IS_LONG_NAME 0x0040 + #define FLAGS2_EXTENDED_SECURITY 0x0800 + #define FLAGS2_DFS_PATHNAMES 0x1000 +@@ -1499,7 +1500,8 @@ + + /* Remote architectures we know about. */ + enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, +- RA_WIN2K, RA_WINXP, RA_WIN2K3, RA_SAMBA, RA_CIFSFS}; ++ RA_WIN2K, RA_WINXP, RA_WIN2K3, RA_VISTA, ++ RA_SAMBA, RA_CIFSFS}; + + /* case handling */ + enum case_handling {CASE_LOWER,CASE_UPPER}; +diff -urN samba-3.0.24.orig/source/include/smb_macros.h samba-3.0.24/source/include/smb_macros.h +--- samba-3.0.24.orig/source/include/smb_macros.h 2006-04-20 04:29:39.000000000 +0200 ++++ samba-3.0.24/source/include/smb_macros.h 2007-08-07 09:38:18.000000000 +0200 +@@ -310,7 +310,6 @@ + #if defined(PARANOID_MALLOC_CHECKER) + + #define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem_((ps),sizeof(type),(count)) +-#define PRS_ALLOC_MEM_VOID(ps, size) prs_alloc_mem_((ps),(size),1) + + /* Get medieval on our ass about malloc.... */ + +@@ -354,7 +353,6 @@ + #define __location__ __FILE__ ":" __LINESTR__ + + #define PRS_ALLOC_MEM(ps, type, count) (type *)prs_alloc_mem((ps),sizeof(type),(count)) +-#define PRS_ALLOC_MEM_VOID(ps, size) prs_alloc_mem((ps),(size),1) + + /* Regular malloc code. */ + +diff -urN samba-3.0.24.orig/source/lib/dummysmbd.c samba-3.0.24/source/lib/dummysmbd.c +--- samba-3.0.24.orig/source/lib/dummysmbd.c 2006-04-20 04:29:23.000000000 +0200 ++++ samba-3.0.24/source/lib/dummysmbd.c 2007-08-07 09:38:18.000000000 +0200 +@@ -38,3 +38,9 @@ + { + return False; + } ++ ++NTSTATUS can_delete_directory(struct connection_struct *conn, ++ const char *dirname) ++{ ++ return NT_STATUS_OK; ++} +diff -urN samba-3.0.24.orig/source/lib/fsusage.c samba-3.0.24/source/lib/fsusage.c +--- samba-3.0.24.orig/source/lib/fsusage.c 2005-02-25 18:59:32.000000000 +0100 ++++ samba-3.0.24/source/lib/fsusage.c 2007-07-17 13:19:05.000000000 +0200 +@@ -51,6 +51,8 @@ + #define CONVERT_BLOCKS(B) adjust_blocks ((SMB_BIG_UINT)(B), (SMB_BIG_UINT)fsd.f_fsize, (SMB_BIG_UINT)512) + struct statfs fsd; + ++ ++// #error STAT_STATFS3_OSF1 + if (statfs (path, &fsd, sizeof (struct statfs)) != 0) + return -1; + #endif /* STAT_STATFS3_OSF1 */ +@@ -59,6 +61,7 @@ + #define CONVERT_BLOCKS(B) adjust_blocks ((SMB_BIG_UINT)(B), (SMB_BIG_UINT)1024, (SMB_BIG_UINT)512) + struct fs_data fsd; + ++// #error STAT_STATFS2_FS_DATA + if (statfs (path, &fsd) != 1) + return -1; + +@@ -70,6 +73,7 @@ + #define CONVERT_BLOCKS(B) adjust_blocks ((SMB_BIG_UINT)(B), (SMB_BIG_UINT)fsd.f_bsize, (SMB_BIG_UINT)512) + struct statfs fsd; + ++// #error STAT_STATFS2_FS_BSIZE + if (statfs (path, &fsd) < 0) + return -1; + +@@ -93,6 +97,7 @@ + + struct statfs fsd; + ++// #error STAT_STATFS2_FSIZE + if (statfs (path, &fsd) < 0) + return -1; + #endif /* STAT_STATFS2_FSIZE */ +@@ -114,6 +119,7 @@ + + struct statfs fsd; + ++// #error STAT_STATFS4 + if (statfs (path, &fsd, sizeof fsd, 0) < 0) + return -1; + /* Empirically, the block counts on most SVR3 and SVR3-derived +@@ -127,9 +133,11 @@ + adjust_blocks ((SMB_BIG_UINT)(B), fsd.f_frsize ? (SMB_BIG_UINT)fsd.f_frsize : (SMB_BIG_UINT)fsd.f_bsize, (SMB_BIG_UINT)512) + + #ifdef STAT_STATVFS64 ++// #error STAT_STATVFS64 + struct statvfs64 fsd; + if (statvfs64(path, &fsd) < 0) return -1; + #else ++// #error STAT_STATVFS + struct statvfs fsd; + if (statvfs(path, &fsd) < 0) return -1; + #endif +@@ -139,6 +147,7 @@ + #endif /* STAT_STATVFS */ + + #ifndef CONVERT_BLOCKS ++#error no STAT_STATxxx defined - we have no dfree code! + /* we don't have any dfree code! */ + return -1; + #else +diff -urN samba-3.0.24.orig/source/lib/iconv.c samba-3.0.24/source/lib/iconv.c +--- samba-3.0.24.orig/source/lib/iconv.c 2007-02-04 19:59:17.000000000 +0100 ++++ samba-3.0.24/source/lib/iconv.c 2007-07-17 13:19:05.000000000 +0200 +@@ -388,7 +388,10 @@ + + while (*inbytesleft >= 2 && *outbytesleft >= 1) { + (*outbuf)[0] = (*inbuf)[0]; +- if ((*inbuf)[1]) ir_count++; ++ if ((*inbuf)[1]) { ++ ir_count++; ++ (*outbuf)[0] = '_'; // AR7 ++ } + (*inbytesleft) -= 2; + (*outbytesleft) -= 1; + (*inbuf) += 2; +diff -urN samba-3.0.24.orig/source/lib/pidfile.c samba-3.0.24/source/lib/pidfile.c +--- samba-3.0.24.orig/source/lib/pidfile.c 2007-02-04 19:59:17.000000000 +0100 ++++ samba-3.0.24/source/lib/pidfile.c 2007-07-17 13:19:05.000000000 +0200 +@@ -82,19 +82,22 @@ + { + int fd; + char buf[20]; +- char *short_configfile; + pstring name; + pstring pidFile; + pid_t pid; + ++#if 0 /* AVM */ + /* Add a suffix to the program name if this is a process with a + * none default configuration file name. */ + if (strcmp( CONFIGFILE, dyn_CONFIGFILE) == 0) { + strncpy( name, program_name, sizeof( name)-1); + } else { +- short_configfile = strrchr( dyn_CONFIGFILE, '/'); ++ char *short_configfile = strrchr( dyn_CONFIGFILE, '/'); + slprintf( name, sizeof( name)-1, "%s-%s", program_name, short_configfile+1); + } ++#else ++ strncpy( name, program_name, sizeof( name)-1); ++#endif + + slprintf(pidFile, sizeof(pidFile)-1, "%s/%s.pid", lp_piddir(), name); + +diff -urN samba-3.0.24.orig/source/lib/smbrun.c samba-3.0.24/source/lib/smbrun.c +--- samba-3.0.24.orig/source/lib/smbrun.c 2006-04-20 04:29:23.000000000 +0200 ++++ samba-3.0.24/source/lib/smbrun.c 2007-08-07 09:38:18.000000000 +0200 +@@ -55,7 +55,7 @@ + outfd (or discard it if outfd is NULL). + ****************************************************************************/ + +-int smbrun(const char *cmd, int *outfd) ++static int smbrun_internal(const char *cmd, int *outfd, BOOL sanitize) + { + pid_t pid; + uid_t uid = current_user.ut.uid; +@@ -173,13 +173,36 @@ + } + #endif + +- execl("/bin/sh","sh","-c",cmd,NULL); ++ { ++ const char *newcmd = sanitize ? escape_shell_string(cmd) : cmd; ++ if (!newcmd) { ++ exit(82); ++ } ++ execl("/bin/sh","sh","-c",newcmd,NULL); ++ } + + /* not reached */ +- exit(82); ++ exit(83); + return 1; + } + ++/**************************************************************************** ++ Use only in known safe shell calls (printing). ++****************************************************************************/ ++ ++int smbrun_no_sanitize(const char *cmd, int *outfd) ++{ ++ return smbrun_internal(cmd, outfd, False); ++} ++ ++/**************************************************************************** ++ By default this now sanitizes shell expansion. ++****************************************************************************/ ++ ++int smbrun(const char *cmd, int *outfd) ++{ ++ return smbrun_internal(cmd, outfd, True); ++} + + /**************************************************************************** + run a command being careful about uid/gid handling and putting the output in +@@ -302,7 +325,7 @@ + #endif + + execl("/bin/sh", "sh", "-c", cmd, NULL); +- ++ + /* not reached */ + exit(82); + return 1; +diff -urN samba-3.0.24.orig/source/lib/util.c samba-3.0.24/source/lib/util.c +--- samba-3.0.24.orig/source/lib/util.c 2007-02-04 19:59:17.000000000 +0100 ++++ samba-3.0.24/source/lib/util.c 2007-08-07 09:38:18.000000000 +0200 +@@ -300,7 +300,11 @@ + char *p; + if ((p = getenv("TMPDIR"))) + return p; ++#if 1 /* AR7 */ ++ return "/var/tmp"; ++#else + return "/tmp"; ++#endif + } + + /**************************************************************************** +@@ -2182,6 +2186,9 @@ + case RA_WIN2K3: + fstrcpy(remote_arch, "Win2K3"); + break; ++ case RA_VISTA: ++ fstrcpy(remote_arch, "Vista"); ++ break; + case RA_SAMBA: + fstrcpy(remote_arch,"Samba"); + break; +diff -urN samba-3.0.24.orig/source/lib/util_sec.c samba-3.0.24/source/lib/util_sec.c +--- samba-3.0.24.orig/source/lib/util_sec.c 2007-02-04 19:59:17.000000000 +0100 ++++ samba-3.0.24/source/lib/util_sec.c 2007-08-07 09:38:18.000000000 +0200 +@@ -286,28 +286,6 @@ + } + + /**************************************************************************** +- Lightweight become root - no group change. +-****************************************************************************/ +- +-void become_root_uid_only(void) +-{ +- save_re_uid(); +- set_effective_uid(0); +-} +- +-/**************************************************************************** +- Lightweight unbecome root - no group change. Expects we are root already, +- saves errno across call boundary. +-****************************************************************************/ +- +-void unbecome_root_uid_only(void) +-{ +- int saved_errno = errno; +- restore_re_uid_fromroot(); +- errno = saved_errno; +-} +- +-/**************************************************************************** + save the real and effective gid for later restoration. Used by the + getgroups code + ****************************************************************************/ +diff -urN samba-3.0.24.orig/source/lib/util_str.c samba-3.0.24/source/lib/util_str.c +--- samba-3.0.24.orig/source/lib/util_str.c 2007-02-04 19:59:17.000000000 +0100 ++++ samba-3.0.24/source/lib/util_str.c 2007-08-07 09:38:18.000000000 +0200 +@@ -680,14 +680,14 @@ + + for(i = 0; i < len; i++) { + int val = (src[i] & 0xff); +- if (isupper_ascii(val) || islower_ascii(val) || isdigit(val) || strchr_m(other_safe_chars, val)) ++ if (isupper_ascii(val) || islower_ascii(val) || isdigit(val) || strchr_m(other_safe_chars, val)) { + dest[i] = src[i]; +- else ++ } else { + dest[i] = '_'; ++ } + } + + dest[i] = '\0'; +- + return dest; + } + +@@ -2426,3 +2426,165 @@ + return True; + } + ++ ++/******************************************************************* ++ Add a shell escape character '\' to any character not in a known list ++ of characters. UNIX charset format. ++*******************************************************************/ ++ ++#define INCLUDE_LIST "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_/ \t.," ++#define INSIDE_DQUOTE_LIST "$`\n\"\\" ++ ++char *escape_shell_string(const char *src) ++{ ++ size_t srclen = strlen(src); ++ char *ret = SMB_MALLOC((srclen * 2) + 1); ++ char *dest = ret; ++ BOOL in_s_quote = False; ++ BOOL in_d_quote = False; ++ BOOL next_escaped = False; ++ ++ if (!ret) { ++ return NULL; ++ } ++ ++ while (*src) { ++ size_t c_size = next_mb_char_size(src); ++ ++ if (c_size == (size_t)-1) { ++ SAFE_FREE(ret); ++ return NULL; ++ } ++ ++ if (c_size > 1) { ++ memcpy(dest, src, c_size); ++ src += c_size; ++ dest += c_size; ++ next_escaped = False; ++ continue; ++ } ++ ++ /* ++ * Deal with backslash escaped state. ++ * This only lasts for one character. ++ */ ++ ++ if (next_escaped) { ++ *dest++ = *src++; ++ next_escaped = False; ++ continue; ++ } ++ ++ /* ++ * Deal with single quote state. The ++ * only thing we care about is exiting ++ * this state. ++ */ ++ ++ if (in_s_quote) { ++ if (*src == '\'') { ++ in_s_quote = False; ++ } ++ *dest++ = *src++; ++ continue; ++ } ++ ++ /* ++ * Deal with double quote state. The most ++ * complex state. We must cope with \, meaning ++ * possibly escape next char (depending what it ++ * is), ", meaning exit this state, and possibly ++ * add an \ escape to any unprotected character ++ * (listed in INSIDE_DQUOTE_LIST). ++ */ ++ ++ if (in_d_quote) { ++ if (*src == '\\') { ++ /* ++ * Next character might be escaped. ++ * We have to peek. Inside double ++ * quotes only INSIDE_DQUOTE_LIST ++ * characters are escaped by a \. ++ */ ++ ++ char nextchar; ++ ++ c_size = next_mb_char_size(&src[1]); ++ if (c_size == (size_t)-1) { ++ SAFE_FREE(ret); ++ return NULL; ++ } ++ if (c_size > 1) { ++ /* ++ * Don't escape the next char. ++ * Just copy the \. ++ */ ++ *dest++ = *src++; ++ continue; ++ } ++ ++ nextchar = src[1]; ++ ++ if (nextchar && strchr(INSIDE_DQUOTE_LIST, (int)nextchar)) { ++ next_escaped = True; ++ } ++ *dest++ = *src++; ++ continue; ++ } ++ ++ if (*src == '\"') { ++ /* Exit double quote state. */ ++ in_d_quote = False; ++ *dest++ = *src++; ++ continue; ++ } ++ ++ /* ++ * We know the character isn't \ or ", ++ * so escape it if it's any of the other ++ * possible unprotected characters. ++ */ ++ ++ if (strchr(INSIDE_DQUOTE_LIST, (int)*src)) { ++ *dest++ = '\\'; ++ } ++ *dest++ = *src++; ++ continue; ++ } ++ ++ /* ++ * From here to the end of the loop we're ++ * not in the single or double quote state. ++ */ ++ ++ if (*src == '\\') { ++ /* Next character must be escaped. */ ++ next_escaped = True; ++ *dest++ = *src++; ++ continue; ++ } ++ ++ if (*src == '\'') { ++ /* Go into single quote state. */ ++ in_s_quote = True; ++ *dest++ = *src++; ++ continue; ++ } ++ ++ if (*src == '\"') { ++ /* Go into double quote state. */ ++ in_d_quote = True; ++ *dest++ = *src++; ++ continue; ++ } ++ ++ /* Check if we need to escape the character. */ ++ ++ if (!strchr(INCLUDE_LIST, (int)*src)) { ++ *dest++ = '\\'; ++ } ++ *dest++ = *src++; ++ } ++ *dest++ = '\0'; ++ return ret; ++} +diff -urN samba-3.0.24.orig/source/libads/authdata.c samba-3.0.24/source/libads/authdata.c +--- samba-3.0.24.orig/source/libads/authdata.c 2006-02-23 17:29:34.000000000 +0100 ++++ samba-3.0.24/source/libads/authdata.c 2007-08-07 09:38:18.000000000 +0200 +@@ -120,10 +120,14 @@ + return False; + + if (UNMARSHALLING(ps)) { +- array->krb_sid_and_attrs = PRS_ALLOC_MEM(ps, KRB_SID_AND_ATTRS, num); +- if (!array->krb_sid_and_attrs) { +- DEBUG(3, ("No memory available\n")); +- return False; ++ if (num) { ++ array->krb_sid_and_attrs = PRS_ALLOC_MEM(ps, KRB_SID_AND_ATTRS, num); ++ if (!array->krb_sid_and_attrs) { ++ DEBUG(3, ("No memory available\n")); ++ return False; ++ } ++ } else { ++ array->krb_sid_and_attrs = NULL; + } + } + +@@ -184,10 +188,14 @@ + return False; + + if (UNMARSHALLING(ps)) { +- array->group_membership = PRS_ALLOC_MEM(ps, GROUP_MEMBERSHIP, num); +- if (!array->group_membership) { +- DEBUG(3, ("No memory available\n")); +- return False; ++ if (num) { ++ array->group_membership = PRS_ALLOC_MEM(ps, GROUP_MEMBERSHIP, num); ++ if (!array->group_membership) { ++ DEBUG(3, ("No memory available\n")); ++ return False; ++ } ++ } else { ++ array->group_membership = NULL; + } + } + +@@ -456,10 +464,14 @@ + return False; + + if (UNMARSHALLING(ps) && length) { +- data->signature.buffer = PRS_ALLOC_MEM(ps, uint8, siglen); +- if (!data->signature.buffer) { +- DEBUG(3, ("No memory available\n")); +- return False; ++ if (siglen) { ++ data->signature.buffer = PRS_ALLOC_MEM(ps, uint8, siglen); ++ if (!data->signature.buffer) { ++ DEBUG(3, ("No memory available\n")); ++ return False; ++ } ++ } else { ++ data->signature.buffer = NULL; + } + } + +--- samba-3.0.24/source/libsmb/clifile.c.orig 2009-12-21 07:53:20.000000000 +0100 ++++ samba-3.0.24/source/libsmb/clifile.c 2009-12-21 07:51:10.000000000 +0100 +@@ -21,6 +21,8 @@ + + #include "includes.h" + ++#ifndef AVM_SMALLER ++ + /**************************************************************************** + Hard/Symlink a file (UNIX extensions). + Creates new name (sym)linked to oldname. +@@ -71,6 +73,8 @@ + return True; + } + ++#endif /* AVM_SMALLER */ ++ + /**************************************************************************** + Map standard UNIX permissions onto wire representations. + ****************************************************************************/ +@@ -165,6 +169,8 @@ + } + } + ++#ifndef AVM_SMALLER ++ + /**************************************************************************** + Do a POSIX getfacl (UNIX extensions). + ****************************************************************************/ +@@ -785,6 +791,8 @@ + return SVAL(cli->inbuf,smb_vwv2); + } + ++#endif /* AVM_SMALLER */ ++ + /**************************************************************************** + Close a file. + ****************************************************************************/ +@@ -813,6 +821,8 @@ + + + ++#ifndef AVM_SMALLER ++ + /**************************************************************************** + send a lock with a specified locktype + this is used for testing LOCKING_ANDX_CANCEL_LOCK +@@ -1760,3 +1770,6 @@ + + return cli_get_ea_list(cli, setup, param, 6, ctx, pnum_eas, pea_list); + } ++ ++#endif /* AVM_SMALLER */ ++ + +diff -urN samba-3.0.24.orig/source/libsmb/namequery.c samba-3.0.24/source/libsmb/namequery.c +--- samba-3.0.24.orig/source/libsmb/namequery.c 2007-02-04 19:59:20.000000000 +0100 ++++ samba-3.0.24/source/libsmb/namequery.c 2007-07-17 13:19:05.000000000 +0200 +@@ -1024,6 +1024,7 @@ + static BOOL resolve_ads(const char *name, int name_type, + struct ip_service **return_iplist, int *return_count) + { ++#ifdef HAVE_ADS + int i, j; + NTSTATUS status; + TALLOC_CTX *ctx; +@@ -1100,6 +1101,9 @@ + + talloc_destroy(ctx); + return True; ++#else /* HAVE_ADS */ ++ return False; ++#endif + } + + /******************************************************************* +diff -urN samba-3.0.24.orig/source/libsmb/namequery_dc.c samba-3.0.24/source/libsmb/namequery_dc.c +--- samba-3.0.24.orig/source/libsmb/namequery_dc.c 2006-04-20 04:29:25.000000000 +0200 ++++ samba-3.0.24/source/libsmb/namequery_dc.c 2007-07-17 13:19:05.000000000 +0200 +@@ -31,6 +31,9 @@ + + static BOOL ads_dc_name(const char *domain, const char *realm, struct in_addr *dc_ip, fstring srv_name) + { ++#if 1 /* AR7 */ ++ return False; ++#else + ADS_STRUCT *ads; + + if (!realm && strequal(domain, lp_workgroup())) +@@ -63,6 +66,7 @@ + srv_name, inet_ntoa(*dc_ip))); + + return True; ++#endif /* AR7 */ + } + + /**************************************************************************** +diff -urN samba-3.0.24.orig/source/locking/locking.c samba-3.0.24/source/locking/locking.c +--- samba-3.0.24.orig/source/locking/locking.c 2007-02-04 19:59:23.000000000 +0100 ++++ samba-3.0.24/source/locking/locking.c 2007-08-07 09:38:18.000000000 +0200 +@@ -1166,6 +1166,11 @@ + return NT_STATUS_ACCESS_DENIED; + } + ++ /* Don't allow delete on close for non-empty directories. */ ++ if (fsp->is_directory) { ++ return can_delete_directory(fsp->conn, fsp->fsp_name); ++ } ++ + return NT_STATUS_OK; + } + +diff -urN samba-3.0.24.orig/source/Makefile samba-3.0.24/source/Makefile +--- samba-3.0.24.orig/source/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ samba-3.0.24/source/Makefile 2008-02-28 11:21:14.000000000 +0100 +@@ -0,0 +1,1719 @@ ++######################################################################### ++# Makefile.in for Samba - rewritten for autoconf support ++# Copyright Andrew Tridgell 1992-1998 ++# Copyright (C) 2001 by Martin Pool ++# Copyright Andrew Bartlett 2002 ++# Copyright (C) 2003 Jim McDonough ++# Copyright (C) 2002-2003 Jelmer Vernooij ++########################################################################### ++ ++SOURCEROOT=$(shell pwd)/../../../.. ++SHAREDLIBS=$(SOURCEROOT)/sharedlibs ++ ++include ${SHAREDLIBS}/ar7def.mk ++ ++# AR7 ++# prefix=/usr/local/samba ++prefix=/var/samba ++exec_prefix=${prefix} ++ ++# AR7 ++# LIBS= -lcrypt -lresolv -lnsl -ldl ++LIBS= -lcrypt -ldl -lpthread ++# AR7 ++# CC=gcc ++CC=${TARGET}-gcc ++RANLIB = ${TARGET}-ranlib ++AR = ${TARGET}-ar ++ ++SHLD=${CC} ${CFLAGS} ++# AR7 ++# CFLAGS= -O -D_SAMBA_BUILD_ ++CFLAGS= -Os -D_SAMBA_BUILD_ -DAVM_NO_PRINTING ++CFLAGS+= -DAVM_NO_POPT ++CFLAGS+= -DAVM_SMALLER ++ ++# uncomment this to get debugs ++# CFLAGS += -DSAMBA_DEBUG ++ ++# AR7 ++# CPPFLAGS= -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE ++CPPFLAGS= -D_GNU_SOURCE ++EXEEXT= ++LDFLAGS= ++AR=ar ++LDSHFLAGS=-shared -Wl,-Bsymbolic ++WINBIND_NSS_LDSHFLAGS=-shared -Wl,-Bsymbolic ++AWK=gawk ++DYNEXP=-Wl,--export-dynamic ++PYTHON= ++PERL=/usr/bin/perl ++ ++ifeq ($(WITH_LFS),yes) ++CFLAGS+= -DWITH_LFS ++CPPFLAGS+= -DWITH_LFS ++endif ++ ++TERMLDFLAGS= ++# AR7 ++# TERMLIBS=-lreadline -lncurses ++TERMLIBS= ++PRINT_LIBS= ++AUTH_LIBS=-lcrypt ++ACL_LIBS= ++PASSDB_LIBS= ++IDMAP_LIBS= ++KRB5LIBS= ++LDAP_LIBS= ++ ++INSTALLCMD=/usr/bin/install -c ++INSTALLCLIENTCMD_SH=$(INSTALLCMD) ++INSTALLCLIENTCMD_A=: ++ ++ ++srcdir=`pwd` ++builddir=`pwd` ++SHELL=/bin/sh ++DESTDIR=/ ++ ++# XXX: Perhaps this should be /bin/sh instead -- apparently autoconf ++# will search for a POSIX-compliant shell, and that might not be ++# /bin/sh on some platforms. I guess it's not a big problem -- mbp ++ ++# See the autoconf manual "Installation Directory Variables" for a ++# discussion of the subtle use of these variables. ++ ++# AR7 ++# BASEDIR= /usr/local/samba ++BASEDIR= /var/samba ++BINDIR = ${exec_prefix}/bin ++# sbindir is mapped to bindir when compiling SAMBA in 2.0.x compatibility mode. ++SBINDIR = ${exec_prefix}/sbin ++LIBDIR = ${prefix}/lib ++VFSLIBDIR = $(LIBDIR)/vfs ++PDBLIBDIR = $(LIBDIR)/pdb ++RPCLIBDIR = $(LIBDIR)/rpc ++IDMAPLIBDIR = $(LIBDIR)/idmap ++CHARSETLIBDIR = $(LIBDIR)/charset ++AUTHLIBDIR = $(LIBDIR)/auth ++CONFIGDIR = ${LIBDIR} ++VARDIR = ${prefix}/var ++MANDIR = ${prefix}/man ++DATADIR = ${prefix}/share ++ ++# The permissions to give the executables ++INSTALLPERMS = 0755 ++ ++# set these to where to find various files ++# These can be overridden by command line switches (see smbd(8)) ++# or in smb.conf (see smb.conf(5)) ++LOGFILEBASE = ${VARDIR} ++CONFIGFILE = $(CONFIGDIR)/smb.conf ++LMHOSTSFILE = $(CONFIGDIR)/lmhosts ++ ++# This is where smbpasswd et al go ++PRIVATEDIR = ${prefix}/private ++ ++SMB_PASSWD_FILE = $(PRIVATEDIR)/smbpasswd ++PRIVATE_DIR = $(PRIVATEDIR) ++ ++# This is where SWAT images and help files go ++SWATDIR = ${prefix}/swat ++ ++# the directory where lock files go ++LOCKDIR = ${VARDIR}/locks ++ ++# the directory where pid files go ++PIDDIR = ${VARDIR}/locks ++ ++LIBSMBCLIENT=bin/libsmbclient.a bin/libsmbclient.so ++LIBSMBCLIENT_MAJOR=0 ++LIBSMBCLIENT_MINOR=1 ++ ++LIBSMBSHAREMODES=bin/libsmbsharemodes.a bin/libsmbsharemodes.so ++LIBSMBSHAREMODES_MAJOR=0 ++LIBSMBSHAREMODES_MINOR=1 ++ ++ ++FLAGS1 = $(CFLAGS) -I./popt -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I. $(CPPFLAGS) -I$(srcdir) -I$(srcdir)/tdb ++FLAGS2 = ++FLAGS3 = ++FLAGS4 = ++FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) ++FLAGS = $(ISA) $(FLAGS5) ++ ++PASSWD_FLAGS = -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" -DPRIVATE_DIR=\"$(PRIVATE_DIR)\" ++PATH_FLAGS1 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DSBINDIR=\"$(SBINDIR)\" ++PATH_FLAGS2 = $(PATH_FLAGS1) -DBINDIR=\"$(BINDIR)\" -DDRIVERFILE=\"$(DRIVERFILE)\" ++PATH_FLAGS3 = $(PATH_FLAGS2) -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" ++PATH_FLAGS4 = $(PATH_FLAGS3) -DSWATDIR=\"$(SWATDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\" ++PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" \ ++ -DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"so\" ++PATH_FLAGS6 = $(PATH_FLAGS5) -DCONFIGDIR=\"$(CONFIGDIR)\" ++PATH_FLAGS = $(PATH_FLAGS6) $(PASSWD_FLAGS) ++ ++# Note that all executable programs now provide for an optional executable suffix. ++ ++SBIN_PROGS = bin/smbd bin/nmbd bin/swat bin/winbindd$(EXEEXT) ++ ++BIN_PROGS1 = bin/smbclient bin/net bin/smbspool \ ++ bin/testparm bin/smbstatus ++BIN_PROGS2 = bin/smbcontrol bin/smbtree bin/tdbbackup \ ++ bin/nmblookup bin/pdbedit bin/tdbdump \ ++ bin/tdbtool ++BIN_PROGS3 = bin/smbpasswd bin/rpcclient bin/smbcacls \ ++ bin/profiles bin/ntlm_auth \ ++ bin/smbcquotas ++ ++TORTURE_PROGS = bin/smbtorture bin/msgtest \ ++ bin/masktest bin/locktest \ ++ bin/locktest2 bin/nsstest bin/vfstest ++ ++BIN_PROGS = $(BIN_PROGS1) $(BIN_PROGS2) $(BIN_PROGS3) bin/wbinfo$(EXEEXT) ++ ++EVERYTHING_PROGS = bin/debug2html bin/smbfilter bin/talloctort \ ++ bin/log2pcap ++ ++SHLIBS = nsswitch/libnss_winbind.so nsswitch/libnss_wins.so libsmbclient libsmbsharemodes ++ ++SCRIPTS = $(srcdir)/script/smbtar $(builddir)/script/findsmb ++ ++VFS_MODULES = bin/recycle.so bin/audit.so bin/extd_audit.so bin/full_audit.so bin/netatalk.so bin/fake_perms.so bin/default_quota.so bin/readonly.so bin/cap.so bin/expand_msdfs.so bin/shadow_copy.so ++PDB_MODULES = ++RPC_MODULES = ++IDMAP_MODULES = ++CHARSET_MODULES = bin/CP850.so bin/CP437.so ++AUTH_MODULES = ++MODULES = $(VFS_MODULES) $(PDB_MODULES) $(RPC_MODULES) $(IDMAP_MODULES) $(CHARSET_MODULES) $(AUTH_MODULES) ++ ++###################################################################### ++# object file lists ++###################################################################### ++ ++TDBBASE_OBJ = tdb/tdb.o tdb/spinlock.o ++ ++TDB_OBJ = $(TDBBASE_OBJ) tdb/tdbutil.o tdb/tdbback.o ++ ++SMBLDAP_OBJ = ++ ++VERSION_OBJ = lib/version.o ++ ++DOSERR_OBJ = libsmb/doserr.o ++ ++SNPRINTF_OBJ = lib/snprintf.o ++ ++WBCOMMON_OBJ = nsswitch/wb_common.o ++ ++AFS_OBJ = lib/afs.o ++ ++AFS_SETTOKEN_OBJ = lib/afs_settoken.o ++ ++SERVER_MUTEX_OBJ = lib/server_mutex.o ++ ++ERRORMAP_OBJ = libsmb/errormap.o ++ ++PASSCHANGE_OBJ = libsmb/passchange.o ++ ++SOCKET_WRAPPER_OBJ = lib/socket_wrapper.o ++ ++RPC_PARSE_OBJ0 = rpc_parse/parse_prs.o rpc_parse/parse_misc.o ++ ++LIB_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \ ++ lib/getsmbpass.o lib/interface.o lib/md4.o \ ++ lib/interfaces.o lib/pidfile.o lib/replace.o lib/replace1.o \ ++ lib/signal.o lib/system.o lib/sendfile.o lib/time.o \ ++ lib/ufc.o lib/genrand.o lib/username.o \ ++ lib/util_pw.o lib/access.o lib/smbrun.o \ ++ lib/bitmap.o lib/crc32.o $(SNPRINTF_OBJ) lib/dprintf.o \ ++ lib/xfile.o lib/wins_srv.o \ ++ lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_uuid.o \ ++ lib/util_unistr.o lib/util_file.o lib/data_blob.o \ ++ lib/util.o lib/util_sock.o lib/sock_exec.o lib/util_sec.o \ ++ lib/talloc.o lib/substitute.o lib/fsusage.o \ ++ lib/ms_fnmatch.o lib/select.o lib/messages.o \ ++ lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \ ++ lib/md5.o lib/hmacmd5.o lib/iconv.o \ ++ nsswitch/wb_client.o $(WBCOMMON_OBJ) \ ++ lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \ ++ lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \ ++ lib/module.o lib/ldap_escape.o \ ++ lib/privileges.o lib/secdesc.o lib/secace.o lib/secacl.o \ ++ lib/arc4.o lib/sharesec.o lib/events.o lib/util_nscd.o ++ ++LIB_NONSMBD_OBJ = $(LIB_OBJ) lib/dummysmbd.o lib/dummyroot.o ++ ++READLINE_OBJ = lib/readline.o ++ ++# Also depends on $(SECRETS_OBJ) $(LIBSAMBA_OBJ) ++# Be sure to include them into your application ++ ++POPT_LIB_OBJ = lib/popt_common.o ++ ++UBIQX_OBJ = ubiqx/ubi_BinTree.o ubiqx/ubi_Cache.o ubiqx/ubi_SplayTree.o \ ++ ubiqx/ubi_dLinkList.o ubiqx/ubi_sLinkList.o ++ ++PARAM_OBJ = dynconfig.o param/loadparm.o param/params.o ++ ++KRBCLIENT_OBJ = libads/kerberos.o libads/ads_status.o ++ ++LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o libads/sasl.o \ ++ libads/krb5_setpw.o libads/ldap_user.o \ ++ libads/ads_struct.o libads/kerberos_keytab.o \ ++ libads/disp_sec.o libads/ads_utils.o libads/ldap_utils.o \ ++ libads/authdata.o ++ ++LIBADS_SERVER_OBJ = libads/util.o libads/kerberos_verify.o ++ ++SECRETS_OBJ = passdb/secrets.o passdb/machine_sid.o ++ ++LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \ ++ libsmb/namequery.o libsmb/conncache.o ++ ++LIBSAMBA_OBJ = libsmb/nterr.o libsmb/smbdes.o libsmb/smbencrypt.o libsmb/ntlm_check.o \ ++ libsmb/ntlmssp.o libsmb/ntlmssp_parse.o libsmb/ntlmssp_sign.o ++ ++LIBSMB_OBJ = \ ++ libsmb/clientgen.o \ ++ libsmb/cliconnect.o \ ++ libsmb/clirap.o \ ++ libsmb/clistr.o \ ++ libsmb/clitrans.o \ ++ libsmb/clifile.o \ ++ lib/util_seaccess.o \ ++ libsmb/clikrb5.o \ ++ libsmb/clispnego.o \ ++ libsmb/asn1.o \ ++ libsmb/clierror.o \ ++ libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \ ++ libsmb/clioplock.o $(ERRORMAP_OBJ) \ ++ $(DOSERR_OBJ) \ ++ $(RPC_PARSE_OBJ1) $(LIBSAMBA_OBJ) $(LIBNMB_OBJ) ++ ++# LIBSMB_OBJ = \ ++# libsmb/clientgen.o \ ++# libsmb/cliconnect.o \ ++# libsmb/clifile.o \ ++# libsmb/clikrb5.o libsmb/clispnego.o libsmb/asn1.o \ ++# libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \ ++# libsmb/clireadwrite.o libsmb/clilist.o libsmb/cliprint.o \ ++# libsmb/clitrans.o libsmb/clisecdesc.o libsmb/clidgram.o \ ++# libsmb/clistr.o lib/util_seaccess.o \ ++# libsmb/cliquota.o libsmb/clifsinfo.o libsmb/clidfs.o \ ++# libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \ ++# libsmb/clioplock.o $(ERRORMAP_OBJ) libsmb/clirap2.o \ ++# $(DOSERR_OBJ) \ ++# $(RPC_PARSE_OBJ1) $(LIBSAMBA_OBJ) $(LIBNMB_OBJ) ++ ++ ++LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \ ++ rpc_client/cli_netlogon.o rpc_client/cli_srvsvc.o \ ++ rpc_client/cli_wkssvc.o rpc_client/cli_dfs.o \ ++ rpc_client/cli_reg.o $(RPC_CLIENT_OBJ) \ ++ rpc_client/cli_spoolss.o rpc_client/cli_spoolss_notify.o \ ++ rpc_client/cli_ds.o rpc_client/cli_echo.o \ ++ rpc_client/cli_shutdown.o rpc_client/cli_svcctl.o ++ ++REGOBJS_OBJ = registry/reg_objects.o ++ ++REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o \ ++ registry/reg_db.o registry/reg_eventlog.o registry/reg_shares.o \ ++ registry/reg_util.o registry/reg_dynamic.o ++ ++RPC_LSA_OBJ = \ ++ ++# 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_SAMR_OBJ = \ ++ rpc_server/srv_samr_util.o ++ ++# rpc_server/srv_samr.o ++# rpc_server/srv_samr_nt.o ++ ++REGFIO_OBJ = registry/regfio.o ++ ++RPC_REG_OBJ = \ ++ ++# 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_SVC_OBJ = \ ++ rpc_server/srv_srvsvc.o \ ++ rpc_server/srv_srvsvc_nt.o ++ ++ ++ ++RPC_WKS_OBJ = \ ++ rpc_server/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o ++ ++RPC_SVCCTL_OBJ = \ ++ ++# rpc_server/srv_svcctl.o rpc_server/srv_svcctl_nt.o \ ++# services/svc_spoolss.o services/svc_rcinit.o services/services_db.o ++ ++RPC_DFS_OBJ = \ ++ ++# 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_EVENTLOG_OBJ = \ ++ ++# rpc_server/srv_eventlog.o rpc_server/srv_eventlog_nt.o ++ ++RPC_PIPE_OBJ = \ ++ rpc_server/srv_pipe_hnd.o \ ++ rpc_server/srv_pipe.o \ ++ rpc_server/srv_lsa_hnd.o ++ ++# rpc_server/srv_util.o ++ ++ ++RPC_ECHO_OBJ = rpc_server/srv_echo.o rpc_server/srv_echo_nt.o ++ ++RPC_SERVER_OBJ = $(RPC_LSA_OBJ) $(RPC_REG_OBJ) $(RPC_LSA_DS_OBJ) $(RPC_WKS_OBJ) $(RPC_SVCCTL_OBJ) $(RPC_NETLOG_OBJ) $(RPC_DFS_OBJ) $(RPC_SVC_OBJ) $(RPC_EVENTLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_PIPE_OBJ) ++ ++# this includes only the low level parse code, not stuff ++# that requires knowledge of security contexts ++RPC_PARSE_OBJ1 = $(RPC_PARSE_OBJ0) rpc_parse/parse_sec.o ++ ++RPC_PARSE_OBJ = \ ++ rpc_parse/parse_rpc.o \ ++ rpc_parse/parse_lsa.o \ ++ rpc_parse/parse_net.o \ ++ rpc_parse/parse_wks.o rpc_parse/parse_ds.o \ ++ rpc_parse/parse_spoolss.o \ ++ rpc_parse/parse_dfs.o \ ++ rpc_parse/parse_echo.o rpc_parse/parse_shutdown.o \ ++ rpc_parse/parse_buffer.o $(REGOBJS_OBJ) \ ++ rpc_parse/parse_srv.o ++ ++# rpc_parse/parse_eventlog.o \ ++# rpc_parse/parse_svcctl.o \ ++# rpc_parse/parse_reg.o ++# rpc_parse/parse_samr.o ++ ++ ++RPC_CLIENT_OBJ = rpc_client/cli_pipe.o ++ ++LOCKING_OBJ = locking/locking.o locking/brlock.o locking/posix.o ++ ++PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o ++ ++PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \ ++ passdb/pdb_compat.o \ ++ passdb/lookup_sid.o \ ++ passdb/login_cache.o passdb/pdb_smbpasswd.o passdb/pdb_tdb.o \ ++ lib/system_smbd.o \ ++ passdb/lookup_sid.o passdb/util_builtin.o \ ++ passdb/util_wellknown.o passdb/util_unixsids.o ++ ++XML_OBJ = passdb/pdb_xml.o ++MYSQL_OBJ = passdb/pdb_mysql.o ++PGSQL_OBJ = passdb/pdb_pgsql.o ++DEVEL_HELP_WEIRD_OBJ = modules/weird.o ++CP850_OBJ = modules/CP850.o ++CP437_OBJ = modules/CP437.o ++CHARSET_MACOSXFS_OBJ = modules/charset_macosxfs.o ++ ++GROUPDB_OBJ = groupdb/mapping.o ++ ++PROFILE_OBJ = profile/profile.o ++PROFILES_OBJ = utils/profiles.o ++ ++OPLOCK_OBJ = smbd/oplock.o smbd/oplock_irix.o smbd/oplock_linux.o ++ ++NOTIFY_OBJ = smbd/notify.o smbd/notify_hash.o smbd/notify_kernel.o ++ ++VFS_AUDIT_OBJ = modules/vfs_audit.o ++VFS_EXTD_AUDIT_OBJ = modules/vfs_extd_audit.o ++VFS_FULL_AUDIT_OBJ = modules/vfs_full_audit.o ++VFS_FAKE_PERMS_OBJ = modules/vfs_fake_perms.o ++VFS_RECYCLE_OBJ = modules/vfs_recycle.o ++VFS_NETATALK_OBJ = modules/vfs_netatalk.o ++VFS_DEFAULT_QUOTA_OBJ = modules/vfs_default_quota.o ++VFS_READONLY_OBJ = modules/vfs_readonly.o modules/getdate.o ++VFS_CAP_OBJ = modules/vfs_cap.o ++VFS_EXPAND_MSDFS_OBJ = modules/vfs_expand_msdfs.o ++VFS_SHADOW_COPY_OBJ = modules/vfs_shadow_copy.o ++VFS_AFSACL_OBJ = modules/vfs_afsacl.o ++VFS_CATIA_OBJ = modules/vfs_catia.o ++ ++PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o ++ ++SLCACHE_OBJ = libsmb/samlogon_cache.o ++ ++DCUTIL_OBJ = libsmb/namequery_dc.o ++ ++# libsmb/trustdom_cache.o ++# libsmb/trusts_util.o ++ ++AUTH_BUILTIN_OBJ = auth/auth_builtin.o ++AUTH_DOMAIN_OBJ = auth/auth_domain.o ++AUTH_SAM_OBJ = auth/auth_sam.o ++AUTH_RHOSTS_OBJ = auth/auth_rhosts.o ++AUTH_SERVER_OBJ = auth/auth_server.o ++AUTH_UNIX_OBJ = auth/auth_unix.o ++AUTH_WINBIND_OBJ = auth/auth_winbind.o ++ ++AUTH_OBJ = auth/auth.o $(AUTH_SAM_OBJ) $(AUTH_BUILTIN_OBJ) auth/auth_util.o auth/auth_compat.o \ ++ auth/auth_ntlmssp.o \ ++ $(PLAINTEXT_AUTH_OBJ) $(SLCACHE_OBJ) $(DCUTIL_OBJ) ++ ++# AUTH_OBJ = auth/auth.o $(AUTH_RHOSTS_OBJ) $(AUTH_SAM_OBJ) $(AUTH_UNIX_OBJ) $(AUTH_WINBIND_OBJ) $(AUTH_SERVER_OBJ) $(AUTH_DOMAIN_OBJ) $(AUTH_BUILTIN_OBJ) auth/auth_util.o auth/auth_compat.o \ ++# auth/auth_ntlmssp.o \ ++# $(PLAINTEXT_AUTH_OBJ) $(SLCACHE_OBJ) $(DCUTIL_OBJ) ++ ++MANGLE_OBJ = smbd/mangle.o smbd/mangle_hash.o smbd/mangle_map.o smbd/mangle_hash2.o ++ ++SMBD_OBJ_MAIN = smbd/server.o ++ ++BUILDOPT_OBJ = smbd/build_options.o ++ ++SMBD_OBJ_SRV = smbd/files.o smbd/chgpasswd.o smbd/connection.o \ ++ smbd/utmp.o smbd/session.o \ ++ smbd/dfree.o smbd/dir.o smbd/password.o smbd/conn.o smbd/fileio.o \ ++ smbd/message.o smbd/nttrans.o \ ++ smbd/reply.o smbd/sesssetup.o smbd/trans2.o smbd/uid.o \ ++ smbd/dosmode.o smbd/filename.o smbd/open.o smbd/close.o \ ++ smbd/blocking.o smbd/sec_ctx.o smbd/srvstr.o \ ++ smbd/vfs.o smbd/vfs-wrap.o smbd/statcache.o \ ++ smbd/posix_acls.o lib/sysacls.o $(SERVER_MUTEX_OBJ) \ ++ smbd/process.o smbd/service.o smbd/error.o \ ++ smbd/fake_file.o \ ++ smbd/msdfs.o \ ++ smbd/aio.o \ ++ $(MANGLE_OBJ) \ ++ smbd/negprot.o \ ++ smbd/ipc.o \ ++ smbd/lanman.o \ ++ smbd/change_trust_pw.o \ ++ smbd/pipes.o \ ++ smbd/share_access.o \ ++ smbd/statvfs.o \ ++ smbd/map_username.o ++ ++ ++SMBD_OBJ_BASE = $(PARAM_OBJ) $(SMBD_OBJ_SRV) $(LIBSMB_OBJ) \ ++ $(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) $(SECRETS_OBJ) \ ++ $(LOCKING_OBJ) $(PASSDB_OBJ) $(PROFILE_OBJ) \ ++ $(LIB_OBJ) $(OPLOCK_OBJ) \ ++ $(NOTIFY_OBJ) $(GROUPDB_OBJ) $(AUTH_OBJ) \ ++ libads/ads_status.o ++ ++# $(REGISTRY_OBJ) ++# $(LIBMSRPC_OBJ) ++ ++PRINTING_OBJ = 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 ++ ++PRINTBASE_OBJ = printing/notify.o printing/printing_db.o ++ ++PRINTBACKEND_OBJ = 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 \ ++ nmbd/nmbd_become_lmb.o nmbd/nmbd_browserdb.o \ ++ nmbd/nmbd_browsesync.o nmbd/nmbd_elections.o \ ++ nmbd/nmbd_incomingdgrams.o nmbd/nmbd_incomingrequests.o \ ++ nmbd/nmbd_lmhosts.o nmbd/nmbd_logonnames.o nmbd/nmbd_mynames.o \ ++ nmbd/nmbd_namelistdb.o nmbd/nmbd_namequery.o \ ++ nmbd/nmbd_nameregister.o nmbd/nmbd_namerelease.o \ ++ nmbd/nmbd_nodestatus.o nmbd/nmbd_packets.o \ ++ nmbd/nmbd_processlogon.o nmbd/nmbd_responserecordsdb.o \ ++ nmbd/nmbd_sendannounce.o nmbd/nmbd_serverlistdb.o \ ++ nmbd/nmbd_subnetdb.o nmbd/nmbd_winsproxy.o nmbd/nmbd_winsserver.o \ ++ nmbd/nmbd_workgroupdb.o nmbd/nmbd_synclists.o ++ ++NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \ ++ $(KRBCLIENT_OBJ) $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(SECRETS_OBJ) $(POPT_LIB_OBJ) ++ ++WREPL_OBJ1 = ++ ++WREPL_OBJ = $(WREPL_OBJ1) $(PARAM_OBJ) $(UBIQX_OBJ) \ ++ $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) \ ++ $(LIBSAMBA_OBJ) ++ ++SWAT_OBJ1 = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \ ++ web/swat.o web/neg_lang.o ++ ++SWAT_OBJ = $(SWAT_OBJ1) $(PARAM_OBJ) $(PRINTING_OBJ) $(LIBSMB_OBJ) \ ++ $(LOCKING_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(GROUPDB_OBJ) $(PLAINTEXT_AUTH_OBJ) \ ++ $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_OBJ) \ ++ $(PASSCHANGE_OBJ) ++ ++SMBSH_OBJ = smbwrapper/smbsh.o smbwrapper/shared.o \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) ++ ++STATUS_OBJ = utils/status.o $(LOCKING_OBJ) $(PARAM_OBJ) \ ++ $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \ ++ $(SECRETS_OBJ) $(LIBSAMBA_OBJ) $(ERRORMAP_OBJ) ++ ++ ++SMBCONTROL_OBJ = utils/smbcontrol.o $(LOCKING_OBJ) $(PARAM_OBJ) \ ++ $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \ ++ $(SECRETS_OBJ) $(LIBSAMBA_OBJ) \ ++ $(PRINTBASE_OBJ) $(ERRORMAP_OBJ) ++ ++SMBTREE_OBJ = utils/smbtree.o $(PARAM_OBJ) \ ++ $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(LIBSMB_OBJ) \ ++ $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) ++ ++TESTPARM_OBJ = utils/testparm.o \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \ ++ $(SECRETS_OBJ) $(LIBSAMBA_OBJ) ++ ++SMBPASSWD_OBJ = utils/smbpasswd.o $(PASSCHANGE_OBJ) $(PARAM_OBJ) $(SECRETS_OBJ) \ ++ $(LIBSMB_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ)\ ++ $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \ ++ $(SMBLDAP_OBJ) $(RPC_PARSE_OBJ) $(LIBMSRPC_OBJ) ++ ++PDBEDIT_OBJ = utils/pdbedit.o $(PARAM_OBJ) $(PASSDB_OBJ) $(LIBSAMBA_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(GROUPDB_OBJ) $(SECRETS_OBJ) \ ++ $(POPT_LIB_OBJ) $(SMBLDAP_OBJ) libsmb/asn1.o ++ ++SMBGET_OBJ = utils/smbget.o $(POPT_LIB_OBJ) $(LIBSMBCLIENT_OBJ) ++ ++RPCCLIENT_OBJ1 = rpcclient/rpcclient.o rpcclient/cmd_lsarpc.o \ ++ rpcclient/cmd_samr.o rpcclient/cmd_spoolss.o \ ++ rpcclient/cmd_netlogon.o rpcclient/cmd_srvsvc.o \ ++ rpcclient/cmd_dfs.o rpcclient/cmd_reg.o \ ++ rpcclient/cmd_ds.o \ ++ rpcclient/cmd_echo.o rpcclient/cmd_shutdown.o ++ ++RPCCLIENT_OBJ = $(RPCCLIENT_OBJ1) \ ++ $(PARAM_OBJ) $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(LIBMSRPC_OBJ) \ ++ $(READLINE_OBJ) $(GROUPDB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIBADS_OBJ) $(SECRETS_OBJ) $(POPT_LIB_OBJ) \ ++ $(SMBLDAP_OBJ) $(DCUTIL_OBJ) ++ ++PAM_WINBIND_PICOBJ = nsswitch/pam_winbind.po \ ++ nsswitch/wb_common.po lib/replace1.po \ ++ lib/snprintf.po ++ ++SMBW_OBJ1 = smbwrapper/smbw.o \ ++ smbwrapper/smbw_dir.o smbwrapper/smbw_stat.o \ ++ smbwrapper/realcalls.o smbwrapper/shared.o \ ++ smbwrapper/smbw_cache.o ++ ++SMBW_OBJ = $(SMBW_OBJ1) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(PARAM_OBJ) \ ++ $(LIB_NONSMBD_OBJ) ++ ++SMBWRAPPER_OBJ1 = smbwrapper/wrapped.o ++ ++SMBWRAPPER_OBJ = $(SMBW_OBJ) $(SMBWRAPPER_OBJ1) ++ ++LIBSMBCLIENT_OBJ = libsmb/libsmbclient.o libsmb/libsmb_compat.o \ ++ libsmb/libsmb_cache.o \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIBMSRPC_OBJ) $(RPC_PARSE_OBJ) \ ++ $(SECRETS_OBJ) $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) ++ ++LIBSMBSHAREMODES_OBJ = libsmb/smb_share_modes.o tdb/tdb.o tdb/spinlock.o ++# This shared library is intended for linking with unit test programs ++# to test Samba internals. It's called libbigballofmud.so to ++# discourage casual usage. ++ ++LIBBIGBALLOFMUD_MAJOR = 0 ++ ++LIBBIGBALLOFMUD_OBJ = $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(UBIQX_OBJ) $(SECRETS_OBJ) \ ++ $(LIBSMB_OBJ) $(LIBMSRPC_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ) \ ++ $(GROUPDB_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ) ++ ++LIBBIGBALLOFMUD_PICOBJS = $(LIBBIGBALLOFMUD_OBJ:.o=.po) ++ ++CLIENT_OBJ1 = client/client.o client/clitar.o ++ ++CLIENT_OBJ = $(CLIENT_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \ ++ $(READLINE_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) ++ ++NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_help.o \ ++ utils/net_rap.o utils/net_rpc.o utils/net_rpc_samsync.o \ ++ utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o \ ++ utils/net_cache.o utils/net_groupmap.o utils/net_idmap.o \ ++ utils/net_status.o utils/net_rpc_printer.o utils/net_rpc_rights.o \ ++ utils/net_rpc_service.o utils/net_rpc_registry.o ++ ++NET_OBJ = $(NET_OBJ1) $(PARAM_OBJ) $(SECRETS_OBJ) $(LIBSMB_OBJ) \ ++ $(RPC_PARSE_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(LIBMSRPC_OBJ) $(IDMAP_OBJ) \ ++ $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) $(POPT_LIB_OBJ) \ ++ $(SMBLDAP_OBJ) $(DCUTIL_OBJ) $(SERVER_MUTEX_OBJ) \ ++ $(AFS_OBJ) $(AFS_SETTOKEN_OBJ) $(PRINTERDB_OBJ) $(REGFIO_OBJ) ++ ++CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(SECRETS_OBJ) ++ ++MOUNT_OBJ = client/smbmount.o \ ++ $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++MNT_OBJ = client/smbmnt.o $(VERSION_OBJ) $(SNPRINTF_OBJ) ++ ++UMOUNT_OBJ = client/smbumount.o ++ ++NMBLOOKUP_OBJ = utils/nmblookup.o $(PARAM_OBJ) $(LIBNMB_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) $(LIBSAMBA_OBJ) ++ ++SMBTORTURE_OBJ1 = torture/torture.o torture/nbio.o torture/scanner.o torture/utable.o \ ++ torture/denytest.o torture/mangle_test.o ++ ++SMBTORTURE_OBJ = $(SMBTORTURE_OBJ1) $(PARAM_OBJ) \ ++ $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++MASKTEST_OBJ = torture/masktest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++MSGTEST_OBJ = torture/msgtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++LOCKTEST_OBJ = torture/locktest.o $(PARAM_OBJ) $(LOCKING_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++NSSTEST_OBJ = torture/nsstest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OBJ) ++ ++SMBICONV_OBJ = $(PARAM_OBJ) torture/smbiconv.o $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) $(SECRETS_OBJ) $(LIBSAMBA_OBJ) ++ ++LOG2PCAP_OBJ = utils/log2pcaphex.o ++ ++LOCKTEST2_OBJ = torture/locktest2.o $(PARAM_OBJ) $(LOCKING_OBJ) $(LIBSMB_OBJ) \ ++ $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(SECRETS_OBJ) ++ ++SMBCACLS_OBJ = utils/smbcacls.o $(PARAM_OBJ) $(LIBSMB_OBJ) \ ++ $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \ ++ $(PASSDB_OBJ) $(GROUPDB_OBJ) $(LIBMSRPC_OBJ) $(SECRETS_OBJ) \ ++ $(POPT_LIB_OBJ) $(DCUTIL_OBJ) $(LIBADS_OBJ) $(SMBLDAP_OBJ) ++ ++SMBCQUOTAS_OBJ = utils/smbcquotas.o $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \ ++ $(PARAM_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \ ++ $(LIBMSRPC_OBJ) $(SECRETS_OBJ) $(POPT_LIB_OBJ) \ ++ $(PASSDB_OBJ) $(SMBLDAP_OBJ) $(GROUPDB_OBJ) ++ ++TALLOCTORT_OBJ = lib/talloctort.o $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) libsmb/nterr.o ++ ++RPCTORTURE_OBJ = torture/rpctorture.o \ ++ rpcclient/display.o \ ++ rpcclient/cmd_lsarpc.o \ ++ rpcclient/cmd_wkssvc.o \ ++ rpcclient/cmd_samr.o \ ++ rpcclient/cmd_srvsvc.o \ ++ rpcclient/cmd_netlogon.o \ ++ $(PARAM_OBJ) $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \ ++ $(RPC_CLIENT_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_GET_SET_OBJ) ++ ++DEBUG2HTML_OBJ = utils/debug2html.o ubiqx/debugparse.o ++ ++SMBFILTER_OBJ = utils/smbfilter.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(SECRETS_OBJ) \ ++ $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) ++ ++PROTO_OBJ = $(SMBD_OBJ_MAIN) \ ++ $(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(SWAT_OBJ1) $(LIB_OBJ) $(LIBSMB_OBJ) \ ++ $(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \ ++ $(LIBMSRPC_OBJ) \ ++ $(RPC_PIPE_OBJ) $(RPC_PARSE_OBJ) $(KRBCLIENT_OBJ) \ ++ $(AUTH_OBJ) $(PARAM_OBJ) $(LOCKING_OBJ) $(SECRETS_OBJ) \ ++ $(PRINTING_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) $(NOTIFY_OBJ) \ ++ $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \ ++ $(AUTH_SAM_OBJ) $(REGISTRY_OBJ) $(POPT_LIB_OBJ) \ ++ $(RPC_LSA_OBJ) $(RPC_NETLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_REG_OBJ) $(RPC_LSA_DS_OBJ) \ ++ $(RPC_SVC_OBJ) $(RPC_WKS_OBJ) $(RPC_DFS_OBJ) $(RPC_SPOOLSS_OBJ) \ ++ $(RPC_ECHO_OBJ) $(RPC_SVCCTL_OBJ) $(RPC_EVENTLOG_OBJ) $(SMBLDAP_OBJ) \ ++ $(IDMAP_OBJ) libsmb/spnego.o $(PASSCHANGE_OBJ) ++ ++WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \ ++ $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) ++ ++WINBIND_WINS_NSS_PICOBJS = $(WINBIND_WINS_NSS_OBJ:.o=.po) ++ ++PICOBJS = $(SMBWRAPPER_OBJ:.o=.po) ++LIBSMBCLIENT_PICOBJS = $(LIBSMBCLIENT_OBJ:.o=.po) ++LIBSMBSHAREMODES_PICOBJS = $(LIBSMBSHAREMODES_OBJ:.o=.po) ++ ++PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \ ++ pam_smbpass/pam_smb_acct.o pam_smbpass/support.o \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(SECRETS_OBJ) $(SMBLDAP_OBJ) $(LIBSAMBA_OBJ) ++ ++PAM_SMBPASS_PICOOBJ = $(PAM_SMBPASS_OBJ_0:.o=.po) ++ ++IDMAP_OBJ = sam/idmap.o sam/idmap_util.o sam/idmap_tdb.o ++ ++WINBINDD_OBJ1 = \ ++ nsswitch/winbindd.o \ ++ nsswitch/winbindd_user.o \ ++ nsswitch/winbindd_group.o \ ++ nsswitch/winbindd_util.o \ ++ nsswitch/winbindd_cache.o \ ++ nsswitch/winbindd_pam.o \ ++ nsswitch/winbindd_sid.o \ ++ nsswitch/winbindd_misc.o \ ++ nsswitch/winbindd_cm.o \ ++ nsswitch/winbindd_wins.o \ ++ nsswitch/winbindd_rpc.o \ ++ nsswitch/winbindd_reconnect.o \ ++ nsswitch/winbindd_ads.o \ ++ nsswitch/winbindd_passdb.o \ ++ nsswitch/winbindd_dual.o \ ++ nsswitch/winbindd_async.o ++ ++WINBINDD_OBJ = \ ++ $(WINBINDD_OBJ1) $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(LIBSMB_OBJ) $(LIBMSRPC_OBJ) $(RPC_PARSE_OBJ) \ ++ $(PROFILE_OBJ) $(SLCACHE_OBJ) $(SMBLDAP_OBJ) \ ++ $(SECRETS_OBJ) $(LIBADS_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \ ++ $(DCUTIL_OBJ) $(IDMAP_OBJ) \ ++ $(AFS_OBJ) $(AFS_SETTOKEN_OBJ) ++ ++WBINFO_OBJ = nsswitch/wbinfo.o $(LIBSAMBA_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(SECRETS_OBJ) $(POPT_LIB_OBJ) $(AFS_SETTOKEN_OBJ) ++ ++WINBIND_NSS_OBJ = $(WBCOMMON_OBJ) lib/replace1.o nsswitch/winbind_nss_linux.o ++ ++WINBIND_NSS_PICOBJS = $(WINBIND_NSS_OBJ:.o=.po) lib/snprintf.po ++ ++POPT_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \ ++ popt/popthelp.o popt/poptparse.o ++ ++TDBBACKUP_OBJ = tdb/tdbbackup.o tdb/tdbback.o $(SNPRINTF_OBJ) $(TDBBASE_OBJ) ++ ++TDBTOOL_OBJ = tdb/tdbtool.o $(TDBBASE_OBJ) $(SNPRINTF_OBJ) ++ ++TDBDUMP_OBJ = tdb/tdbdump.o $(TDBBASE_OBJ) $(SNPRINTF_OBJ) ++ ++NTLM_AUTH_OBJ1 = utils/ntlm_auth.o utils/ntlm_auth_diagnostics.o ++ ++NTLM_AUTH_OBJ = ${NTLM_AUTH_OBJ1} $(LIBSAMBA_OBJ) $(POPT_LIB_OBJ) \ ++ libsmb/asn1.o libsmb/spnego.o libsmb/clikrb5.o libads/kerberos.o \ ++ libads/kerberos_verify.o $(SECRETS_OBJ) $(SERVER_MUTEX_OBJ) \ ++ libads/authdata.o $(RPC_PARSE_OBJ0) $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(SMBLDAP_OBJ) $(DOSERR_OBJ) ++ ++###################################################################### ++# now the rules... ++###################################################################### ++all : SHOWFLAGS proto_exists bin/smbd bin/smbpasswd bin/nmbd ++ ++pam_smbpass : SHOWFLAGS bin/pam_smbpass.so ++ ++smbwrapper : SHOWFLAGS ++ ++torture : SHOWFLAGS $(TORTURE_PROGS) ++ ++smbtorture : SHOWFLAGS bin/smbtorture ++ ++masktest : SHOWFLAGS bin/masktest ++ ++msgtest : SHOWFLAGS bin/msgtest ++ ++locktest : SHOWFLAGS bin/locktest ++ ++smbcacls : SHOWFLAGS bin/smbcacls ++ ++smbcquotas : SHOWFLAGS bin/smbcquotas ++ ++locktest2 : SHOWFLAGS bin/locktest2 ++ ++rpctorture : SHOWFLAGS bin/rpctorture ++ ++debug2html : SHOWFLAGS bin/debug2html ++ ++smbfilter : SHOWFLAGS bin/smbfilter ++ ++talloctort : SHOWFLAGS bin/talloctort ++ ++nsswitch : SHOWFLAGS bin/winbindd bin/wbinfo nsswitch/libnss_winbind.so \ ++ nsswitch/libnss_wins.so nsswitch/pam_winbind.so ++ ++wins : SHOWFLAGS nsswitch/libnss_wins.so ++ ++modules: SHOWFLAGS proto_exists $(MODULES) ++ ++everything: all libsmbclient debug2html smbfilter talloctort modules torture \ ++ $(EVERYTHING_PROGS) ++ ++.SUFFIXES: ++.SUFFIXES: .c .o .po .lo ++ ++SHOWFLAGS: ++ @echo "Using FLAGS = $(FLAGS)" ++ @echo " LIBS = $(LIBS)" ++ @echo " LDSHFLAGS = $(LDSHFLAGS)" ++ @echo " LDFLAGS = $(LDFLAGS)" ++ @echo " CFLAGS= $(CFLAGS)" ++ @echo " WITH_LFS= $(WITH_LFS)" ++ ++ ++MAKEDIR = || exec false; \ ++ if test -d "$$dir"; then :; else \ ++ echo mkdir "$$dir"; \ ++ mkdir -p "$$dir" >/dev/null 2>&1 || \ ++ test -d "$$dir" || \ ++ mkdir "$$dir" || \ ++ exec false; fi || exec false ++ ++.c.o: ++ @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \ ++ dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi ++ @echo Compiling $*.c ++ @$(CC) -I. -I$(srcdir) $(FLAGS) -c $< \ ++ -o $@ ++# -mv `echo $@ | sed 's%^.*/%%g'` $@ ++ ++# this adds support for precompiled headers. To use it, install a snapshot ++# of gcc-3.4 and run 'make pch' before you do the main build. ++pch: ++ rm -f $(srcdir)/include/includes.h.gch ++ $(CC) -I. -I$(srcdir) $(FLAGS) -c $(srcdir)/include/includes.h -o $(srcdir)/include/includes.h.gch ++ ++# These dependencies are only approximately correct: we want to make ++# sure Samba's paths are updated if ./configure is re-run. Really it ++# would be nice if "make prefix=/opt/samba all" also rebuilt things, ++# but since we also require "make install prefix=/opt/samba" *not* to ++# rebuild it's a bit hard. ++ ++dynconfig.o: dynconfig.c Makefile ++ @echo Compiling $*.c ++ @$(CC) $(FLAGS) $(PATH_FLAGS) -c $(srcdir)/dynconfig.c -o $@ ++ ++dynconfig.po: dynconfig.c Makefile ++ @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \ ++ dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi ++ @echo Compiling $*.c with -fPIC ++ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PATH_FLAGS) -fPIC -c $(srcdir)/dynconfig.c -o $@ ++# -mv `echo $@ | sed -e 's%^.*/%%g' -e 's%\.po$$%.o%'` $@ ++ ++lib/version.o: lib/version.c include/version.h ++ @echo Compiling $*.c ++ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PATH_FLAGS) -c $(srcdir)/lib/version.c -o $@ ++ ++lib/version.po: lib/version.c include/version.h ++ @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \ ++ dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi ++ @echo Compiling $*.c with -fPIC ++ @$(CC) -I. -I$(srcdir) $(FLAGS) $(PATH_FLAGS) -fPIC -c $(srcdir)/lib/version.c -o $@ ++# -mv `echo $@ | sed -e 's%^.*/%%g' -e 's%\.po$$%.o%'` $@ ++ ++smbd/build_options.o: smbd/build_options.c Makefile include/config.h include/build_env.h include/proto.h ++ @echo Compiling $*.c ++ @$(CC) $(FLAGS) $(PATH_FLAGS) -c smbd/build_options.c -o $@ ++ ++smbd/build_options.c: include/config.h.in script/mkbuildoptions.awk ++ @echo Generating $@ ++ @dir=smbd $(MAKEDIR) && $(AWK) -f $(srcdir)/script/mkbuildoptions.awk > $(builddir)/smbd/build_options.c < $(srcdir)/include/config.h.in ++ ++.c.po: ++ @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \ ++ dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi ++ @echo Compiling $*.c with -fPIC ++ @$(CC) -I. -I$(srcdir) $(FLAGS) -fPIC -c $< -o $*.po ++# -mv `echo $@ | sed -e 's%^.*/%%g' -e 's%\.po$$%.o%'` $@ ++ ++bin/.dummy: ++ @if (: >> $@ || : > $@) >/dev/null 2>&1; then :; else \ ++ dir=bin $(MAKEDIR); fi ++ @: >> $@ || : > $@ # what a fancy emoticon! ++ ++bin/smbd: bin/libsmbd.a $(SMBD_OBJ_MAIN) $(POPT_OBJS) $(POPT_LIB_OBJ) bin/.dummy ++ @echo Linking $@ ++ $(CC) $(FLAGS) -o $@ $(SMBD_OBJ_MAIN) $(POPT_OBJS) $(POPT_LIB_OBJ) $(LDFLAGS) \ ++ $(AUTH_LIBS) \ ++ -Lbin -lsmbd \ ++ -L$(TARGETFS)/lib \ ++ $(LIBS) ++ ++bin/libsmbd.a: $(SMBD_OBJ_BASE) ++ $(AR) cru bin/libsmbd.a $(SMBD_OBJ_BASE) ++ $(RANLIB) bin/libsmbd.a ++ ++ ++bin/nmbd: $(NMBD_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++ ++bin/swat: $(SWAT_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SWAT_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINT_LIBS) \ ++ $(AUTH_LIBS) $(LIBS) $(PASSDB_LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/rpcclient: $(RPCCLIENT_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(PASSDB_LIBS) $(RPCCLIENT_OBJ) \ ++ $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) $(POPT_OBJS) \ ++ $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbclient: $(CLIENT_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(CLIENT_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/net: $(NET_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(NET_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) ++ ++bin/profiles: $(PROFILES_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(PROFILES_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(POPT_OBJS) ++ ++bin/smbspool: $(CUPS_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(CUPS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbmount: $(MOUNT_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(MOUNT_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbmnt: $(MNT_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(MNT_OBJ) $(DYNEXP) $(LDFLAGS) ++ ++bin/smbumount: $(UMOUNT_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(UMOUNT_OBJ) $(DYNEXP) $(LDFLAGS) ++ ++bin/testparm: $(TESTPARM_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(TESTPARM_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) ++ ++bin/smbstatus: $(STATUS_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(STATUS_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \ ++ $(POPT_OBJS) ++ ++bin/smbcontrol: $(SMBCONTROL_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) -DUSING_SMBCONTROL $(FLAGS) -o $@ $(SMBCONTROL_OBJ) $(DYNEXP) \ ++ $(LDFLAGS) $(LIBS) \ ++ $(POPT_OBJS) ++ ++bin/smbtree: $(SMBTREE_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBTREE_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++# bin/smbpasswd: $(SMBPASSWD_OBJ) bin/.dummy ++# @echo Linking $@ ++# @$(CC) $(FLAGS) -o $@ $(SMBPASSWD_OBJ) $(LDFLAGS) $(PASSDB_LIBS) \ ++# $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++MY_PASS_OBJ = libsmb/smbdes.o lib/md4.o lib/arc4.o ++ ++bin/smbpasswd: utils/avm_smbpasswd.o $(MY_PASS_OBJ) ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ utils/avm_smbpasswd.o $(MY_PASS_OBJ) \ ++ -L$(TARGETFS)/lib ++ ++ ++ ++bin/pdbedit: $(PDBEDIT_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(PASSDB_LIBS) $(LDAP_LIBS) ++ ++bin/smbget: $(SMBGET_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBGET_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/samtest: $(SAMTEST_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(PASSDB_LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/nmblookup: $(NMBLOOKUP_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(NMBLOOKUP_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(POPT_OBJS) $(LDAP_LIBS) ++ ++bin/smbtorture: $(SMBTORTURE_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBTORTURE_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/talloctort: $(TALLOCTORT_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(TALLOCTORT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) ++ ++bin/masktest: $(MASKTEST_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(MASKTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/msgtest: $(MSGTEST_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(MSGTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbcacls: $(SMBCACLS_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBCACLS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbcquotas: $(SMBCQUOTAS_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBCQUOTAS_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/locktest: $(LOCKTEST_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LOCKTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/nsstest: $(NSSTEST_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(NSSTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/vfstest: $(VFSTEST_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(VFSTEST_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(PRINT_LIBS) $(AUTH_LIBS) $(ACL_LIBS) $(LIBS) $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbiconv: $(SMBICONV_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBICONV_OBJ) $(LDFLAGS) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) $(POPT_OBJS) ++ ++bin/log2pcap: $(LOG2PCAP_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LOG2PCAP_OBJ) $(LDFLAGS) $(DYNEXP) $(POPT_OBJS) $(LIBS) ++ ++bin/locktest2: $(LOCKTEST2_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LOCKTEST2_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/rpctorture: $(RPCTORTURE_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(RPCTORTURE_OBJ) $(DYNEXP) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/debug2html: $(DEBUG2HTML_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(DEBUG2HTML_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) ++ ++bin/smbfilter: $(SMBFILTER_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBFILTER_OBJ) $(LDFLAGS) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbw_sample: $(SMBW_OBJ) utils/smbw_sample.o bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBW_OBJ) utils/smbw_sample.o $(LDFLAGS) $(DYNEXP) $(LIBS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/smbsh: $(SMBSH_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(SMBSH_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) ++ ++bin/smbwrapper.so: $(PICOBJS) bin/.dummy ++ @echo Linking shared library $@ ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(PICOBJS) $(LIBS) \ ++ $(KRB5LIBS) $(LDAP_LIBS) \ ++ -Wl,-soname=`basename $@` ++ ++bin/libsmbclient.so: $(LIBSMBCLIENT_PICOBJS) ++ @echo Linking libsmbclient shared library $@ ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBCLIENT_PICOBJS) $(LDFLAGS) $(LIBS) \ ++ $(KRB5LIBS) $(LDAP_LIBS) \ ++ -Wl,-soname=`basename $@`.$(LIBSMBCLIENT_MAJOR) ++ ++bin/libsmbclient.a: $(LIBSMBCLIENT_PICOBJS) ++ @echo Linking libsmbclient non-shared library $@ ++ @-$(AR) -rc $@ $(LIBSMBCLIENT_PICOBJS) ++ ++bin/libsmbsharemodes.so: $(LIBSMBSHAREMODES_PICOBJS) ++ @echo Linking libsmbsharemodes shared library $@ ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBSMBSHAREMODES_PICOBJS) $(LDFLAGS) $(LIBS) \ ++ $(KRB5LIBS) $(LDAP_LIBS) \ ++ -Wl,-soname=`basename $@`.$(LIBSMBSHAREMODES_MAJOR) ++ ++bin/libsmbsharemodes.a: $(LIBSMBSHAREMODES_PICOBJS) ++ @echo Linking libsmbsharemodes non-shared library $@ ++ @-$(AR) -rc $@ $(LIBSMBSHAREMODES_PICOBJS) ++ ++# This is probably wrong for anything other than the GNU linker. ++bin/libbigballofmud.so: $(LIBBIGBALLOFMUD_PICOBJS) ++ @echo Linking bigballofmud shared library $@ ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(LIBBIGBALLOFMUD_PICOBJS) $(LIBS) \ ++ $(PASSDB_LIBS) $(IDMAP_LIBS) $(KRB5LIBS) $(LDAP_LIBS) \ ++ -Wl,-soname=`basename $@`.$(LIBBIGBALLOFMUD_MAJOR) ++ ln -snf libbigballofmud.so bin/libbigballofmud.so.0 ++ ++# It would be nice to build a static bigballofmud too, but when I try ++# I get linker errors about dl_open and similar things. I'm not sure if ++# it can be fixed or if they just can't be called from a static ++# library. ++ ++libsmbclient: $(LIBSMBCLIENT) ++libsmbsharemodes: $(LIBSMBSHAREMODES) ++ ++bin/librpc_lsarpc.so: $(RPC_LSA_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_LSA_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_samr.so: $(RPC_SAMR_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SAMR_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_srvsvc.so: $(RPC_SVC_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SVC_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_svcctl.so: $(RPC_SVCCTL_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SVCCTL_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_wkssvc.so: $(RPC_WKS_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_WKS_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_NETLOGON.so: $(RPC_NETLOG_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_NETLOG_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_winreg.so: $(RPC_REG_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_REG_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_lsa_ds.so: $(RPC_LSA_DS_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_LSA_DS_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_spoolss.so: $(RPC_SPOOLSS_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SPOOLSS_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_eventlog.so: $(RPC_EVENTLOG_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_EVENTLOG_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_netdfs.so: $(RPC_DFS_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_DFS_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/librpc_echo.so: $(RPC_ECHO_OBJ) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_ECHO_OBJ) -lc \ ++ -Wl,-soname=`basename $@` ++ ++bin/winbindd: $(WINBINDD_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo "Linking $@" ++ @$(CC) $(FLAGS) -o $@ $(WINBINDD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \ ++ $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) $(PASSDB_LIBS) ++ ++# Please don't add .o files to libnss_winbind, libnss_wins, or the pam_winbind ++# libraries. Add to the appropriate PICOBJ variable instead. ++ ++nsswitch/libnss_winbind.so: $(WINBIND_NSS_PICOBJS) ++ @echo "Linking $@" ++ @$(SHLD) $(WINBIND_NSS_LDSHFLAGS) -o $@ $(WINBIND_NSS_PICOBJS) \ ++ -Wl,-soname=`basename $@` ++ ++nsswitch/libnss_wins.so: $(WINBIND_WINS_NSS_PICOBJS) ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(WINBIND_WINS_NSS_PICOBJS) \ ++ $(LDAP_LIBS) $(KRB5LIBS) -lc \ ++ -Wl,-soname=`basename $@` ++ ++nsswitch/pam_winbind.so: $(PAM_WINBIND_PICOBJ) bin/.dummy ++ @echo "Linking $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_WINBIND_PICOBJ) \ ++ -Wl,-soname=`basename $@` -lpam ++ ++bin/rhosts.so: $(AUTH_RHOSTS_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_RHOSTS_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/builtin.so: $(AUTH_BUILTIN_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_BUILTIN_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/domain.so: $(AUTH_DOMAIN_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_DOMAIN_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/smbserver.so: $(AUTH_SERVER_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_SERVER_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/winbind.so: $(AUTH_WINBIND_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_WINBIND_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/unix.so: $(AUTH_UNIX_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_UNIX_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/sam.so: $(AUTH_SAM_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(AUTH_SAM_OBJ:.o=.po) -Wl,-soname=`basename $@` ++ ++bin/mysql.so: $(MYSQL_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(MYSQL_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/pgsql.so: $(PGSQL_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(PGSQL_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/ldapsam.so: passdb/pdb_ldap.po ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) $(LDAP_LIBS) -o $@ passdb/pdb_ldap.po \ ++ -Wl,-soname=`basename $@` ++ ++bin/tdbsam.so: passdb/pdb_tdb.po ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ passdb/pdb_tdb.po \ ++ -Wl,-soname=`basename $@` ++ ++bin/smbpasswd.so: passdb/pdb_smbpasswd.po ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ passdb/pdb_smbpasswd.po \ ++ -Wl,-soname=`basename $@` ++ ++bin/idmap_rid.so: sam/idmap_rid.po ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ sam/idmap_rid.po \ ++ -Wl,-soname=`basename $@` ++ ++bin/idmap_ad.so: sam/idmap_ad.po ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ sam/idmap_ad.po \ ++ -Wl,-soname=`basename $@` ++ ++bin/weird.so: $(DEVEL_HELP_WEIRD_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(DEVEL_HELP_WEIRD_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/CP850.so: $(CP850_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(CP850_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/CP437.so: $(CP437_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(CP437_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/macosxfs.so: $(CHARSET_MACOSXFS_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(CHARSET_MACOSXFS_OBJ:.o=.po) \ ++ -framework CoreFoundation -Wl,-soname=`basename $@` ++ ++bin/xml.so: $(XML_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(XML_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/audit.so: $(VFS_AUDIT_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AUDIT_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/extd_audit.so: $(VFS_EXTD_AUDIT_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_EXTD_AUDIT_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/full_audit.so: $(VFS_FULL_AUDIT_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FULL_AUDIT_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/recycle.so: $(VFS_RECYCLE_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_RECYCLE_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/netatalk.so: $(VFS_NETATALK_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_NETATALK_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/fake_perms.so: $(VFS_FAKE_PERMS_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FAKE_PERMS_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/default_quota.so: $(VFS_DEFAULT_QUOTA_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_DEFAULT_QUOTA_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/readonly.so: $(VFS_READONLY_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_READONLY_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/shadow_copy.so: $(VFS_SHADOW_COPY_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_SHADOW_COPY_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/cap.so: $(VFS_CAP_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CAP_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/expand_msdfs.so: $(VFS_EXPAND_MSDFS_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_EXPAND_MSDFS_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/afsacl.so: $(VFS_AFSACL_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_AFSACL_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++bin/catia.so: $(VFS_CATIA_OBJ:.o=.po) ++ @echo "Building plugin $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_CATIA_OBJ:.o=.po) \ ++ -Wl,-soname=`basename $@` ++ ++ ++bin/wbinfo: $(WBINFO_OBJ) $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(WBINFO_OBJ) $(DYNEXP) $(LIBS) $(POPT_OBJS) ++ ++bin/ntlm_auth: $(NTLM_AUTH_OBJ) $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) \ ++ $(POPT_OBJS) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(NTLM_AUTH_OBJ) \ ++ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(LIBS) \ ++ $(POPT_OBJS) $(KRB5LIBS) $(LDAP_LIBS) ++ ++bin/pam_smbpass.so: $(PAM_SMBPASS_PICOOBJ) ++ @echo "Linking shared library $@" ++ @$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_SMBPASS_PICOOBJ) -lpam $(DYNEXP) $(LIBS) -lc $(LDAP_LIBS) $(KRB5LIBS) ++ ++bin/libmsrpc.a: $(LIBMSRPC_PICOBJ) ++ @-$(AR) -rc $@ $(LIBMSRPC_PICOBJ) ++ ++bin/tdbbackup: $(TDBBACKUP_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBBACKUP_OBJ) ++ ++bin/tdbtool: $(TDBTOOL_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBTOOL_OBJ) ++ ++bin/tdbdump: $(TDBDUMP_OBJ) bin/.dummy ++ @echo Linking $@ ++ @$(CC) $(FLAGS) -o $@ $(LDFLAGS) $(DYNEXP) $(LIBS) $(TDBDUMP_OBJ) ++ ++bin/t_strcmp: bin/libbigballofmud.so torture/t_strcmp.o ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_strcmp.o -L ./bin -lbigballofmud ++ ++bin/t_strstr: bin/libbigballofmud.so torture/t_strstr.o ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_strstr.o -L ./bin -lbigballofmud ++ ++bin/t_stringoverflow: bin/libbigballofmud.so torture/t_stringoverflow.o ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) torture/t_stringoverflow.o -L./bin -lbigballofmud ++ ++bin/t_doschar: bin/libbigballofmud.so torture/t_doschar.o ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_doschar.o -L ./bin -lbigballofmud ++bin/t_push_ucs2: bin/libbigballofmud.so torture/t_push_ucs2.o ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) $(LIBS) torture/t_push_ucs2.o -L ./bin -lbigballofmud ++ ++bin/t_snprintf: lib/snprintf.c ++ $(CC) $(FLAGS) -o $@ $(DYNEXP) -DTEST_SNPRINTF lib/snprintf.c -lm ++install: installbin installman installscripts installdat installswat installmodules installclientlib ++ ++install-everything: install installmodules ++ ++# DESTDIR is used here to prevent packagers wasting their time ++# duplicating the Makefile. Remove it and you will have the privelege ++# of package each samba release for muliple versions of multiple ++# distributions and operating systems, or at least supplying patches ++# to all the packaging files required for this, prior to committing ++# the removal of DESTDIR. Do not remove it even though you think it ++# is not used ++ ++installdirs: ++ @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PRIVATEDIR) $(DESTDIR)$(PIDDIR) $(DESTDIR)$(LOCKDIR) $(DESTDIR)$(MANDIR) ++ ++installservers: all installdirs ++ @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) ++ ++installbin: all installdirs ++ @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) ++ @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS) ++ ++ ++# Some symlinks are required for the 'probing' of modules. ++# This mechanism should go at some point.. ++installmodules: modules installdirs ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(VFS_MODULES) ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(PDB_MODULES) ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(RPCLIBDIR) $(RPC_MODULES) ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(IDMAPLIBDIR) $(IDMAP_MODULES) ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(CHARSETLIBDIR) $(CHARSET_MODULES) ++ @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(AUTHLIBDIR) $(AUTH_MODULES) ++ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(PDBLIBDIR) ldapsam.so ldapsam_compat.so ++ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) rhosts.so hostsequiv.so ++ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) sam.so sam_ignoredomain.so ++ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) domain.so trustdomain.so ntdomain.so ++ @$(SHELL) $(srcdir)/script/linkmodules.sh $(DESTDIR)$(AUTHLIBDIR) builtin.so guest.so fixed_challenge.so name_to_ntstatus.so ++ ++installscripts: installdirs ++ @$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS) ++ ++installdat: installdirs ++ @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir) ++ ++installmsg: installdirs ++ @$(SHELL) $(srcdir)/script/installmsg.sh $(DESTDIR)$(LIBDIR) $(srcdir) ++ ++installswat: installdirs installmsg ++ @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir) ++ ++installclientlib: installdirs libsmbclient ++ @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(LIBDIR) ++ -$(INSTALLCLIENTCMD_SH) bin/libsmbclient.so $(DESTDIR)$(LIBDIR) ++ -$(INSTALLCLIENTCMD_A) bin/libsmbclient.a $(DESTDIR)$(LIBDIR) ++ @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)${prefix}/include ++ -$(INSTALLCMD) $(srcdir)/include/libsmbclient.h $(DESTDIR)${prefix}/include ++ ++# Python extensions ++ ++PYTHON_OBJS = $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(LIBSMB_OBJ) $(RPC_PARSE_OBJ) \ ++ $(LIBMSRPC_OBJ) $(PASSDB_OBJ) $(GROUPDB_OBJ) \ ++ $(SECRETS_OBJ) $(KRBCLIENT_OBJ) $(SMBLDAP_OBJ) ++ ++PYTHON_PICOBJS = $(PYTHON_OBJS:.o=.po) ++ ++python_ext: $(PYTHON_PICOBJS) ++ @if test -z "$(PYTHON)"; then \ ++ echo Use the option --with-python to configure python; \ ++ exit 1; \ ++ fi ++ PYTHON_OBJS="$(PYTHON_PICOBJS)" \ ++ PYTHON_CFLAGS="$(CFLAGS) $(CPPFLAGS) $(FLAGS)" \ ++ LIBS="$(LDFLAGS) $(LIBS) $(PASSDB_LIBS) $(IDMAP_LIBS) $(KRB5LIBS) $(LDAP_LIBS)" \ ++ $(PYTHON) python/setup.py build ++ ++python_install: $(PYTHON_PICOBJS) ++ @if test -z "$(PYTHON)"; then \ ++ echo Use the option --with-python to configure python; \ ++ exit 1; \ ++ fi ++ PYTHON_OBJS="$(PYTHON_PICOBJS)" \ ++ PYTHON_CFLAGS="$(CFLAGS) $(CPPFLAGS)" \ ++ LIBS="$(LDFLAGS) $(LIBS)" \ ++ $(PYTHON) python/setup.py install ++ ++python_clean: ++ @-if test -n "$(PYTHON)"; then $(PYTHON) python/setup.py clean; fi ++ ++# revert to the previously installed version ++revert: ++ @$(SHELL) $(srcdir)/script/revert.sh $(SBINDIR) $(SBIN_PROGS) ++ @$(SHELL) $(srcdir)/script/revert.sh $(BINDIR) $(BIN_PROGS) $(SCRIPTS) ++ ++installman: installdirs ++ @$(SHELL) $(srcdir)/script/installman.sh $(DESTDIR)$(MANDIR) $(srcdir) C "" ++ ++.PHONY: showlayout ++ ++showlayout: ++ @echo "Samba will be installed into:" ++ @echo " basedir: $(BASEDIR)" ++ @echo " bindir: $(BINDIR)" ++ @echo " sbindir: $(SBINDIR)" ++ @echo " libdir: $(LIBDIR)" ++ @echo " vardir: $(VARDIR)" ++ @echo " mandir: $(MANDIR)" ++ @echo " privatedir: $(PRIVATE_DIR)" ++ @echo " configdir: $(CONFIGDIR)" ++ @echo " lockdir: $(LOCKDIR)" ++ @echo " piddir: $(PIDDIR)" ++ @echo " swatdir: $(SWATDIR)" ++ ++ ++uninstall: uninstallman uninstallbin uninstallscripts uninstallmodules ++ ++uninstallman: ++ @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) C ++ ++uninstallbin: ++ @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(SBIN_PROGS) ++ @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS) ++ ++uninstallmodules: ++ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(DESTDIR)$(VFS_MODULES) ++ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(DESTDIR)$(PDB_MODULES) ++ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(RPCLIBDIR) $(DESTDIR)$(RPC_MODULES) ++ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(CHARSETLIBDIR) $(DESTDIR)$(CHARSET_MODULES) ++ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(AUTHLIBDIR) $(DESTDIR)$(AUTH_MODULES) ++ ++uninstallscripts: ++ @$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS) ++ ++# Toplevel clean files ++TOPFILES=dynconfig.o dynconfig.po ++ ++clean: delheaders python_clean ++ -rm -f core */*~ *~ */*.o */*.po */*.so \ ++ $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(MODULES) $(TORTURE_PROGS) \ ++ $(LIBSMBCLIENT) $(LIBSMBSHAREMODES) $(EVERYTHING_PROGS) .headers.stamp ++ -rm -rf t_dir ++ -rm -rf bin/lib* ++ -find . -name *.o | xargs rm -f ++ -find . -name *.po | xargs rm -f ++ -find . -name *.so | xargs rm -f ++ ++# Making this target will just make sure that the prototype files ++# exist, not necessarily that they are up to date. Since they're ++# removed by "make clean" this will always be run when you do anything ++# afterwards. ++proto_exists: include/proto.h include/build_env.h \ ++ nsswitch/winbindd_proto.h web/swat_proto.h \ ++ client/client_proto.h utils/net_proto.h utils/ntlm_auth_proto.h ++ ++# AR7 smbd/build_options.c ++ ++delheaders: ++ @echo Removing prototype headers ++ @rm -f include/proto.h include/build_env.h \ ++ nsswitch/winbindd_proto.h web/swat_proto.h \ ++ client/client_proto.h utils/net_proto.h \ ++ smbd/build_options.c ++ ++MKPROTO_SH = $(srcdir)/script/mkproto.sh ++ ++# AR7 include/proto.h: smbd/build_options.c ++ ++include/proto.h: ++ @echo Building include/proto.h ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _PROTO_H_ $(builddir)/include/proto.h \ ++ $(PROTO_OBJ) ++ ++include/build_env.h: script/build_env.sh ++ @echo Building include/build_env.h ++ @$(SHELL) $(srcdir)/script/build_env.sh $(srcdir) $(builddir) $(CC) \ ++ > $(builddir)/include/build_env.h ++ ++nsswitch/winbindd_proto.h: ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _WINBINDD_PROTO_H_ $(builddir)/nsswitch/winbindd_proto.h \ ++ $(WINBINDD_OBJ1) ++ ++web/swat_proto.h: ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _SWAT_PROTO_H_ $(builddir)/web/swat_proto.h \ ++ $(SWAT_OBJ1) ++ ++client/client_proto.h: ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _CLIENT_PROTO_H_ $(builddir)/client/client_proto.h \ ++ $(CLIENT_OBJ1) ++ ++utils/net_proto.h: ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _NET_PROTO_H_ $(builddir)/utils/net_proto.h \ ++ $(NET_OBJ1) ++ ++utils/ntlm_auth_proto.h: ++ @cd $(srcdir) && $(SHELL) $(MKPROTO_SH) $(AWK) \ ++ -h _NTLM_AUTH_PROTO_H_ $(builddir)/utils/ntlm_auth_proto.h \ ++ $(NTLM_AUTH_OBJ1) ++ ++# "make headers" or "make proto" calls a subshell because we need to ++# make sure these commands are executed in sequence even for a ++# parallel make. ++headers: ++ $(MAKE) delheaders; \ ++ $(MAKE) smbd/build_options.c; \ ++ $(MAKE) include/proto.h; \ ++ $(MAKE) include/build_env.h; \ ++ $(MAKE) nsswitch/winbindd_proto.h; \ ++ $(MAKE) web/swat_proto.h; \ ++ $(MAKE) client/client_proto.h; \ ++ $(MAKE) utils/ntlm_auth_proto.h; \ ++ $(MAKE) utils/net_proto.h; ++ ++proto: headers ++ ++.PHONY: headers proto ++ ++etags: ++ etags `find $(srcdir) -name "*.[ch]" | grep -v /CVS/` ++ ++ctags: ++ ctags `find $(srcdir) -name "*.[ch]" | grep -v /CVS/` ++ ++realclean: clean delheaders ++ -rm -f config.log bin/.dummy script/findsmb ++ ++distclean: realclean ++ -rm -f include/stamp-h ++ -rm -f include/config.h Makefile ++ -rm -f config.status config.cache so_locations ++ -rm -rf .deps TAGS ++ ++realdistclean: distclean ++ -rm -f include/config.h.in ++ -rm -f include/version.h ++ -rm -f configure ++ ++# this target is really just for my use. It only works on a limited ++# range of machines and is used to produce a list of potentially ++# dead (ie. unused) functions in the code. (tridge) ++finddead: ++ nm */*.o |grep 'U ' | awk '{print $$2}' | sort -u > nmused.txt ++ nm */*.o |grep 'T ' | awk '{print $$3}' | sort -u > nmfns.txt ++ comm -13 nmused.txt nmfns.txt ++ ++ ++# when configure.in is updated, reconfigure ++$(srcdir)/configure: $(srcdir)/configure.in ++ @echo "WARNING: you need to rerun ./autogen.sh" ++ ++config.status: $(srcdir)/configure ++ @echo "WARNING: you need to run ./configure" ++ ++# AR7 Makefile: $(srcdir)/Makefile.in config.status ++# AR7 @echo "WARNING: you need to run ./config.status" ++ ++###################################################################### ++# Samba Testing Framework ++ ++# FIXME: LD_LIBRARY_PATH is not portable, but in the absence of ++# libtool I don't know a better way to do it. Perhaps we should fix ++# libbigballofmud to link statically? ++## ++## not working...to be replaced by 'make test' --jerry ++## ++#check: check-programs ++# LD_LIBRARY_PATH="`pwd`/bin:$$LD_LIBRARY_PATH" \ ++# PATH="`pwd`/bin:$$PATH" \ ++# python stf/standardcheck.py; \ ++# if test -n "$(PYTHON)"; then \ ++# python stf/pythoncheck.py; \ ++# fi ++ ++# These are called by the test suite and need to be built before ++# running it. For the time being we don't build all of BIN_PROGS, ++# because they're not all needed. ++check-programs: bin/t_strcmp bin/t_strstr bin/t_push_ucs2 bin/smbcontrol bin/t_snprintf ++ ++test: all ++ @if test -z "$(SMB4TORTURE)"; then \ ++ echo "Please set the SMB4TORTURE environment variable"; \ ++ exit 1; \ ++ fi ++ ./script/smb4torture.sh `pwd`/prefix-test $(SMB4TORTURE) +diff -urN samba-3.0.24.orig/source/passdb/lookup_sid.c samba-3.0.24/source/passdb/lookup_sid.c +--- samba-3.0.24.orig/source/passdb/lookup_sid.c 2007-02-04 19:59:21.000000000 +0100 ++++ samba-3.0.24/source/passdb/lookup_sid.c 2007-08-07 09:38:18.000000000 +0200 +@@ -421,10 +421,10 @@ + return False; + } + +- become_root_uid_only(); ++ become_root(); + result = pdb_lookup_rids(domain_sid, num_rids, rids, + *names, *types); +- unbecome_root_uid_only(); ++ unbecome_root(); + + return (NT_STATUS_IS_OK(result) || + NT_STATUS_EQUAL(result, NT_STATUS_NONE_MAPPED) || +@@ -1085,9 +1085,9 @@ + goto done; + } + +- become_root_uid_only(); ++ become_root(); + ret = pdb_uid_to_rid(uid, &rid); +- unbecome_root_uid_only(); ++ unbecome_root(); + + if (ret) { + /* This is a mapped user */ +@@ -1131,9 +1131,9 @@ + goto done; + } + +- become_root_uid_only(); ++ become_root(); + ret = pdb_gid_to_sid(gid, psid); +- unbecome_root_uid_only(); ++ unbecome_root(); + + if (ret) { + /* This is a mapped group */ +@@ -1179,9 +1179,9 @@ + union unid_t id; + BOOL ret; + +- become_root_uid_only(); ++ become_root(); + ret = pdb_sid_to_id(psid, &id, &type); +- unbecome_root_uid_only(); ++ unbecome_root(); + + if (ret) { + if (type != SID_NAME_USER) { +@@ -1259,9 +1259,9 @@ + sid_check_is_in_wellknown_domain(psid))) { + BOOL ret; + +- become_root_uid_only(); ++ become_root(); + ret = pdb_getgrsid(&map, *psid); +- unbecome_root_uid_only(); ++ unbecome_root(); + + if (ret) { + *pgid = map.gid; +@@ -1273,9 +1273,9 @@ + if (sid_peek_check_rid(get_global_sam_sid(), psid, &rid)) { + BOOL ret; + +- become_root_uid_only(); ++ become_root(); + ret = pdb_sid_to_id(psid, &id, &type); +- unbecome_root_uid_only(); ++ unbecome_root(); + + if (ret) { + if ((type != SID_NAME_DOM_GRP) && +diff -urN samba-3.0.24.orig/source/printing/nt_printing.c samba-3.0.24/source/printing/nt_printing.c +--- samba-3.0.24.orig/source/printing/nt_printing.c 2007-02-04 20:09:01.000000000 +0100 ++++ samba-3.0.24/source/printing/nt_printing.c 2007-08-07 09:38:18.000000000 +0200 +@@ -2984,11 +2984,15 @@ + return True; + } + ++/***************************************************************** ++ ****************************************************************/ ++ + static void store_printer_guid(NT_PRINTER_INFO_LEVEL_2 *info2, + struct uuid guid) + { + int i; + REGVAL_CTR *ctr=NULL; ++ UNISTR2 unistr_guid; + + /* find the DsSpooler key */ + if ((i = lookup_printerkey(info2->data, SPOOL_DSSPOOLER_KEY)) < 0) +@@ -2996,8 +3000,18 @@ + ctr = info2->data->keys[i].values; + + regval_ctr_delvalue(ctr, "objectGUID"); +- regval_ctr_addvalue(ctr, "objectGUID", REG_BINARY, +- (char *) &guid, sizeof(struct uuid)); ++ ++ /* We used to store this as a REG_BINARY but that causes ++ Vista to whine */ ++ ++ ZERO_STRUCT( unistr_guid ); ++ init_unistr2( &unistr_guid, smb_uuid_string_static(guid), ++ UNI_STR_TERMINATE ); ++ ++ regval_ctr_addvalue(ctr, "objectGUID", REG_SZ, ++ (char *)unistr_guid.buffer, ++ unistr_guid.uni_max_len*2); ++ + } + + static WERROR nt_printer_publish_ads(ADS_STRUCT *ads, +@@ -3254,6 +3268,7 @@ + REGISTRY_VALUE *guid_val; + WERROR win_rc; + int i; ++ BOOL ret = False; + + win_rc = get_a_printer(print_hnd, &printer, 2, lp_servicename(snum)); + +@@ -3267,12 +3282,36 @@ + return False; + } + +- /* fetching printer guids really ought to be a separate function.. */ +- if (guid && regval_size(guid_val) == sizeof(struct uuid)) +- memcpy(guid, regval_data_p(guid_val), sizeof(struct uuid)); ++ /* fetching printer guids really ought to be a separate function. */ ++ ++ if ( guid ) { ++ fstring guid_str; ++ ++ /* We used to store the guid as REG_BINARY, then swapped ++ to REG_SZ for Vista compatibility so check for both */ ++ ++ switch ( regval_type(guid_val) ){ ++ case REG_SZ: ++ rpcstr_pull( guid_str, regval_data_p(guid_val), ++ sizeof(guid_str)-1, -1, STR_TERMINATE ); ++ ret = smb_string_to_uuid( guid_str, guid ); ++ break; ++ case REG_BINARY: ++ if ( regval_size(guid_val) != sizeof(struct uuid) ) { ++ ret = False; ++ break; ++ } ++ memcpy(guid, regval_data_p(guid_val), sizeof(struct uuid)); ++ break; ++ default: ++ DEBUG(0,("is_printer_published: GUID value stored as " ++ "invaluid type (%d)\n", regval_type(guid_val) )); ++ break; ++ } ++ } + + free_a_printer(&printer, 2); +- return True; ++ return ret; + } + #else + WERROR nt_printer_publish(Printer_entry *print_hnd, int snum, int action) +@@ -3539,13 +3578,43 @@ + break; + } + +- /* add the new value */ ++ DEBUG(8,("specific: [%s:%s], len: %d\n", keyname, valuename, size)); ++ ++ /* Vista doesn't like unknown REG_BINARY values in DsSpooler. ++ Thanks to Martin Zielinski for the hint. */ ++ ++ if ( type == REG_BINARY && ++ strequal( keyname, SPOOL_DSSPOOLER_KEY ) && ++ strequal( valuename, "objectGUID" ) ) ++ { ++ struct uuid guid; ++ UNISTR2 unistr_guid; ++ ++ ZERO_STRUCT( unistr_guid ); ++ ++ /* convert the GUID to a UNICODE string */ ++ ++ memcpy( &guid, data_p, sizeof(struct uuid) ); ++ ++ init_unistr2( &unistr_guid, smb_uuid_string_static(guid), ++ UNI_STR_TERMINATE ); ++ ++ regval_ctr_addvalue( printer_data->keys[key_index].values, ++ valuename, REG_SZ, ++ (const char *)unistr_guid.buffer, ++ unistr_guid.uni_str_len*2 ); ++ ++ } else { ++ /* add the value */ ++ ++ regval_ctr_addvalue( printer_data->keys[key_index].values, ++ valuename, type, (const char *)data_p, ++ size ); ++ } + +- regval_ctr_addvalue( printer_data->keys[key_index].values, valuename, type, (const char *)data_p, size ); + + SAFE_FREE(data_p); /* 'B' option to tdbpack does a malloc() */ + +- DEBUG(8,("specific: [%s:%s], len: %d\n", keyname, valuename, size)); + } + + return len; +diff -urN samba-3.0.24.orig/source/printing/print_generic.c samba-3.0.24/source/printing/print_generic.c +--- samba-3.0.24.orig/source/printing/print_generic.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/printing/print_generic.c 2007-08-07 09:38:18.000000000 +0200 +@@ -58,7 +58,7 @@ + if ( do_sub && snum != -1 ) + standard_sub_snum(snum,syscmd,sizeof(syscmd)); + +- ret = smbrun(syscmd,outfd); ++ ret = smbrun_no_sanitize(syscmd,outfd); + + DEBUG(3,("Running the command `%s' gave %d\n",syscmd,ret)); + +diff -urN samba-3.0.24.orig/source/registry/regfio.c samba-3.0.24/source/registry/regfio.c +--- samba-3.0.24.orig/source/registry/regfio.c 2007-02-04 19:59:26.000000000 +0100 ++++ samba-3.0.24/source/registry/regfio.c 2007-08-07 09:38:18.000000000 +0200 +@@ -642,8 +642,12 @@ + return False; + + if ( UNMARSHALLING(&hbin->ps) ) { +- if ( !(lf->hashes = PRS_ALLOC_MEM( &hbin->ps, REGF_HASH_REC, lf->num_keys )) ) +- return False; ++ if (lf->num_keys) { ++ if ( !(lf->hashes = PRS_ALLOC_MEM( &hbin->ps, REGF_HASH_REC, lf->num_keys )) ) ++ return False; ++ } else { ++ lf->hashes = NULL; ++ } + } + + for ( i=0; inum_keys; i++ ) { +diff -urN samba-3.0.24.orig/source/registry/reg_frontend.c samba-3.0.24/source/registry/reg_frontend.c +--- samba-3.0.24.orig/source/registry/reg_frontend.c 2005-11-09 19:29:03.000000000 +0100 ++++ samba-3.0.24/source/registry/reg_frontend.c 2007-07-17 13:19:05.000000000 +0200 +@@ -35,9 +35,11 @@ + + REGISTRY_HOOK reg_hooks[] = { + #ifndef REG_TDB_ONLY ++#ifndef AVM_NO_PRINTING + { KEY_PRINTING, &printing_ops }, + { KEY_PRINTING_2K, &printing_ops }, + { KEY_PRINTING_PORTS, &printing_ops }, ++#endif + { KEY_SHARES, &shares_reg_ops }, + #endif + { NULL, NULL } +diff -urN samba-3.0.24.orig/source/rpc_client/cli_pipe.c samba-3.0.24/source/rpc_client/cli_pipe.c +--- samba-3.0.24.orig/source/rpc_client/cli_pipe.c 2007-02-04 19:59:11.000000000 +0100 ++++ samba-3.0.24/source/rpc_client/cli_pipe.c 2007-07-17 13:19:05.000000000 +0200 +@@ -619,7 +619,11 @@ + + DEBUG(1, ("cli_pipe_validate_current_pdu: RPC fault code %s received from remote machine %s " + "pipe %s fnum 0x%x!\n", ++#if 1 /* AVM */ ++ "ERRSTR-REPLACEMENT", ++#else + dcerpc_errstr(NT_STATUS_V(fault_resp.status)), ++#endif + cli->cli->desthost, + cli->pipe_name, + (unsigned int)cli->fnum)); +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_dfs.c samba-3.0.24/source/rpc_parse/parse_dfs.c +--- samba-3.0.24.orig/source/rpc_parse/parse_dfs.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_dfs.c 2007-08-07 09:38:18.000000000 +0200 +@@ -325,7 +325,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->stores = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->stores)*v->num_stores); ++ v->stores = PRS_ALLOC_MEM(ps,NETDFS_DFS_STORAGEINFO,v->num_stores); ++ if (!v->stores) ++ return False; + } + for (i_stores_1=0; i_stores_1num_stores;i_stores_1++) { + if (!netdfs_io_dfs_StorageInfo_p("stores", &v->stores[i_stores_1], ps, depth)) +@@ -447,7 +449,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->stores = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->stores)*v->num_stores); ++ v->stores = PRS_ALLOC_MEM(ps,NETDFS_DFS_STORAGEINFO,v->num_stores); ++ if (!v->stores) ++ return False; + } + for (i_stores_1=0; i_stores_1num_stores;i_stores_1++) { + if (!netdfs_io_dfs_StorageInfo_p("stores", &v->stores[i_stores_1], ps, depth)) +@@ -920,7 +924,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO1,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info1_p("s", &v->s[i_s_1], ps, depth)) +@@ -986,7 +992,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO2,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info2_p("s", &v->s[i_s_1], ps, depth)) +@@ -1052,7 +1060,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO3,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info3_p("s", &v->s[i_s_1], ps, depth)) +@@ -1118,7 +1128,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO4,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info4_p("s", &v->s[i_s_1], ps, depth)) +@@ -1184,7 +1196,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO200,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info200_p("s", &v->s[i_s_1], ps, depth)) +@@ -1250,7 +1264,9 @@ + return False; + + if (UNMARSHALLING(ps)) { +- v->s = (void *)PRS_ALLOC_MEM_VOID(ps,sizeof(*v->s)*v->count); ++ v->s = PRS_ALLOC_MEM(ps,NETDFS_DFS_INFO300,v->count); ++ if (!v->s) ++ return False; + } + for (i_s_1=0; i_s_1count;i_s_1++) { + if (!netdfs_io_dfs_Info300_p("s", &v->s[i_s_1], ps, depth)) +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_lsa.c samba-3.0.24/source/rpc_parse/parse_lsa.c +--- samba-3.0.24.orig/source/rpc_parse/parse_lsa.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_lsa.c 2007-08-07 09:38:18.000000000 +0200 +@@ -1171,7 +1171,7 @@ + + /* Mallocate memory if we're unpacking from the wire */ + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && sen->num_entries) { + if ((sen->ptr_sid = PRS_ALLOC_MEM( ps, uint32, sen->num_entries)) == NULL) { + DEBUG(3, ("init_lsa_sid_enum(): out of memory for " + "ptr_sid\n")); +@@ -1349,12 +1349,17 @@ + &trn->num_entries2)) + return False; + +- if (UNMARSHALLING(ps)) { +- if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME, trn->num_entries)) == NULL) { ++ if (trn->num_entries2 != trn->num_entries) { ++ /* RPC fault */ ++ return False; ++ } ++ ++ if (UNMARSHALLING(ps) && trn->num_entries2) { ++ if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME, trn->num_entries2)) == NULL) { + return False; + } + +- if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries)) == NULL) { ++ if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries2)) == NULL) { + return False; + } + } +@@ -1406,12 +1411,17 @@ + &trn->num_entries2)) + return False; + +- if (UNMARSHALLING(ps)) { +- if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME2, trn->num_entries)) == NULL) { ++ if (trn->num_entries2 != trn->num_entries) { ++ /* RPC fault */ ++ return False; ++ } ++ ++ if (UNMARSHALLING(ps) && trn->num_entries2) { ++ if ((trn->name = PRS_ALLOC_MEM(ps, LSA_TRANS_NAME2, trn->num_entries2)) == NULL) { + return False; + } + +- if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries)) == NULL) { ++ if ((trn->uni_name = PRS_ALLOC_MEM(ps, UNISTR2, trn->num_entries2)) == NULL) { + return False; + } + } +@@ -1678,7 +1688,7 @@ + return False; + } + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && out->num_entries2) { + if ((out->dom_rid = PRS_ALLOC_MEM(ps, DOM_RID, out->num_entries2)) + == NULL) { + DEBUG(3, ("lsa_io_r_lookup_names(): out of memory\n")); +@@ -1803,7 +1813,7 @@ + return False; + } + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && out->num_entries2) { + if ((out->dom_rid = PRS_ALLOC_MEM(ps, DOM_RID2, out->num_entries2)) + == NULL) { + DEBUG(3, ("lsa_io_r_lookup_names2(): out of memory\n")); +@@ -1956,7 +1966,7 @@ + return False; + } + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && out->num_entries2) { + if ((out->trans_sids = PRS_ALLOC_MEM(ps, LSA_TRANSLATED_SID3, out->num_entries2)) + == NULL) { + DEBUG(3, ("lsa_io_r_lookup_names3(): out of memory\n")); +@@ -2085,7 +2095,7 @@ + return False; + } + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && out->num_entries2) { + if ((out->trans_sids = PRS_ALLOC_MEM(ps, LSA_TRANSLATED_SID3, out->num_entries2)) + == NULL) { + DEBUG(3, ("lsa_io_r_lookup_names4(): out of memory\n")); +@@ -2324,7 +2334,7 @@ + if(!prs_uint32("count1", ps, depth, &out->count1)) + return False; + +- if (UNMARSHALLING(ps)) ++ if (UNMARSHALLING(ps) && out->count1) + if (!(out->privs = PRS_ALLOC_MEM(ps, LSA_PRIV_ENTRY, out->count1))) + return False; + +@@ -2759,7 +2769,7 @@ + + static BOOL lsa_io_privilege_set(const char *desc, PRIVILEGE_SET *out, prs_struct *ps, int depth) + { +- uint32 i; ++ uint32 i, dummy; + + prs_debug(ps, depth, desc, "lsa_io_privilege_set"); + depth++; +@@ -2767,7 +2777,7 @@ + if(!prs_align(ps)) + return False; + +- if(!prs_uint32("count", ps, depth, &out->count)) ++ if(!prs_uint32("count", ps, depth, &dummy)) + return False; + if(!prs_uint32("control", ps, depth, &out->control)) + return False; +@@ -3886,7 +3896,7 @@ + prs_debug(ps, depth, desc, "smb_io_lsa_data_buf"); + depth++; + +- if ( UNMARSHALLING(ps) ) { ++ if ( UNMARSHALLING(ps) && length ) { + if ( !(buf->data = PRS_ALLOC_MEM( ps, uint8, length )) ) + return False; + } +@@ -3900,7 +3910,7 @@ + if (!prs_uint32("length", ps, depth, &buf->length)) + return False; + +- if(!prs_uint8s(False, "data", ps, depth, buf->data, size)) ++ if(!prs_uint8s(False, "data", ps, depth, buf->data, length)) + return False; + + return True; +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_net.c samba-3.0.24/source/rpc_parse/parse_net.c +--- samba-3.0.24.orig/source/rpc_parse/parse_net.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_net.c 2007-08-07 09:38:18.000000000 +0200 +@@ -1721,9 +1721,13 @@ + } + + if (UNMARSHALLING(ps)) { +- usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups); +- if (usr->gids == NULL) +- return False; ++ if (usr->num_groups) { ++ usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups); ++ if (usr->gids == NULL) ++ return False; ++ } else { ++ usr->gids = NULL; ++ } + } + + for (i = 0; i < usr->num_groups; i++) { +@@ -1756,10 +1760,15 @@ + return False; + + if (UNMARSHALLING(ps)) { +- usr->other_sids = PRS_ALLOC_MEM(ps, DOM_SID2, usr->num_other_sids); +- usr->other_sids_attrib = +- PRS_ALLOC_MEM(ps, uint32, usr->num_other_sids); +- ++ if (usr->num_other_sids) { ++ usr->other_sids = PRS_ALLOC_MEM(ps, DOM_SID2, usr->num_other_sids); ++ usr->other_sids_attrib = ++ PRS_ALLOC_MEM(ps, uint32, usr->num_other_sids); ++ } else { ++ usr->other_sids = NULL; ++ usr->other_sids_attrib = NULL; ++ } ++ + if ((num_other_sids != 0) && + ((usr->other_sids == NULL) || + (usr->other_sids_attrib == NULL))) +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_prs.c samba-3.0.24/source/rpc_parse/parse_prs.c +--- samba-3.0.24.orig/source/rpc_parse/parse_prs.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_prs.c 2007-08-07 09:38:18.000000000 +0200 +@@ -156,7 +156,7 @@ + { + char *ret = NULL; + +- if (size) { ++ if (size && count) { + /* We can't call the type-safe version here. */ + ret = _talloc_zero_array(ps->mem_ctx, size, count, "parse_prs"); + } +@@ -642,9 +642,13 @@ + return True; + + if (UNMARSHALLING(ps)) { +- if ( !(*data = PRS_ALLOC_MEM_VOID(ps, data_size)) ) +- return False; +- } ++ if (data_size) { ++ if ( !(*data = (void *)PRS_ALLOC_MEM(ps, char, data_size)) ) ++ return False; ++ } else { ++ *data = NULL; ++ } ++ } + + return prs_fn(name, ps, depth, *data); + } +@@ -789,8 +793,13 @@ + SIVAL(q,0,NT_STATUS_V(*status)); + } + +- DEBUG(5,("%s%04x %s: %s\n", tab_depth(depth), ps->data_offset, name, +- dcerpc_errstr(NT_STATUS_V(*status)))); ++ DEBUG(5,("%s%04x %s: %s\n", tab_depth(depth), ps->data_offset, name, ++#if 1 /* AVM */ ++ "ERRSTR-REPLACEMENT" ++#else ++ dcerpc_errstr(NT_STATUS_V(*status)) ++#endif ++ )); + + ps->data_offset += sizeof(uint32); + +@@ -1014,16 +1023,16 @@ + if (q == NULL) + return False; + ++ /* If the string is empty, we don't have anything to stream */ ++ if (str->buf_len==0) ++ return True; ++ + if (UNMARSHALLING(ps)) { + str->buffer = PRS_ALLOC_MEM(ps,uint16,str->buf_len); + if (str->buffer == NULL) + return False; + } + +- /* If the string is empty, we don't have anything to stream */ +- if (str->buf_len==0) +- return True; +- + p = (char *)str->buffer; + + dbg_rw_punival(charmode, name, depth, ps, q, p, str->buf_len); +@@ -1053,6 +1062,8 @@ + buf->buffer = PRS_ALLOC_MEM(ps, uint16, buf->buf_max_len); + if ( buf->buffer == NULL ) + return False; ++ } else { ++ buf->buffer = NULL; + } + } + +@@ -1080,9 +1091,13 @@ + if (str->str_str_len > str->str_max_len) { + return False; + } +- str->buffer = PRS_ALLOC_MEM(ps,unsigned char, str->str_max_len); +- if (str->buffer == NULL) +- return False; ++ if (str->str_max_len) { ++ str->buffer = PRS_ALLOC_MEM(ps,unsigned char, str->str_max_len); ++ if (str->buffer == NULL) ++ return False; ++ } else { ++ str->buffer = NULL; ++ } + } + + if (UNMARSHALLING(ps)) { +@@ -1127,9 +1142,13 @@ + if (str->uni_str_len > str->uni_max_len) { + return False; + } +- str->buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_max_len); +- if (str->buffer == NULL) +- return False; ++ if (str->uni_max_len) { ++ str->buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_max_len); ++ if (str->buffer == NULL) ++ return False; ++ } else { ++ str->buffer = NULL; ++ } + } + + p = (char *)str->buffer; +@@ -1154,9 +1173,13 @@ + return False; + + if (UNMARSHALLING(ps)) { +- str->str.buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_str_len); +- if (str->str.buffer == NULL) +- return False; ++ if (str->uni_str_len) { ++ str->str.buffer = PRS_ALLOC_MEM(ps,uint16,str->uni_str_len); ++ if (str->str.buffer == NULL) ++ return False; ++ } else { ++ str->str.buffer = NULL; ++ } + } + + p = (char *)str->str.buffer; +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_samr.c samba-3.0.24/source/rpc_parse/parse_samr.c +--- samba-3.0.24.orig/source/rpc_parse/parse_samr.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_samr.c 2007-08-07 09:38:18.000000000 +0200 +@@ -3337,7 +3337,7 @@ + if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3)) + return False; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && r_u->num_entries2) { + r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2); + r_u->uni_dom_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2); + } +@@ -3476,7 +3476,7 @@ + if(!prs_uint32("num_entries3", ps, depth, &r_u->num_entries3)) + return False; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && r_u->num_entries2) { + r_u->sam = PRS_ALLOC_MEM(ps,SAM_ENTRY,r_u->num_entries2); + r_u->uni_grp_name = PRS_ALLOC_MEM(ps,UNISTR2,r_u->num_entries2); + } +@@ -4980,12 +4980,13 @@ + return False; + } + +- if (UNMARSHALLING(ps)) ++ if (UNMARSHALLING(ps) && r_u->num_rids2) { + r_u->rids = PRS_ALLOC_MEM(ps, uint32, r_u->num_rids2); + +- if (!r_u->rids) { +- DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n")); +- return False; ++ if (!r_u->rids) { ++ DEBUG(0, ("NULL rids in samr_io_r_lookup_names\n")); ++ return False; ++ } + } + + for (i = 0; i < r_u->num_rids2; i++) { +@@ -5009,12 +5010,13 @@ + return False; + } + +- if (UNMARSHALLING(ps)) ++ if (UNMARSHALLING(ps) && r_u->num_types2) { + r_u->types = PRS_ALLOC_MEM(ps, uint32, r_u->num_types2); + +- if (!r_u->types) { +- DEBUG(0, ("NULL types in samr_io_r_lookup_names\n")); +- return False; ++ if (!r_u->types) { ++ DEBUG(0, ("NULL types in samr_io_r_lookup_names\n")); ++ return False; ++ } + } + + for (i = 0; i < r_u->num_types2; i++) { +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_sec.c samba-3.0.24/source/rpc_parse/parse_sec.c +--- samba-3.0.24.orig/source/rpc_parse/parse_sec.c 2005-04-18 18:38:20.000000000 +0200 ++++ samba-3.0.24/source/rpc_parse/parse_sec.c 2007-08-07 09:38:18.000000000 +0200 +@@ -122,7 +122,7 @@ + for you as it reads them. + ********************************************************************/ + +-BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth) ++static BOOL sec_io_acl(const char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth) + { + unsigned int i; + uint32 old_offset; +@@ -165,13 +165,10 @@ + return False; + + if (UNMARSHALLING(ps)) { +- /* +- * Even if the num_aces is zero, allocate memory as there's a difference +- * between a non-present DACL (allow all access) and a DACL with no ACE's +- * (allow no access). +- */ +- if((psa->ace = PRS_ALLOC_MEM(ps, SEC_ACE, psa->num_aces+1)) == NULL) +- return False; ++ if (psa->num_aces) { ++ if((psa->ace = PRS_ALLOC_MEM(ps, SEC_ACE, psa->num_aces)) == NULL) ++ return False; ++ } + } + + for (i = 0; i < psa->num_aces; i++) { +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_spoolss.c samba-3.0.24/source/rpc_parse/parse_spoolss.c +--- samba-3.0.24.orig/source/rpc_parse/parse_spoolss.c 2007-02-04 19:59:22.000000000 +0100 ++++ samba-3.0.24/source/rpc_parse/parse_spoolss.c 2007-08-07 09:38:18.000000000 +0200 +@@ -227,8 +227,13 @@ + if(!prs_uint32("count2", ps, depth, &type->count2)) + return False; + +- if (type->count2 != type->count) ++ if (type->count2 != type->count) { + DEBUG(4,("What a mess, count was %x now is %x !\n", type->count, type->count2)); ++ return False; ++ } ++ if (type->count2 > MAX_NOTIFY_TYPE_FOR_NOW) { ++ return False; ++ } + + /* parse the option type data */ + for(i=0;icount2;i++) +@@ -252,7 +257,7 @@ + return False; + + /* reading */ +- if (UNMARSHALLING(ps)) ++ if (UNMARSHALLING(ps) && ctr->count) + if((ctr->type=PRS_ALLOC_MEM(ps,SPOOL_NOTIFY_OPTION_TYPE,ctr->count)) == NULL) + return False; + +@@ -411,7 +416,7 @@ + if(!prs_uint32("string length", ps, depth, &data->notify_data.data.length)) + return False; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && data->notify_data.data.length) { + data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16, + data->notify_data.data.length); + +@@ -430,7 +435,7 @@ + + case NOTIFY_POINTER: + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && data->notify_data.data.length) { + data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16, + data->notify_data.data.length); + +@@ -490,9 +495,13 @@ + + /* Tallocate memory for string */ + +- data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16, x * 2); +- if (!data->notify_data.data.string) +- return False; ++ if (x) { ++ data->notify_data.data.string = PRS_ALLOC_MEM(ps, uint16, x * 2); ++ if (!data->notify_data.data.string) ++ return False; ++ } else { ++ data->notify_data.data.string = NULL; ++ } + + if(!prs_uint16uni(True,"string",ps,depth,data->notify_data.data.string,x)) + return False; +@@ -3893,7 +3902,16 @@ + } + case 3: + { +- ptr_sec_desc = q_u->info.info_3->secdesc_ptr; ++ /* FIXME ! Our parsing here is wrong I think, ++ * but for a level3 it makes no sense for ++ * ptr_sec_desc to be NULL. JRA. Based on ++ * a Vista sniff from Martin Zielinski . ++ */ ++ if (UNMARSHALLING(ps)) { ++ ptr_sec_desc = 1; ++ } else { ++ ptr_sec_desc = q_u->info.info_3->secdesc_ptr; ++ } + break; + } + } +@@ -5931,14 +5949,14 @@ + case REG_BINARY: + case REG_DWORD: + case REG_MULTI_SZ: +- if (q_u->max_len) { +- if (UNMARSHALLING(ps)) +- q_u->data=PRS_ALLOC_MEM(ps, uint8, q_u->max_len); +- if(q_u->data == NULL) +- return False; +- if(!prs_uint8s(False,"data", ps, depth, q_u->data, q_u->max_len)) +- return False; +- } ++ if (q_u->max_len) { ++ if (UNMARSHALLING(ps)) ++ q_u->data=PRS_ALLOC_MEM(ps, uint8, q_u->max_len); ++ if(q_u->data == NULL) ++ return False; ++ if(!prs_uint8s(False,"data", ps, depth, q_u->data, q_u->max_len)) ++ return False; ++ } + if(!prs_align(ps)) + return False; + break; +@@ -6956,7 +6974,7 @@ + + /* first loop to write basic enum_value information */ + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && ctr->size_of_array) { + ctr->values = PRS_ALLOC_MEM(ps, PRINTER_ENUM_VALUES, ctr->size_of_array); + if (!ctr->values) + return False; +diff -urN samba-3.0.24.orig/source/rpc_parse/parse_srv.c samba-3.0.24/source/rpc_parse/parse_srv.c +--- samba-3.0.24.orig/source/rpc_parse/parse_srv.c 2005-04-18 18:38:20.000000000 +0200 ++++ samba-3.0.24/source/rpc_parse/parse_srv.c 2007-08-07 09:38:18.000000000 +0200 +@@ -782,7 +782,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info0 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_0, num_entries))) + return False; + ctr->share.info0 = info0; +@@ -808,7 +808,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_1, num_entries))) + return False; + ctr->share.info1 = info1; +@@ -834,7 +834,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info2 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_2,num_entries))) + return False; + ctr->share.info2 = info2; +@@ -859,7 +859,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info501 = PRS_ALLOC_MEM(ps, SRV_SHARE_INFO_501, num_entries))) + return False; + ctr->share.info501 = info501; +@@ -884,7 +884,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info502 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_502,num_entries))) + return False; + ctr->share.info502 = info502; +@@ -910,7 +910,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1004 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1004,num_entries))) + return False; + ctr->share.info1004 = info1004; +@@ -936,7 +936,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1005 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1005,num_entries))) + return False; + ctr->share.info1005 = info1005; +@@ -956,7 +956,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1006 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1006,num_entries))) + return False; + ctr->share.info1006 = info1006; +@@ -976,7 +976,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1007 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1007,num_entries))) + return False; + ctr->share.info1007 = info1007; +@@ -1002,7 +1002,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info1501 = PRS_ALLOC_MEM(ps,SRV_SHARE_INFO_1501,num_entries))) + return False; + ctr->share.info1501 = info1501; +@@ -2558,7 +2558,7 @@ + int num_entries = ctr->num_entries; + int i; + +- if (UNMARSHALLING(ps)) { ++ if (UNMARSHALLING(ps) && num_entries) { + if (!(info3 = PRS_ALLOC_MEM(ps, SRV_FILE_INFO_3, num_entries))) + return False; + ctr->file.info3 = info3; +@@ -3377,7 +3377,7 @@ + + r_n->disk_enum_ctr.entries_read = entries_read3; + +- if(UNMARSHALLING(ps)) { ++ if(UNMARSHALLING(ps) && entries_read3) { + + DISK_INFO *dinfo; + +@@ -3386,7 +3386,7 @@ + r_n->disk_enum_ctr.disk_info = dinfo; + } + +- for(i=0; i < r_n->disk_enum_ctr.entries_read; i++) { ++ for(i=0; i < entries_read3; i++) { + + if(!prs_uint32("unknown", ps, depth, &r_n->disk_enum_ctr.disk_info[i].unknown)) + return False; +diff -urN samba-3.0.24.orig/source/rpc_server/srv_pipe.c samba-3.0.24/source/rpc_server/srv_pipe.c +--- samba-3.0.24.orig/source/rpc_server/srv_pipe.c 2007-02-04 19:59:21.000000000 +0100 ++++ samba-3.0.24/source/rpc_server/srv_pipe.c 2007-07-17 13:19:05.000000000 +0200 +@@ -2331,6 +2331,7 @@ + int n_cmds = 0; + + switch ( idx ) { ++#ifndef AVM_SMALLER + case PI_LSARPC: + lsa_get_pipe_fns( &cmds, &n_cmds ); + break; +@@ -2343,12 +2344,14 @@ + case PI_NETLOGON: + netlog_get_pipe_fns( &cmds, &n_cmds ); + break; ++#endif /* AVM_SMALLER */ + case PI_SRVSVC: + srvsvc_get_pipe_fns( &cmds, &n_cmds ); + break; + case PI_WKSSVC: + wkssvc_get_pipe_fns( &cmds, &n_cmds ); + break; ++#ifndef AVM_SMALLER + case PI_WINREG: + reg_get_pipe_fns( &cmds, &n_cmds ); + break; +@@ -2367,6 +2370,8 @@ + case PI_NTSVCS: + ntsvcs_get_pipe_fns( &cmds, &n_cmds ); + break; ++#endif /* AVM_SMALLER */ ++ + #ifdef DEVELOPER + case PI_ECHO: + echo_get_pipe_fns( &cmds, &n_cmds ); +diff -urN samba-3.0.24.orig/source/rpc_server/srv_spoolss.c samba-3.0.24/source/rpc_server/srv_spoolss.c +--- samba-3.0.24.orig/source/rpc_server/srv_spoolss.c 2006-04-20 04:29:27.000000000 +0200 ++++ samba-3.0.24/source/rpc_server/srv_spoolss.c 2007-08-07 09:38:18.000000000 +0200 +@@ -1477,6 +1477,15 @@ + ZERO_STRUCT(r_u); + + if(!spoolss_io_q_addprinterdriverex("", &q_u, data, 0)) { ++ if (q_u.level != 3 && q_u.level != 6) { ++ /* Clever hack from Martin Zielinski ++ * to allow downgrade from level 8 (Vista). ++ */ ++ DEBUG(3,("api_spoolss_addprinterdriverex: unknown SPOOL_Q_ADDPRINTERDRIVEREX level %u.\n", ++ (unsigned int)q_u.level )); ++ setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_INVALID_TAG)); ++ return True; ++ } + DEBUG(0,("spoolss_io_q_addprinterdriverex: unable to unmarshall SPOOL_Q_ADDPRINTERDRIVEREX.\n")); + return False; + } +diff -urN samba-3.0.24.orig/source/rpc_server/srv_spoolss_nt.c samba-3.0.24/source/rpc_server/srv_spoolss_nt.c +--- samba-3.0.24.orig/source/rpc_server/srv_spoolss_nt.c 2007-02-04 19:59:21.000000000 +0100 ++++ samba-3.0.24/source/rpc_server/srv_spoolss_nt.c 2007-08-07 09:38:18.000000000 +0200 +@@ -5848,6 +5848,12 @@ + goto done; + } + ++ if (!secdesc_ctr) { ++ DEBUG(10,("update_printer_sec: secdesc_ctr is NULL !\n")); ++ result = WERR_INVALID_PARAM; ++ goto done; ++ } ++ + /* Check the user has permissions to change the security + descriptor. By experimentation with two NT machines, the user + requires Full Access to the printer to change security +@@ -9378,6 +9384,15 @@ + + /* housekeeping information in the reply */ + ++ /* Fix from Martin Zielinski - ensure ++ * the hand marshalled container size is a multiple ++ * of 4 bytes for RPC alignment. ++ */ ++ ++ if (needed % 4) { ++ needed += 4-(needed % 4); ++ } ++ + r_u->needed = needed; + r_u->returned = num_entries; + +diff -urN samba-3.0.24.orig/source/smbd/change_trust_pw.c samba-3.0.24/source/smbd/change_trust_pw.c +--- samba-3.0.24.orig/source/smbd/change_trust_pw.c 2005-10-18 04:44:56.000000000 +0200 ++++ samba-3.0.24/source/smbd/change_trust_pw.c 2007-07-17 13:19:05.000000000 +0200 +@@ -30,6 +30,10 @@ + + NTSTATUS change_trust_account_password( const char *domain, const char *remote_machine) + { ++#ifdef AVM_SMALLER ++ return NT_STATUS_UNSUCCESSFUL; ++#else ++ + NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; + struct in_addr pdc_ip; + fstring dc_name; +@@ -95,4 +99,5 @@ + DEBUG(5,("change_trust_account_password: sucess!\n")); + + return nt_status; ++#endif /* AVM_SMALLER */ + } +diff -urN samba-3.0.24.orig/source/smbd/close.c samba-3.0.24/source/smbd/close.c +--- samba-3.0.24.orig/source/smbd/close.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/close.c 2007-07-17 13:19:05.000000000 +0200 +@@ -295,7 +295,9 @@ + } + + if (fsp->print_file) { ++#ifndef AVM_NO_PRINTING + print_fsp_end(fsp, close_type); ++#endif + file_free(fsp); + return 0; + } +diff -urN samba-3.0.24.orig/source/smbd/conn.c samba-3.0.24/source/smbd/conn.c +--- samba-3.0.24.orig/source/smbd/conn.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/conn.c 2007-07-17 13:19:05.000000000 +0200 +@@ -205,10 +205,13 @@ + * idle with a handle open. + */ + ++ ++#ifndef AVM_SMALLER + for (plist = get_first_internal_pipe(); plist; plist = get_next_internal_pipe(plist)) + if (plist->pipe_handles && plist->pipe_handles->count) + allidle = False; +- ++#endif ++ + return allidle; + } + +diff -urN samba-3.0.24.orig/source/smbd/dfree.c samba-3.0.24/source/smbd/dfree.c +--- samba-3.0.24.orig/source/smbd/dfree.c 2005-11-09 19:28:55.000000000 +0100 ++++ samba-3.0.24/source/smbd/dfree.c 2007-07-17 13:19:05.000000000 +0200 +@@ -130,11 +130,13 @@ + } + } + ++#if 0 /* AR7 */ + if (disk_quotas(path, &bsize_q, &dfree_q, &dsize_q)) { + (*bsize) = bsize_q; + (*dfree) = MIN(*dfree,dfree_q); + (*dsize) = MIN(*dsize,dsize_q); + } ++#endif + + /* FIXME : Any reason for this assumption ? */ + if (*bsize < 256) { +diff -urN samba-3.0.24.orig/source/smbd/dir.c samba-3.0.24/source/smbd/dir.c +--- samba-3.0.24.orig/source/smbd/dir.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/dir.c 2007-08-07 09:38:18.000000000 +0200 +@@ -1255,3 +1255,42 @@ + } + return False; + } ++ ++/***************************************************************** ++ Is this directory empty ? ++*****************************************************************/ ++ ++NTSTATUS can_delete_directory(struct connection_struct *conn, ++ const char *dirname) ++{ ++ NTSTATUS status = NT_STATUS_OK; ++ long dirpos = 0; ++ const char *dname; ++ struct smb_Dir *dir_hnd = OpenDir(conn, dirname, NULL, 0); ++ ++ if (!dir_hnd) { ++ return map_nt_error_from_unix(errno); ++ } ++ ++ while ((dname = ReadDirName(dir_hnd,&dirpos))) { ++ SMB_STRUCT_STAT st; ++ ++ /* Quick check for "." and ".." */ ++ if (dname[0] == '.') { ++ if (!dname[1] || (dname[1] == '.' && !dname[2])) { ++ continue; ++ } ++ } ++ ++ if (!is_visible_file(conn, dirname, dname, &st, True)) { ++ continue; ++ } ++ ++ DEBUG(10,("can_delete_directory: got name %s - can't delete\n", dname )); ++ status = NT_STATUS_DIRECTORY_NOT_EMPTY; ++ break; ++ } ++ CloseDir(dir_hnd); ++ ++ return status; ++} +diff -urN samba-3.0.24.orig/source/smbd/dosmode.c samba-3.0.24/source/smbd/dosmode.c +--- samba-3.0.24.orig/source/smbd/dosmode.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/dosmode.c 2007-07-17 13:19:05.000000000 +0200 +@@ -48,12 +48,15 @@ + if (ISDOT(path) || ISDOTDOT(path)) { + return 0; + } +- ++#ifdef AVM_SMALLER ++ return 0; ++#else + if (!lp_dmapi_support(SNUM(conn)) || !dmapi_have_session()) { + return 0; + } + + return dmapi_file_flags(path); ++#endif + } + + /**************************************************************************** +diff -urN samba-3.0.24.orig/source/smbd/fileio.c samba-3.0.24/source/smbd/fileio.c +--- samba-3.0.24.orig/source/smbd/fileio.c 2005-10-18 04:44:57.000000000 +0200 ++++ samba-3.0.24/source/smbd/fileio.c 2007-08-07 09:38:18.000000000 +0200 +@@ -176,6 +176,8 @@ + + static int wcp_file_size_change(files_struct *fsp) + { ++/* AVM: Fuer Pruefung des freien Speichers auf dem Datentraeger wird ++ SMB_VFS_FTRUNCATE aufgerufen, auch falls es langsam sein sollte */ + int ret; + write_cache *wcp = fsp->wcp; + +@@ -199,6 +201,10 @@ + int write_path = -1; + + if (fsp->print_file) { ++#ifdef AVM_NO_PRINTING ++ errno = EBADF; ++ return -1; ++#else + fstring sharename; + uint32 jobid; + +@@ -210,6 +216,7 @@ + } + + return print_job_write(SNUM(fsp->conn), jobid, data, pos, n); ++#endif /* AVM_NO_PRINTING */ + } + + if (!fsp->can_write) { +diff -urN samba-3.0.24.orig/source/smbd/files.c samba-3.0.24/source/smbd/files.c +--- samba-3.0.24.orig/source/smbd/files.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/files.c 2007-07-17 13:19:05.000000000 +0200 +@@ -203,10 +203,12 @@ + exit_server("out of memory in file_init"); + } + ++#ifndef AVM_SMALLER + /* + * Ensure that pipe_handle_oppset is set correctly. + */ + set_pipe_handle_offset(real_max_open_files); ++#endif + } + + /**************************************************************************** +diff -urN samba-3.0.24.orig/source/smbd/lanman.c samba-3.0.24/source/smbd/lanman.c +--- samba-3.0.24.orig/source/smbd/lanman.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/lanman.c 2007-07-17 13:19:05.000000000 +0200 +@@ -378,6 +378,7 @@ + PACK(desc,t,v); + } + ++#ifndef AVM_NO_PRINTING + /**************************************************************************** + Get a print queue. + ****************************************************************************/ +@@ -753,6 +754,7 @@ + + return result; + } ++#endif /* AVM_NO_PRINTING */ + + static BOOL api_DosPrintQGetInfo(connection_struct *conn, + uint16 vuid, char *param,char *data, +@@ -760,6 +762,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -865,6 +870,7 @@ + SAFE_FREE(tmpdata); + + return(True); ++#endif /* AVM_NO_PRINTING */ + } + + /**************************************************************************** +@@ -876,6 +882,9 @@ + char **rdata, char** rparam, + int *rdata_len, int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *param_format = param+2; + char *output_format1 = skip_string(param_format,1); + char *p = skip_string(output_format1,1); +@@ -1004,6 +1013,7 @@ + SAFE_FREE(status); + + return False; ++#endif /* AVM_NO_PRINTING */ + } + + /**************************************************************************** +@@ -2378,6 +2388,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + int function = SVAL(param,0); + char *str1 = param+2; + char *str2 = skip_string(str1,1); +@@ -2438,6 +2451,7 @@ + SSVAL(*rparam,2,0); /* converter word */ + + return(True); ++#endif + } + + /**************************************************************************** +@@ -2449,6 +2463,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + int function = SVAL(param,0); + char *str1 = param+2; + char *str2 = skip_string(str1,1); +@@ -2494,6 +2511,7 @@ + SSVAL(*rparam,2,0); /* converter word */ + + return(True); ++#endif + } + + /**************************************************************************** +@@ -2525,6 +2543,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + struct pack_desc desc; + char *str1 = param+2; + char *str2 = skip_string(str1,1); +@@ -2590,6 +2611,7 @@ + SSVAL(*rparam,2,0); /* converter word */ + + return(True); ++#endif + } + + +@@ -3272,6 +3294,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3358,6 +3383,7 @@ + DEBUG(4,("WPrintJobGetInfo: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + static BOOL api_WPrintJobEnumerate(connection_struct *conn,uint16 vuid, char *param,char *data, +@@ -3365,6 +3391,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3440,6 +3469,7 @@ + DEBUG(4,("WPrintJobEnumerate: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + static int check_printdest_info(struct pack_desc* desc, +@@ -3509,6 +3539,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3573,6 +3606,7 @@ + SAFE_FREE(tmpdata); + + return True; ++#endif + } + + static BOOL api_WPrintDestEnum(connection_struct *conn,uint16 vuid, char *param,char *data, +@@ -3580,6 +3614,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3648,6 +3685,7 @@ + DEBUG(4,("WPrintDestEnumerate: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + static BOOL api_WPrintDriverEnum(connection_struct *conn,uint16 vuid, char *param,char *data, +@@ -3655,6 +3693,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3705,6 +3746,7 @@ + DEBUG(4,("WPrintDriverEnum: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + static BOOL api_WPrintQProcEnum(connection_struct *conn,uint16 vuid, char *param,char *data, +@@ -3712,6 +3754,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3763,6 +3808,7 @@ + DEBUG(4,("WPrintQProcEnum: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + static BOOL api_WPrintPortEnum(connection_struct *conn,uint16 vuid, char *param,char *data, +@@ -3770,6 +3816,9 @@ + char **rdata,char **rparam, + int *rdata_len,int *rparam_len) + { ++#ifdef AVM_NO_PRINTING ++return False; ++#else + char *str1 = param+2; + char *str2 = skip_string(str1,1); + char *p = skip_string(str2,1); +@@ -3822,6 +3871,7 @@ + DEBUG(4,("WPrintPortEnum: errorcode %d\n",desc.errcode)); + + return True; ++#endif + } + + +diff -urN samba-3.0.24.orig/source/smbd/msdfs.c samba-3.0.24/source/smbd/msdfs.c +--- samba-3.0.24.orig/source/smbd/msdfs.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/msdfs.c 2007-08-07 09:38:18.000000000 +0200 +@@ -832,9 +832,13 @@ + + /* create the referral depeding on version */ + DEBUG(10,("max_referral_level :%d\n",max_referral_level)); +- if(max_referral_level<2 || max_referral_level>3) { ++ ++ if (max_referral_level < 2) { + max_referral_level = 2; + } ++ if (max_referral_level > 3) { ++ max_referral_level = 3; ++ } + + switch(max_referral_level) { + case 2: +diff -urN samba-3.0.24.orig/source/smbd/negprot.c samba-3.0.24/source/smbd/negprot.c +--- samba-3.0.24.orig/source/smbd/negprot.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/negprot.c 2007-08-07 09:38:18.000000000 +0200 +@@ -263,6 +263,16 @@ + + global_encrypted_passwords_negotiated = lp_encrypted_passwords(); + ++ /* Check the flags field to see if this is Vista. ++ WinXP sets it and Vista does not. But we have to ++ distinguish from NT which doesn't set it either. */ ++ ++ if ( (SVAL(inbuf, smb_flg2) & FLAGS2_EXTENDED_SECURITY) && ++ ((SVAL(inbuf, smb_flg2) & FLAGS2_UNKNOWN_BIT4) == 0) ) ++ { ++ set_remote_arch( RA_VISTA ); ++ } ++ + /* do spnego in user level security if the client + supports it and we can do encrypted passwords */ + +@@ -393,6 +403,15 @@ + protocol [LANMAN2.1] + protocol [NT LM 0.12] + ++Vista: ++protocol [PC NETWORK PROGRAM 1.0] ++protocol [LANMAN1.0] ++protocol [Windows for Workgroups 3.1a] ++protocol [LM1.2X002] ++protocol [LANMAN2.1] ++protocol [NT LM 0.12] ++protocol [SMB 2.001] ++ + OS/2: + protocol [PC NETWORK PROGRAM 1.0] + protocol [XENIX CORE] +@@ -406,18 +425,19 @@ + * + * This appears to be the matrix of which protocol is used by which + * MS product. +- Protocol WfWg Win95 WinNT Win2K OS/2 +- PC NETWORK PROGRAM 1.0 1 1 1 1 1 ++ Protocol WfWg Win95 WinNT Win2K OS/2 Vista ++ PC NETWORK PROGRAM 1.0 1 1 1 1 1 1 + XENIX CORE 2 2 + MICROSOFT NETWORKS 3.0 2 2 + DOS LM1.2X002 3 3 + MICROSOFT NETWORKS 1.03 3 + DOS LANMAN2.1 4 4 +- LANMAN1.0 4 2 3 +- Windows for Workgroups 3.1a 5 5 5 3 +- LM1.2X002 6 4 4 +- LANMAN2.1 7 5 5 +- NT LM 0.12 6 8 6 ++ LANMAN1.0 4 2 3 2 ++ Windows for Workgroups 3.1a 5 5 5 3 3 ++ LM1.2X002 6 4 4 4 ++ LANMAN2.1 7 5 5 5 ++ NT LM 0.12 6 8 6 6 ++ SMB 2.001 7 + * + * tim@fsg.com 09/29/95 + * Win2K added by matty 17/7/99 +@@ -430,6 +450,7 @@ + #define ARCH_OS2 0x14 /* Again OS/2 is like NT */ + #define ARCH_SAMBA 0x20 + #define ARCH_CIFSFS 0x40 ++#define ARCH_VISTA 0x8C /* Vista is like XP/2K */ + + #define ARCH_ALL 0x7F + +@@ -493,6 +514,8 @@ + arch &= ( ARCH_WFWG | ARCH_WIN95 ); + else if (strcsequal(p,"NT LM 0.12")) + arch &= ( ARCH_WIN95 | ARCH_WINNT | ARCH_WIN2K | ARCH_CIFSFS); ++ else if (strcsequal(p,"SMB 2.001")) ++ arch = ARCH_VISTA; + else if (strcsequal(p,"LANMAN2.1")) + arch &= ( ARCH_WINNT | ARCH_WIN2K | ARCH_OS2 ); + else if (strcsequal(p,"LM1.2X002")) +@@ -537,7 +560,13 @@ + set_remote_arch(RA_WINNT); + break; + case ARCH_WIN2K: +- set_remote_arch(RA_WIN2K); ++ /* Vista may have been set in the negprot so don't ++ override it here */ ++ if ( get_remote_arch() != RA_VISTA ) ++ set_remote_arch(RA_WIN2K); ++ break; ++ case ARCH_VISTA: ++ set_remote_arch(RA_VISTA); + break; + case ARCH_OS2: + set_remote_arch(RA_OS2); +diff -urN samba-3.0.24.orig/source/smbd/open.c samba-3.0.24/source/smbd/open.c +--- samba-3.0.24.orig/source/smbd/open.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/open.c 2007-07-17 13:19:05.000000000 +0200 +@@ -1127,8 +1127,11 @@ + } + + DEBUG(10, ("open_file_ntcreate: printer open fname=%s\n", fname)); +- ++#ifdef AVM_NO_PRINTING ++ return NULL; ++#else + return print_fsp_open(conn, fname); ++#endif + } + + /* We add aARCH to this as this mode is only used if the file is +diff -urN samba-3.0.24.orig/source/smbd/password.c samba-3.0.24/source/smbd/password.c +--- samba-3.0.24.orig/source/smbd/password.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/password.c 2007-07-17 13:19:05.000000000 +0200 +@@ -23,6 +23,8 @@ + /* users from session setup */ + static char *session_userlist = NULL; + static int len_session_userlist = 0; ++/* workgroup from session setup. */ ++static char *session_workgroup = NULL; + + /* this holds info on user ids that are already validated for this VC */ + static user_struct *validated_users; +@@ -406,6 +408,29 @@ + } + + /**************************************************************************** ++ In security=share mode we need to store the client workgroup, as that's ++ what Vista uses for the NTLMv2 calculation. ++****************************************************************************/ ++ ++void add_session_workgroup(const char *workgroup) ++{ ++ if (session_workgroup) { ++ SAFE_FREE(session_workgroup); ++ } ++ session_workgroup = smb_xstrdup(workgroup); ++} ++ ++/**************************************************************************** ++ In security=share mode we need to return the client workgroup, as that's ++ what Vista uses for the NTLMv2 calculation. ++****************************************************************************/ ++ ++const char *get_session_workgroup(void) ++{ ++ return session_workgroup; ++} ++ ++/**************************************************************************** + Check if a user is in a netgroup user list. If at first we don't succeed, + try lower case. + ****************************************************************************/ +diff -urN samba-3.0.24.orig/source/smbd/posix_acls.c samba-3.0.24/source/smbd/posix_acls.c +--- samba-3.0.24.orig/source/smbd/posix_acls.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/posix_acls.c 2007-08-07 09:38:18.000000000 +0200 +@@ -655,6 +655,7 @@ + } + return 0; + } ++ + /**************************************************************************** + Function to create owner and group SIDs from a SMB_STRUCT_STAT. + ****************************************************************************/ +@@ -666,6 +667,27 @@ + } + + /**************************************************************************** ++ Is the identity in two ACEs equal ? Check both SID and uid/gid. ++****************************************************************************/ ++ ++static BOOL identity_in_ace_equal(canon_ace *ace1, canon_ace *ace2) ++{ ++ if (sid_equal(&ace1->trustee, &ace2->trustee)) { ++ return True; ++ } ++ if (ace1->owner_type == ace2->owner_type) { ++ if (ace1->owner_type == UID_ACE && ++ ace1->unix_ug.uid == ace2->unix_ug.uid) { ++ return True; ++ } else if (ace1->owner_type == GID_ACE && ++ ace1->unix_ug.gid == ace2->unix_ug.gid) { ++ return True; ++ } ++ } ++ return False; ++} ++ ++/**************************************************************************** + Merge aces with a common sid - if both are allow or deny, OR the permissions together and + delete the second one. If the first is deny, mask the permissions off and delete the allow + if the permissions become zero, delete the deny if the permissions are non zero. +@@ -692,7 +714,7 @@ + + curr_ace_next = curr_ace->next; /* Save the link in case of delete. */ + +- if (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) && ++ if (identity_in_ace_equal(curr_ace, curr_ace_outer) && + (curr_ace->attr == curr_ace_outer->attr)) { + + if( DEBUGLVL( 10 )) { +@@ -732,7 +754,7 @@ + * we've put on the ACL, we know the deny must be the first one. + */ + +- if (sid_equal(&curr_ace->trustee, &curr_ace_outer->trustee) && ++ if (identity_in_ace_equal(curr_ace, curr_ace_outer) && + (curr_ace_outer->attr == DENY_ACE) && (curr_ace->attr == ALLOW_ACE)) { + + if( DEBUGLVL( 10 )) { +diff -urN samba-3.0.24.orig/source/smbd/process.c samba-3.0.24/source/smbd/process.c +--- samba-3.0.24.orig/source/smbd/process.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/process.c 2007-07-17 13:19:05.000000000 +0200 +@@ -1008,7 +1008,9 @@ + + chain_size = 0; + file_chain_reset(); ++#ifndef AVM_SMALLER + reset_chain_p(); ++#endif + + if (msg_type != 0) + return(reply_special(inbuf,outbuf)); +@@ -1285,8 +1287,10 @@ + if (t != -1) + select_timeout = MIN(select_timeout, t*1000); + ++#ifndef AVM_NO_PRINTING + if (print_notify_messages_pending()) + select_timeout = MIN(select_timeout, 1000); ++#endif + + return select_timeout; + } +@@ -1477,10 +1481,11 @@ + */ + process_blocking_lock_queue(t); + ++#ifndef AVM_NO_PRINTING + /* update printer queue caches if necessary */ +- + update_monitored_printq_cache(); +- ++#endif ++ + /* + * Check to see if we have any change notifies + * outstanding on the queue. +@@ -1494,9 +1499,10 @@ + force_check_log_size(); + check_log_size(); + ++#ifndef AVM_NO_PRINTING + /* Send any queued printer notify message to interested smbd's. */ +- + print_notify_send_messages(0); ++#endif + + /* + * Modify the select timeout depending upon +diff -urN samba-3.0.24.orig/source/smbd/reply.c samba-3.0.24/source/smbd/reply.c +--- samba-3.0.24.orig/source/smbd/reply.c 2007-02-04 20:09:01.000000000 +0100 ++++ samba-3.0.24/source/smbd/reply.c 2007-07-17 13:19:05.000000000 +0200 +@@ -3599,7 +3599,10 @@ + int outsize = 0; + files_struct *fsp; + START_PROFILE(SMBsplopen); +- ++#ifdef AVM_NO_PRINTING ++ END_PROFILE(SMBsplopen); ++ return ERROR_DOS(ERRDOS,ERRnoaccess); ++#else + if (!CAN_PRINT(conn)) { + END_PROFILE(SMBsplopen); + return ERROR_DOS(ERRDOS,ERRnoaccess); +@@ -3621,6 +3624,7 @@ + + END_PROFILE(SMBsplopen); + return(outsize); ++#endif + } + + /**************************************************************************** +@@ -3637,6 +3641,10 @@ + + CHECK_FSP(fsp,conn); + ++#ifdef AVM_NO_PRINTING ++ END_PROFILE(SMBsplretq); ++ return ERROR_DOS(ERRDOS,ERRnoaccess); ++#else + if (!CAN_PRINT(conn)) { + END_PROFILE(SMBsplclose); + return ERROR_NT(NT_STATUS_UNSUCCESSFUL); +@@ -3655,6 +3663,7 @@ + + END_PROFILE(SMBsplclose); + return(outsize); ++#endif + } + + /**************************************************************************** +@@ -3664,6 +3673,10 @@ + int reply_printqueue(connection_struct *conn, + char *inbuf,char *outbuf, int dum_size, int dum_buffsize) + { ++#ifdef AVM_NO_PRINTING ++ END_PROFILE(SMBsplretq); ++ return ERROR_DOS(ERRDOS,ERRnoaccess); ++#else + int outsize = set_message(outbuf,2,3,True); + int max_count = SVAL(inbuf,smb_vwv0); + int start_index = SVAL(inbuf,smb_vwv1); +@@ -3726,6 +3739,7 @@ + + END_PROFILE(SMBsplretq); + return(outsize); ++#endif + } + + /**************************************************************************** +diff -urN samba-3.0.24.orig/source/smbd/server.c samba-3.0.24/source/smbd/server.c +--- samba-3.0.24.orig/source/smbd/server.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/server.c 2008-02-28 11:21:14.000000000 +0100 +@@ -22,7 +22,7 @@ + + #include "includes.h" + +-static_decl_rpc; ++/* AR7 ???? static_decl_rpc; */ + + static int am_parent = 1; + +@@ -41,6 +41,41 @@ + extern int dcelogin_atmost_once; + #endif /* WITH_DFS */ + ++ ++ ++#ifdef SAMBA_DEBUG ++void _fLog(char *fmt, ...) ++{ ++ va_list va; ++ FILE *fp = fopen("/var/tmp/smbd.log", "a"); ++ time_t t = time(0); /* LOG */ ++ ++ if (!fp) return; ++ ++ fprintf(fp, " [%d] %02u:%02u ", getpid(), (t / 60) % 60, t % 60); ++ va_start(va, fmt); ++ vfprintf(fp, fmt, va); ++ va_end(va); ++ fprintf(fp, "\n"); ++ fclose(fp); ++} ++ ++void _fDebug(char *fmt, ...) ++{ ++ va_list va; ++ FILE *fp = fopen("/var/tmp/smbd.log", "a"); ++ time_t t = time(0); /* LOG */ ++ ++ if (!fp) return; ++ ++ fprintf(fp, " [%d] %02u:%02u ", getpid(), (t / 60) % 60, t % 60); ++ va_start(va, fmt); ++ vfprintf(fp, fmt, va); ++ va_end(va); ++ fclose(fp); ++} ++#endif ++ + /* really we should have a top level context structure that has the + client file descriptor as an element. That would require a major rewrite :( + +@@ -523,6 +558,7 @@ + **************************************************************************/ + void reload_printers(void) + { ++#ifndef AVM_NO_PRINTING + int snum; + int n_services = lp_numservices(); + int pnum = lp_servicenumber(PRINTERS_NAME); +@@ -549,6 +585,7 @@ + } + + load_printers(); ++#endif /* AVM_NO_PRINTING */ + } + + /**************************************************************************** +@@ -631,7 +668,9 @@ + + invalidate_all_vuids(); + ++#ifndef AVM_NO_PRINTING + print_notify_send_messages(3); /* 3 second timeout. */ ++#endif + + /* delete our entry in the connections database. */ + yield_connection(NULL,""); +@@ -646,7 +685,9 @@ + #endif + + locking_end(); ++#ifndef AVM_NO_PRINTING + printing_end(); ++#endif + + if (how != SERVER_EXIT_NORMAL) { + int oldlevel = DEBUGLEVEL; +@@ -729,7 +770,9 @@ + mkproto.h. Mixing $(builddir) and $(srcdir) source files in the current + prototype generation system is too complicated. */ + ++#if 0 /* AR7 */ + void build_options(BOOL screen); ++#endif + + int main(int argc,const char *argv[]) + { +@@ -741,6 +784,13 @@ + static BOOL log_stdout = False; + static char *ports = NULL; + int opt; ++ ++#if 0 // AVM DEBUG ++ extern void crashdump_init(char*); ++ crashdump_init("smbd"); ++#endif ++ ++#ifndef AVM_NO_POPT + poptContext pc; + + struct poptOption long_options[] = { +@@ -750,7 +800,9 @@ + {"foreground", 'F', POPT_ARG_VAL, &Fork, False, "Run daemon in foreground (for daemontools, etc.)" }, + {"no-process-group", '\0', POPT_ARG_VAL, &no_process_group, True, "Don't create a new process group" }, + {"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" }, ++#if 0 /* AR7 */ + {"build-options", 'b', POPT_ARG_NONE, NULL, 'b', "Print build options" }, ++#endif + {"port", 'p', POPT_ARG_STRING, &ports, 0, "Listen on the specified ports"}, + POPT_COMMON_SAMBA + POPT_COMMON_DYNCONFIG +@@ -766,21 +818,31 @@ + pc = poptGetContext("smbd", argc, argv, long_options, 0); + + while((opt = poptGetNextOpt(pc)) != -1) { ++#if 0 /* AR7 */ + switch (opt) { + case 'b': + build_options(True); /* Display output to screen as well as debug */ + exit(0); + break; + } ++#endif + } + + poptFreeContext(pc); ++#else ++ load_case_tables(); ++#endif /* AVM_NO_POPT */ ++ + + #ifdef HAVE_SETLUID + /* needed for SecureWare on SCO */ + setluid(0); + #endif + ++#if 1 /* AVM */ ++ setpriority(PRIO_PROCESS, 0, 19); /* be nice */ ++#endif ++ + sec_init(); + + set_remote_machine_name("smbd", False); +@@ -808,6 +870,16 @@ + /* make absolutely sure we run as root - to handle cases where people + are crazy enough to have it setuid */ + ++ generate_random_buffer(NULL, 0); ++ ++ /* make absolutely sure we run as root - to handle cases where people ++ are crazy enough to have it setuid */ ++ ++ gain_root_privilege(); ++ gain_root_group_privilege(); ++ ++ fault_setup((void (*)(void *))exit_server_fault); ++ dump_core_setup("smbd"); + gain_root_privilege(); + gain_root_group_privilege(); + +@@ -850,8 +922,10 @@ + DEBUG(2,("uid=%d gid=%d euid=%d egid=%d\n", + (int)getuid(),(int)getgid(),(int)geteuid(),(int)getegid())); + ++#if 0 /* AR7 */ + /* Output the build options to the debug log */ + build_options(False); ++#endif + + if (sizeof(uint16) < 2 || sizeof(uint32) < 4) { + DEBUG(0,("ERROR: Samba is not configured correctly for the word size on your machine\n")); +@@ -945,16 +1019,20 @@ + + namecache_enable(); + ++#ifndef AVM_SMALLER + if (!init_registry()) + exit(1); ++#endif + + #if 0 + if (!init_svcctl_db()) + exit(1); + #endif + ++#ifndef AVM_NO_PRINTING + if (!print_backend_init()) + exit(1); ++#endif + + if (!init_guest_info()) { + DEBUG(0,("ERROR: failed to setup guest info.\n")); +@@ -971,14 +1049,18 @@ + smbd is launched via inetd and we fork a copy of + ourselves here */ + ++#ifndef AVM_NO_PRINTING + if ( is_daemon && !interactive ) + start_background_queue(); ++#endif + ++#if 0 /* AVM */ + /* Always attempt to initialize DMAPI. We will only use it later if + * lp_dmapi_support is set on the share, but we need a single global + * session to work with. + */ + dmapi_init_session(); ++#endif + + if (!open_sockets_smbd(is_daemon, interactive, ports)) + exit(1); +@@ -987,7 +1069,12 @@ + * everything after this point is run after the fork() + */ + ++#if 0 /* AR7 */ + static_init_rpc; ++#else ++ rpc_wks_init(); ++ rpc_srv_init(); ++#endif + + init_modules(); + +diff -urN samba-3.0.24.orig/source/smbd/service.c samba-3.0.24/source/smbd/service.c +--- samba-3.0.24.orig/source/smbd/service.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/service.c 2007-07-17 13:19:05.000000000 +0200 +@@ -254,6 +254,7 @@ + iService = add_home_service(service,service /* 'username' */, phome_dir); + } + ++#ifndef AVM_NO_PRINTING + /* If we still don't have a service, attempt to add it as a printer. */ + if (iService < 0) { + int iPrinterService; +@@ -273,6 +274,7 @@ + } + } + } ++#endif /* AVM_NO_PRINTING */ + + /* Check for default vfs service? Unsure whether to implement this */ + if (iService < 0) { +@@ -1136,7 +1138,9 @@ + void close_cnum(connection_struct *conn, uint16 vuid) + { + if (IS_IPC(conn)) { ++#ifndef AVM_SMALLER + pipe_close_conn(conn); ++#endif + } else { + file_close_conn(conn); + dptr_closecnum(conn); +diff -urN samba-3.0.24.orig/source/smbd/sesssetup.c samba-3.0.24/source/smbd/sesssetup.c +--- samba-3.0.24.orig/source/smbd/sesssetup.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/sesssetup.c 2007-07-17 13:19:05.000000000 +0200 +@@ -1035,6 +1035,7 @@ + + map_username(sub_user); + add_session_user(sub_user); ++ add_session_workgroup(domain); + /* Then force it to null for the benfit of the code below */ + *user = 0; + } +diff -urN samba-3.0.24.orig/source/smbd/trans2.c samba-3.0.24/source/smbd/trans2.c +--- samba-3.0.24.orig/source/smbd/trans2.c 2007-02-04 20:09:01.000000000 +0100 ++++ samba-3.0.24/source/smbd/trans2.c 2007-07-17 13:19:05.000000000 +0200 +@@ -2636,13 +2636,16 @@ + quotas.qflags = SVAL(pdata,40); + + /* unknown_2 6 NULL bytes follow*/ +- ++ + /* now set the quotas */ ++#if 1 /* AR7 */ ++ return ERROR_DOS(ERRSRV,ERRerror); ++#else + if (vfs_set_ntquota(fsp, SMB_USER_FS_QUOTA_TYPE, NULL, "as)!=0) { + DEBUG(0,("vfs_set_ntquota() failed for service [%s]\n",lp_servicename(SNUM(conn)))); + return ERROR_DOS(ERRSRV,ERRerror); + } +- ++#endif + break; + } + default: +diff -urN samba-3.0.24.orig/source/smbd/uid.c samba-3.0.24/source/smbd/uid.c +--- samba-3.0.24.orig/source/smbd/uid.c 2006-04-20 04:29:19.000000000 +0200 ++++ samba-3.0.24/source/smbd/uid.c 2007-08-07 09:38:18.000000000 +0200 +@@ -151,7 +151,9 @@ + char group_c; + BOOL must_free_token = False; + NT_USER_TOKEN *token = NULL; +- ++ int num_groups = 0; ++ gid_t *group_list = NULL; ++ + if (!conn) { + DEBUG(2,("change_to_user: Connection not open\n")); + return(False); +@@ -190,14 +192,14 @@ + if (conn->force_user) /* security = share sets this too */ { + uid = conn->uid; + gid = conn->gid; +- current_user.ut.groups = conn->groups; +- current_user.ut.ngroups = conn->ngroups; ++ group_list = conn->groups; ++ num_groups = conn->ngroups; + token = conn->nt_user_token; + } else if (vuser) { + uid = conn->admin_user ? 0 : vuser->uid; + gid = vuser->gid; +- current_user.ut.ngroups = vuser->n_groups; +- current_user.ut.groups = vuser->groups; ++ num_groups = vuser->n_groups; ++ group_list = vuser->groups; + token = vuser->nt_user_token; + } else { + DEBUG(2,("change_to_user: Invalid vuid used %d in accessing " +@@ -230,8 +232,8 @@ + */ + + int i; +- for (i = 0; i < current_user.ut.ngroups; i++) { +- if (current_user.ut.groups[i] == conn->gid) { ++ for (i = 0; i < num_groups; i++) { ++ if (group_list[i] == conn->gid) { + gid = conn->gid; + gid_to_sid(&token->user_sids[1], gid); + break; +@@ -243,6 +245,12 @@ + } + } + ++ /* Now set current_user since we will immediately also call ++ set_sec_ctx() */ ++ ++ current_user.ut.ngroups = num_groups; ++ current_user.ut.groups = group_list; ++ + set_sec_ctx(uid, gid, current_user.ut.ngroups, current_user.ut.groups, + token); + +diff -urN samba-3.0.24.orig/source/smbd/vfs-wrap.c samba-3.0.24/source/smbd/vfs-wrap.c +--- samba-3.0.24.orig/source/smbd/vfs-wrap.c 2007-02-04 19:59:13.000000000 +0100 ++++ samba-3.0.24/source/smbd/vfs-wrap.c 2007-08-07 09:38:18.000000000 +0200 +@@ -694,6 +694,44 @@ + return result; + } + ++#if 1 // AVM patch - don't growth the file (too much time and RAM for copy of large files to USB1.1 FAT filesystem) ++ { ++ SMB_BIG_UINT big_len = len; ++ ++ result = SMB_VFS_FSTAT(fsp,fsp->fh->fd,&st); ++ if (result == -1) { ++ goto done; ++ } ++ ++ if (big_len == (SMB_BIG_UINT)st.st_size) { ++ result = 0; ++ goto done; ++ } ++ ++ if (big_len > (SMB_BIG_UINT)st.st_size) { ++ SMB_BIG_UINT space_avail; ++ SMB_BIG_UINT bsize,dfree,dsize; ++ big_len -= st.st_size; ++ big_len /= 1024; /* Len is now number of 1k blocks needed. */ ++ space_avail = SMB_VFS_DISK_FREE(fsp->conn ,fsp->fsp_name,False,&bsize,&dfree,&dsize); ++ if (space_avail == (SMB_BIG_UINT)-1) { ++ result = -1; ++ goto done; ++ } ++ ++ if (big_len > space_avail) { ++ errno = ENOSPC; ++ result = -1; ++ goto done; ++ } ++ ++ // do nothing to be fast! ++ result = 0; ++ goto done; ++ } ++ } // block ++#endif // AVM Patch ++ + /* we used to just check HAVE_FTRUNCATE_EXTEND and only use + sys_ftruncate if the system supports it. Then I discovered that + you can have some filesystems that support ftruncate +diff -urN samba-3.0.24.orig/source/utils/avm_smbpasswd.c samba-3.0.24/source/utils/avm_smbpasswd.c +--- samba-3.0.24.orig/source/utils/avm_smbpasswd.c 1970-01-01 01:00:00.000000000 +0100 ++++ samba-3.0.24/source/utils/avm_smbpasswd.c 2007-10-23 12:27:13.000000000 +0200 +@@ -0,0 +1,213 @@ ++/* ++ * Unix SMB/CIFS implementation. ++ * Copyright (C) Jeremy Allison 1995-1998 ++ * Copyright (C) Tim Potter 2001 ++ * ++ * 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" ++ ++ ++void E_md4hash(const char *passwd, uchar p16[16]) ++{ ++ int len; ++ smb_ucs2_t wpwd[129]; ++ int i; ++ ++ ++ /* Password must be converted to NT unicode - null terminated. */ ++ len = strlen(passwd); ++#if 0 ++ push_ucs2(NULL, wpwd, (const char *)passwd, 256, STR_UNICODE|STR_NOALIGN|STR_TERMINATE); ++#else ++ for (i = 0; i < len; i++) { ++ wpwd[i] = (unsigned char)passwd[i]; ++ } ++ wpwd[i] = 0; // termination ++#endif ++ /* Calculate length in bytes */ ++ len = len /*strlen_w(wpwd)*/ * sizeof(int16); ++ ++ mdfour(p16, (unsigned char *)wpwd, len); ++ ZERO_STRUCT(wpwd); ++} ++ ++/** ++ * Creates the DES forward-only Hash of the users password in DOS ASCII charset ++ * @param passwd password in 'unix' charset. ++ * @param p16 return password hashed with DES, caller allocated 16 byte buffer ++ * @return False if password was > 14 characters, and therefore may be incorrect, otherwise True ++ * @note p16 is filled in regardless ++ */ ++ ++BOOL E_deshash(const char *passwd, uchar p16[16]) ++{ ++ BOOL ret = True; ++ char dospwd[256+2]; ++ int i; ++ int len; ++ ++ /* Password must be converted to DOS charset - null terminated, uppercase. */ ++// push_ascii(dospwd, passwd, sizeof(dospwd), STR_UPPER|STR_TERMINATE); ++ len = strlen(passwd); ++ for (i = 0; i < len; i++) { ++ char c = passwd[i]; ++ if (islower(c)) c = toupper(c); ++ dospwd[i] = c; ++ } ++ dospwd[i] = 0; ++ ++ /* Only the fisrt 14 chars are considered, password need not be null terminated. */ ++ E_P16((const unsigned char *)dospwd, p16); ++ ++ if (strlen(dospwd) > 14) { ++ ret = False; ++ } ++ ++ memset(dospwd, 0, sizeof(dospwd)); ++ // ZERO_STRUCT(dospwd); ++ ++ return ret; ++} ++ ++static void my_pdb_sethexpwd(char *p, const unsigned char *pwd) ++{ ++ if (pwd != NULL) { ++ int i; ++ for (i = 0; i < 16; i++) ++ slprintf(&p[i*2], 3, "%02X", pwd[i]); ++ } else { ++ strncpy(p, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 32); ++ } ++} ++ ++static void crypt_password (const char *user_name, ++ const char *new_passwd, char *new_lanman_p16, char *new_nt_p16) ++{ ++ /* Calculate the MD4 hash (NT compatible) of the password */ ++ E_md4hash(new_passwd, new_nt_p16); ++ ++ if (!E_deshash(new_passwd, new_lanman_p16)) { ++ /* E_deshash returns false for 'long' passwords (> 14 ++ DOS chars). This allows us to match Win2k, which ++ does not store a LM hash for these passwords (which ++ would reduce the effective password length to 14 */ ++ ++ memset(new_lanman_p16, 0, LM_HASH_LEN); ++ } ++} ++ ++/* ++ftpuser:1000:8C6F5D02DEB21501AAD3B435B51404EE:E0FBA38268D0EC66EF1CB452D5885E53:[UX ]:LCT-00000000: ++*/ ++ ++/********************************************************* ++ Start here. ++**********************************************************/ ++int main(int argc, char **argv) ++{ ++ char *passwd_filename = "/var/samba/private/smbpasswd"; ++ char *cleartext_filename = "/var/tmp/smbpasswd.cleartext"; ++ ++ if (argc != 1) { ++ fprintf(stderr, "use: smbpasswd\n"); ++ fprintf(stderr, " file %s will be encrypted to %s\n", cleartext_filename, passwd_filename); ++ return -9; ++ } ++ ++ FILE *fp = fopen(passwd_filename, "w"); ++ ++ if (fp == NULL) { ++ fprintf(stderr, "can't write %s\n", passwd_filename); ++ return -10; ++ } ++ /* Make sure it is only rw by the owner */ ++ chmod(passwd_filename, 0600); ++ ++ ++ FILE *fp_in = fopen(cleartext_filename, "r"); ++ if (!fp_in) { ++ fprintf(stderr, "can't read %s\n", cleartext_filename); ++ fclose(fp); ++ return -11; ++ } ++ ++ ++ char line[512]; ++ ++ unsigned nusers = 0; ++ while(line == fgets(line, sizeof(line)-1, fp_in)) { ++ char *username, *passwd, *extra; ++ unsigned uid; ++ uchar new_lanman_p16[LM_HASH_LEN]; ++ uchar new_nt_p16[NT_HASH_LEN]; ++ char ascii_p16[32+1]; ++ char *p; ++ ++ line[sizeof(line)-1] = '\0'; ++ if (strlen(line)) { ++ p = &line[strlen(line)-1]; ++ while(p >= line) { ++ if (*p != '\n' && *p != '\r') break; ++ *p = '\0'; ++ p--; ++ } ++ } ++ ++ p = line; ++ char *p2 = strchr(p, ':'); ++ if (!p2) goto err; ++ *p2 = 0; ++ username = p; ++ ++ p = p2 + 1; ++ p2 = strchr(p, ':'); ++ if (!p2) goto err; ++ *p2 = 0; ++ uid = atoi(p); ++ ++ p = p2 + 1; ++ p2 = strchr(p, ':'); ++ if (!p2) goto err; ++ *p2 = 0; ++ passwd = p; ++ ++ extra = p2 + 1; ++ ++ crypt_password(username, passwd, new_lanman_p16, new_nt_p16); ++ ++ fprintf(fp, "%s:%u:", username, uid); ++ ++ my_pdb_sethexpwd(ascii_p16, new_lanman_p16); ++ ascii_p16[32] = '\0'; ++ fprintf(fp, "%s:", ascii_p16); ++ ++ my_pdb_sethexpwd(ascii_p16, new_nt_p16); ++ ascii_p16[32] = '\0'; ++ fprintf(fp, "%s:", ascii_p16); ++ ++ fprintf(fp, "%s\n", extra); ++ ++ nusers++; ++ } // while ++ ++err: ++ fclose(fp_in); ++ fclose(fp); ++ ++fprintf(stderr, "%u samba users written to %s\n", nusers, passwd_filename); ++ return 0; ++} ++ +diff -urN samba-3.0.24.orig/source/utils/ntlm_auth_proto.h samba-3.0.24/source/utils/ntlm_auth_proto.h +--- samba-3.0.24.orig/source/utils/ntlm_auth_proto.h 1970-01-01 01:00:00.000000000 +0100 ++++ samba-3.0.24/source/utils/ntlm_auth_proto.h 2007-07-17 13:19:05.000000000 +0200 +@@ -0,0 +1,28 @@ ++#ifndef _NTLM_AUTH_PROTO_H_ ++#define _NTLM_AUTH_PROTO_H_ ++ ++/* This file is automatically generated with "make proto". DO NOT EDIT */ ++ ++ ++/* The following definitions come from utils/ntlm_auth.c */ ++ ++const char *get_winbind_domain(void); ++const char *get_winbind_netbios_name(void); ++DATA_BLOB get_challenge(void) ; ++NTSTATUS contact_winbind_auth_crap(const char *username, ++ const char *domain, ++ const char *workstation, ++ const DATA_BLOB *challenge, ++ const DATA_BLOB *lm_response, ++ const DATA_BLOB *nt_response, ++ uint32 flags, ++ uint8 lm_key[8], ++ uint8 user_session_key[16], ++ char **error_string, ++ char **unix_name) ; ++ ++/* The following definitions come from utils/ntlm_auth_diagnostics.c */ ++ ++BOOL diagnose_ntlm_auth(void); ++ ++#endif /* _NTLM_AUTH_PROTO_H_ */ +diff -urN samba-3.0.24/source/nmbd/nmbd.c samba-3.0.24.new/source/nmbd/nmbd.c +--- samba-3.0.24/source/nmbd/nmbd.c 2007-02-04 19:59:23.000000000 +0100 ++++ samba-3.0.24.new/source/nmbd/nmbd.c 2010-03-07 19:33:23.000000000 +0100 +@@ -23,6 +23,39 @@ + + #include "includes.h" + ++#ifdef SAMBA_DEBUG ++void _fLog(char *fmt, ...) ++{ ++ va_list va; ++ FILE *fp = fopen("/var/tmp/nmbd.log", "a"); ++ time_t t = time(0); /* LOG */ ++ ++ if (!fp) return; ++ ++ fprintf(fp, " [%d] %02u:%02u ", getpid(), (t / 60) % 60, t % 60); ++ va_start(va, fmt); ++ vfprintf(fp, fmt, va); ++ va_end(va); ++ fprintf(fp, "\n"); ++ fclose(fp); ++} ++ ++void _fDebug(char *fmt, ...) ++{ ++ va_list va; ++ FILE *fp = fopen("/var/tmp/nmbd.log", "a"); ++ time_t t = time(0); /* LOG */ ++ ++ if (!fp) return; ++ ++ fprintf(fp, " [%d] %02u:%02u ", getpid(), (t / 60) % 60, t % 60); ++ va_start(va, fmt); ++ vfprintf(fp, fmt, va); ++ va_end(va); ++ fclose(fp); ++} ++#endif ++ + int ClientNMB = -1; + int ClientDGRAM = -1; + int global_nmb_port = -1; diff --git a/samba3/patches/110-compile_fixes.patch b/samba3/patches/110-compile_fixes.patch new file mode 100644 index 000000000..6b10c2fa9 --- /dev/null +++ b/samba3/patches/110-compile_fixes.patch @@ -0,0 +1,105 @@ +Index: samba-3.0.24/source/Makefile +=================================================================== +--- samba-3.0.24.orig/source/Makefile 2008-08-07 11:15:02.000000000 +0200 ++++ samba-3.0.24/source/Makefile 2008-08-07 11:18:28.000000000 +0200 +@@ -10,8 +10,6 @@ + SOURCEROOT=$(shell pwd)/../../../.. + SHAREDLIBS=$(SOURCEROOT)/sharedlibs + +-include ${SHAREDLIBS}/ar7def.mk +- + # AR7 + # prefix=/usr/local/samba + prefix=/var/samba +@@ -22,25 +20,27 @@ + LIBS= -lcrypt -ldl -lpthread + # AR7 + # CC=gcc +-CC=${TARGET}-gcc ++CC?=${TARGET}-gcc + RANLIB = ${TARGET}-ranlib + AR = ${TARGET}-ar + + SHLD=${CC} ${CFLAGS} + # AR7 + # CFLAGS= -O -D_SAMBA_BUILD_ +-CFLAGS= -Os -D_SAMBA_BUILD_ -DAVM_NO_PRINTING +-CFLAGS+= -DAVM_NO_POPT ++CFLAPGS?= ++CFLAGS+= -Os -D_SAMBA_BUILD_ -DAVM_NO_PRINTING ++#CFLAGS+= -DAVM_NO_POPT + CFLAGS+= -DAVM_SMALLER +- ++#CFLAGS+= -DSAMBA_DEBUG + # uncomment this to get debugs + # CFLAGS += -DSAMBA_DEBUG + + # AR7 + # CPPFLAGS= -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE +-CPPFLAGS= -D_GNU_SOURCE ++CPPFLAGS?= -D_GNU_SOURCE ++CPPFLAGS+= -D_GNU_SOURCE + EXEEXT= +-LDFLAGS= ++LDFLAGS?= + AR=ar + LDSHFLAGS=-shared -Wl,-Bsymbolic + WINBIND_NSS_LDSHFLAGS=-shared -Wl,-Bsymbolic + +Index: samba-3.0.24/source/popt/popt.c +=================================================================== +--- samba-3.0.24.orig/source/popt/popt.c 2008-08-07 11:15:00.000000000 +0200 ++++ samba-3.0.24/source/popt/popt.c 2008-08-07 11:15:02.000000000 +0200 +@@ -10,13 +10,14 @@ + + #include "system.h" + +-#if HAVE_FLOAT_H ++//#if HAVE_FLOAT_H + #include +-#endif ++//#endif + #include + + #include "findme.h" + #include "poptint.h" ++#include "../include/config.h" + + #ifdef MYDEBUG + /*@unchecked@*/ +@@ -384,7 +385,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; + +@@ -1235,4 +1236,3 @@ + + return numargs; + } +-/*@=boundswrite@*/ +Index: samba-3.0.24/source/smbd/server.c +=================================================================== +--- samba-3.0.24.orig/source/smbd/server.c 2008-08-07 11:15:02.000000000 +0200 ++++ samba-3.0.24/source/smbd/server.c 2008-08-07 11:15:02.000000000 +0200 +@@ -47,7 +47,7 @@ + void _fLog(char *fmt, ...) + { + va_list va; +- FILE *fp = fopen("/var/tmp/smbd.log", "a"); ++ FILE *fp = fopen("/var/log/smbd.log", "a"); + time_t t = time(0); /* LOG */ + + if (!fp) return; +@@ -63,7 +63,7 @@ + void _fDebug(char *fmt, ...) + { + va_list va; +- FILE *fp = fopen("/var/tmp/smbd.log", "a"); ++ FILE *fp = fopen("/var/log/smbd.log", "a"); + time_t t = time(0); /* LOG */ + + if (!fp) return; diff --git a/samba3/patches/120-owrt_paths.patch b/samba3/patches/120-owrt_paths.patch new file mode 100644 index 000000000..2cb2670e4 --- /dev/null +++ b/samba3/patches/120-owrt_paths.patch @@ -0,0 +1,57 @@ +Index: samba-3.0.24/source/Makefile +=================================================================== +--- samba-3.0.24.orig/source/Makefile 2008-08-06 23:33:20.000000000 +0200 ++++ samba-3.0.24/source/Makefile 2008-08-06 23:34:48.000000000 +0200 +@@ -12,7 +12,7 @@ + + # AR7 + # prefix=/usr/local/samba +-prefix=/var/samba ++prefix= + exec_prefix=${prefix} + + # AR7 +@@ -108,11 +108,11 @@ + # These can be overridden by command line switches (see smbd(8)) + # or in smb.conf (see smb.conf(5)) + LOGFILEBASE = ${VARDIR} +-CONFIGFILE = $(CONFIGDIR)/smb.conf +-LMHOSTSFILE = $(CONFIGDIR)/lmhosts ++CONFIGFILE = /etc/samba/smb.conf ++LMHOSTSFILE = /etc/lmhosts + + # This is where smbpasswd et al go +-PRIVATEDIR = ${prefix}/private ++PRIVATEDIR = /etc/samba/ + + SMB_PASSWD_FILE = $(PRIVATEDIR)/smbpasswd + PRIVATE_DIR = $(PRIVATEDIR) +@@ -121,10 +121,10 @@ + SWATDIR = ${prefix}/swat + + # the directory where lock files go +-LOCKDIR = ${VARDIR}/locks ++LOCKDIR = ${VARDIR}/lock + + # the directory where pid files go +-PIDDIR = ${VARDIR}/locks ++PIDDIR = ${VARDIR}/lock + + LIBSMBCLIENT=bin/libsmbclient.a bin/libsmbclient.so + LIBSMBCLIENT_MAJOR=0 +Index: samba-3.0.24/source/lib/util.c +=================================================================== +--- samba-3.0.24.orig/source/lib/util.c 2008-08-06 23:41:58.000000000 +0200 ++++ samba-3.0.24/source/lib/util.c 2008-08-06 23:42:10.000000000 +0200 +@@ -300,11 +300,7 @@ + char *p; + if ((p = getenv("TMPDIR"))) + return p; +-#if 1 /* AR7 */ +- return "/var/tmp"; +-#else + return "/tmp"; +-#endif + } + + /**************************************************************************** diff --git a/samba3/patches/130-owrt_smbpasswd.patch b/samba3/patches/130-owrt_smbpasswd.patch new file mode 100644 index 000000000..7670bd7b8 --- /dev/null +++ b/samba3/patches/130-owrt_smbpasswd.patch @@ -0,0 +1,216 @@ +Index: samba-3.0.24/source/Makefile +=================================================================== +--- samba-3.0.24.orig/source/Makefile 2008-08-07 15:56:45.000000000 +0200 ++++ samba-3.0.24/source/Makefile 2008-08-07 15:56:45.000000000 +0200 +@@ -1015,9 +1015,9 @@ + + MY_PASS_OBJ = libsmb/smbdes.o lib/md4.o lib/arc4.o + +-bin/smbpasswd: utils/avm_smbpasswd.o $(MY_PASS_OBJ) ++bin/smbpasswd: utils/owrt_smbpasswd.o $(MY_PASS_OBJ) + @echo Linking $@ +- @$(CC) $(FLAGS) -o $@ utils/avm_smbpasswd.o $(MY_PASS_OBJ) \ ++ @$(CC) $(FLAGS) -o $@ utils/owrt_smbpasswd.o $(MY_PASS_OBJ) \ + -L$(TARGETFS)/lib + + +Index: samba-3.0.24/source/utils/owrt_smbpasswd.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ samba-3.0.24/source/utils/owrt_smbpasswd.c 2008-08-07 15:58:25.000000000 +0200 +@@ -0,0 +1,195 @@ ++/* ++ * Copyright (C) John Crispin ++ * ++ * 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 ++ ++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; ++} diff --git a/samba3/patches/140-no_mmap.patch b/samba3/patches/140-no_mmap.patch new file mode 100644 index 000000000..619cec694 --- /dev/null +++ b/samba3/patches/140-no_mmap.patch @@ -0,0 +1,27 @@ +Index: samba-3.0.24/source/include/config.h +=================================================================== +--- samba-3.0.24.orig/source/include/config.h 2008-08-08 17:43:08.000000000 +0200 ++++ samba-3.0.24/source/include/config.h 2008-08-08 17:44:02.000000000 +0200 +@@ -821,7 +821,7 @@ + #define HAVE_MKTIME 1 + + /* Whether mmap works */ +-#define HAVE_MMAP 1 ++/* #define HAVE_MMAP 1 */ + + /* Define to 1 if you have the header file. */ + #define HAVE_MNTENT_H 1 +Index: samba-3.0.24/source/tdb/Makefile +=================================================================== +--- samba-3.0.24.orig/source/tdb/Makefile 2008-08-08 17:42:47.000000000 +0200 ++++ samba-3.0.24/source/tdb/Makefile 2008-08-08 17:44:15.000000000 +0200 +@@ -2,7 +2,8 @@ + # Makefile for tdb directory + # + +-CFLAGS = -DSTANDALONE -DTDB_DEBUG -g -DHAVE_MMAP=1 ++CFLAGS = -DSTANDALONE -DTDB_DEBUG -g ++#-DHAVE_MMAP=1 + CC = gcc + + ADMINPROGS = tdbdump tdbbackup diff --git a/samba3/patches/150-fix_ls.patch b/samba3/patches/150-fix_ls.patch new file mode 100644 index 000000000..10538d6be --- /dev/null +++ b/samba3/patches/150-fix_ls.patch @@ -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 = "."; + } diff --git a/samba3/patches/160-fix_log.patch b/samba3/patches/160-fix_log.patch new file mode 100644 index 000000000..9396b4d59 --- /dev/null +++ b/samba3/patches/160-fix_log.patch @@ -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); + } + diff --git a/samba3/patches/170-no_rpc.patch b/samba3/patches/170-no_rpc.patch new file mode 100644 index 000000000..ae1d6c7ff --- /dev/null +++ b/samba3/patches/170-no_rpc.patch @@ -0,0 +1,28 @@ +--- a/source/include/config.h ++++ b/source/include/config.h +@@ -986,13 +986,13 @@ + /* #undef HAVE_ROOT */ + + /* Define to 1 if you have the header file. */ +-#define HAVE_RPCSVC_NIS_H 1 ++/* #define HAVE_RPCSVC_NIS_H 1 */ + + /* Define to 1 if you have the header file. */ +-#define HAVE_RPCSVC_YPCLNT_H 1 ++/* #define HAVE_RPCSVC_YPCLNT_H 1 */ + + /* Define to 1 if you have the header file. */ +-#define HAVE_RPCSVC_YP_PROT_H 1 ++/* #define HAVE_RPCSVC_YP_PROT_H 1 */ + + /* Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h */ + /* #undef HAVE_RPC_AUTH_ERROR_CONFLICT */ +@@ -1001,7 +1001,7 @@ + /* #undef HAVE_RPC_NETTYPE_H */ + + /* Define to 1 if you have the header file. */ +-#define HAVE_RPC_RPC_H 1 ++/* #define HAVE_RPC_RPC_H 1 */ + + /* Whether mkstemp is secure */ + #define HAVE_SECURE_MKSTEMP 1 diff --git a/samba3/patches/180-fix_duplicate_define.patch b/samba3/patches/180-fix_duplicate_define.patch new file mode 100644 index 000000000..e43622680 --- /dev/null +++ b/samba3/patches/180-fix_duplicate_define.patch @@ -0,0 +1,12 @@ +--- a/source/include/config.h ++++ b/source/include/config.h +@@ -1848,8 +1848,7 @@ + #define SIZEOF_LONG 4 + + /* The size of the 'off_t' type */ +-/* AR7 #define SIZEOF_OFF_T 8 */ +-#define SIZEOF_OFF_T 4 /* AR7 */ ++/* #define SIZEOF_OFF_T 8 */ + + /* The size of a `short', as computed by sizeof. */ + #define SIZEOF_SHORT 2 From 4940ba34287db7353665aad6a6726a9649b404bb Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Mon, 7 Dec 2015 18:37:18 +0100 Subject: [PATCH 14/46] bcmkernel: remove smbd and smbdpasswd --- bcmkernel/416040.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index a78431a79..d5e738788 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -180,6 +180,8 @@ define Package/bcmkernel/install rm -f $(1)/usr/sbin/racoon rm -f $(1)/usr/sbin/ripd rm -f $(1)/usr/sbin/send_cms_msg + rm -f $(1)/usr/sbin/smbd + rm -f $(1)/usr/sbin/smbpasswd rm -f $(1)/usr/sbin/sshd rm -f $(1)/usr/sbin/ssk rm -f $(1)/usr/sbin/sqlite3 From 207c7699706801e84cc18898cc45e6b61941c4b2 Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Wed, 9 Dec 2015 11:35:19 +0100 Subject: [PATCH 15/46] permngr: Add longpress indicator. If the board has press indicator configured and a longpress option the press indicator leds will stop flashing once the longpress time is reached. refs #7959 --- peripheral_manager/src/src/button.c | 12 +++++++++--- peripheral_manager/src/src/led.c | 27 ++++++++++++++++----------- peripheral_manager/src/src/led.h | 9 +++++++-- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/peripheral_manager/src/src/button.c b/peripheral_manager/src/src/button.c index e42230061..a0357bdde 100644 --- a/peripheral_manager/src/src/button.c +++ b/peripheral_manager/src/src/button.c @@ -285,7 +285,7 @@ static void button_handler(struct uloop_timeout *timeout) #endif /* clean out indicator status, set by any valid press again if we find it */ - led_pressindicator_clear(); + led_pressindicator_set(PRESS_NONE); list_for_each(i, &buttons) { struct list_head *j; @@ -294,6 +294,7 @@ static void button_handler(struct uloop_timeout *timeout) list_for_each(j, &node->drv_list) { struct button_drv_list *drv_node = list_entry(j, struct button_drv_list, list); if (drv_node->drv) { + button_press_type_t time_type; button_state_t st = drv_node->drv->func->get_state(drv_node->drv); if (st == BUTTON_PRESSED ) { @@ -302,8 +303,12 @@ static void button_handler(struct uloop_timeout *timeout) DBG(1, " %s pressed", drv_node->drv->name); // button_ubus_interface_event(global_ubus_ctx, node->name, BUTTON_PRESSED); } - if(timer_valid(drv_node, node->minpress, 0)) - led_pressindicator_set(); + + time_type = timer_valid(drv_node, node->minpress, node->longpress); + if( time_type == BUTTON_PRESS_LONG ) + led_pressindicator_set(PRESS_LONG); + if( time_type == BUTTON_PRESS_SHORT ) + led_pressindicator_set(PRESS_SHORT); } if (st == BUTTON_RELEASED ) { @@ -313,6 +318,7 @@ static void button_handler(struct uloop_timeout *timeout) button_ubus_interface_event(global_ubus_ctx, node->name, BUTTON_RELEASED); if(node->dimming) led_dimming(); + DBG(1, " %s released timer_valid=%d", drv_node->drv->name,r); button_hotplug_cmd(node->name, r==BUTTON_PRESS_LONG); } } diff --git a/peripheral_manager/src/src/led.c b/peripheral_manager/src/src/led.c index 19517da0e..d59d4b8fe 100644 --- a/peripheral_manager/src/src/led.c +++ b/peripheral_manager/src/src/led.c @@ -81,8 +81,8 @@ struct function_led { struct function_led *leds; /* Array of functions, LED_FUNCTIONS + super_functions */ static int total_functions; /* number of entries in leds array */ -static leds_state_t global_state; /* global state for the leds,overrids individual states */ -static leds_state_t press_state; /* global state for the press indicator */ +static leds_state_t global_state; /* global state for the leds,overrids individual states */ +static press_t press_state; /* global state for the press indicator */ static led_action_t dimming_level; /* The min level where dimming should not happen on led */ static int dimming_timeout; /* The time to turn on leds when we have dimming on */ @@ -294,7 +294,7 @@ static void super_update(void) } if (status){ leds[i].state = j; - DBG(1,"\tSet super function [%s] to action [%s]",leds[i].name, fn_actions[j]); + DBG(3,"\tSet super function [%s] to action [%s]",leds[i].name, fn_actions[j]); } } } @@ -537,11 +537,15 @@ static void flash_handler(struct uloop_timeout *timeout) global_state == LEDS_INFO ) { for (i = 0; i < total_functions ; i++) { struct led *led; - if (leds[i].press_indicator & press_state) { + if (leds[i].press_indicator && (press_state != PRESS_NONE) ) { // DBG(1,"INDICATE_PRESS on %s",leds[i].name); list_for_each_entry(led, &leds[i].actions[leds[i].state].led_list, list) { - if (led->drv) - led->drv->func->set_state(led->drv, fast); + if (led->drv){ + if (press_state == PRESS_LONG) + led->drv->func->set_state(led->drv, ON); + else + led->drv->func->set_state(led->drv, fast); + } } /* normal operation, flash else reset state */ @@ -609,12 +613,13 @@ static void flash_handler(struct uloop_timeout *timeout) uloop_timeout_set(&flash_inform_timer, FLASH_TIMEOUT); } -void led_pressindicator_set(void){ - press_state = 1; -} +void led_pressindicator_set(press_t type){ -void led_pressindicator_clear(void){ - press_state = 0; + /* press long has prio over short so if it's already set to long do not change */ + if (type == PRESS_SHORT && press_state == PRESS_LONG) + return; + + press_state = type; } void led_dimming(void){ diff --git a/peripheral_manager/src/src/led.h b/peripheral_manager/src/src/led.h index 7b83ab881..66bf29c57 100644 --- a/peripheral_manager/src/src/led.h +++ b/peripheral_manager/src/src/led.h @@ -24,6 +24,12 @@ typedef enum { WHITE, } led_color_t; +typedef enum { + PRESS_NONE, + PRESS_SHORT, + PRESS_LONG, +} press_t; + struct led_drv; struct led_drv_func{ @@ -46,7 +52,6 @@ void led_add( struct led_drv *); void led_init(struct server_ctx *); void led_dimming(void); -void led_pressindicator_set(void); -void led_pressindicator_clear(void); +void led_pressindicator_set(press_t type); #endif /* LED_H */ From b76d2ee06a3bcf14e46ee2af54f9640d21495401 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Wed, 9 Dec 2015 16:22:39 +0100 Subject: [PATCH 16/46] icwmp-3.0-2015-12-09 --- icwmp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icwmp/Makefile b/icwmp/Makefile index b71fbc7c2..480aeaadf 100644 --- a/icwmp/Makefile +++ b/icwmp/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=icwmp -PKG_VERSION:=3.0-2015-11-23 +PKG_VERSION:=3.0-2015-12-09 PKG_FIXUP:=autoreconf ifeq ($(CONFIG_BCM_OPEN),y) PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/freecwmp.git @@ -16,7 +16,7 @@ else PKG_SOURCE_URL:=ssh://git@iopsys.inteno.se/freecwmp.git endif PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=e9e5f9f5f0c913fdc185f24aa9bca17e28155ab8 +PKG_SOURCE_VERSION:=101026e491e4c5c682b0ebc190d52e3c6281eed7 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) From 2d569ff935106cda02f7818d90a60749030eeb5c Mon Sep 17 00:00:00 2001 From: Reidar Cederqvist Date: Thu, 10 Dec 2015 12:38:42 +0100 Subject: [PATCH 17/46] fixed igmp over pppoe --- mcpd/files/etc/init.d/mcpd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcpd/files/etc/init.d/mcpd b/mcpd/files/etc/init.d/mcpd index 88189c81a..ce48f8443 100755 --- a/mcpd/files/etc/init.d/mcpd +++ b/mcpd/files/etc/init.d/mcpd @@ -46,7 +46,7 @@ mcpd_configure() { for proxif in $igmp_proxy_interfaces; do json_load "$(ifstatus $proxif)" - json_get_var device device + json_get_var device l3_device case "$device" in br-*) bridged=1 From 35427c3ad2c5815d696d96477793da827be9160a Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 10 Dec 2015 14:02:29 +0100 Subject: [PATCH 18/46] fix samba not reloaded via webgui issue --- samba3/files/samba.init | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/samba3/files/samba.init b/samba3/files/samba.init index 57561d836..000d6dc88 100755 --- a/samba3/files/samba.init +++ b/samba3/files/samba.init @@ -118,8 +118,14 @@ start_service() { config_foreach useradd sambausers config_foreach smb_header samba config_foreach smb_add_share sambashare - service_start /bin/smbd -D - service_start /bin/nmbd -D + + 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() { From 361f3404d1ce0a465c5818d34d3e479317b1f726 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 10 Dec 2015 14:57:38 +0100 Subject: [PATCH 19/46] icwmp-3.0-2015-12-10 --- icwmp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icwmp/Makefile b/icwmp/Makefile index 480aeaadf..d9df4c50e 100644 --- a/icwmp/Makefile +++ b/icwmp/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=icwmp -PKG_VERSION:=3.0-2015-12-09 +PKG_VERSION:=3.0-2015-12-10 PKG_FIXUP:=autoreconf ifeq ($(CONFIG_BCM_OPEN),y) PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/freecwmp.git @@ -16,7 +16,7 @@ else PKG_SOURCE_URL:=ssh://git@iopsys.inteno.se/freecwmp.git endif PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=101026e491e4c5c682b0ebc190d52e3c6281eed7 +PKG_SOURCE_VERSION:=3885e4ed860cdbba94d9d3daf6c2b02cf43b1fe2 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) From 7a31cda7831a8d5f96764fc1a6079e3c914a93d6 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 10 Dec 2015 15:39:57 +0100 Subject: [PATCH 20/46] luci-inteno-1.1.27 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index d40f6249d..f0114b057 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.26 -PKG_SOURCE_VERSION:=49763162182f88bff5e93034b2ce7e9ef6760854 +PKG_VERSION:=inteno-1.1.27 +PKG_SOURCE_VERSION:=ec8799b06a9647e0b5f6002ec7fc8533d7125738 PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From 803bfdd34580ef6c4d9e68d672a05b25e2fd751b Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Thu, 10 Dec 2015 17:42:22 +0100 Subject: [PATCH 21/46] permngr: do not do ioctl when open already failed. every fail was put in the systemlog, very noisy. --- peripheral_manager/src/src/gpio.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/peripheral_manager/src/src/gpio.c b/peripheral_manager/src/src/gpio.c index 35444818c..c60221bcd 100644 --- a/peripheral_manager/src/src/gpio.c +++ b/peripheral_manager/src/src/gpio.c @@ -32,10 +32,14 @@ int board_ioctl(int ioctl_id, int action, int hex, char* string_buf, int string_ IoctlParms.offset = offset; IoctlParms.action = action; IoctlParms.buf = (char*)""; + IoctlParms.result = 0; + + if (brcmboard != -1){ + if ( ioctl(brcmboard, ioctl_id, &IoctlParms) < 0 ) { + syslog(LOG_ERR, "ioctl: %d failed", ioctl_id); + return(-255); + } - if ( ioctl(brcmboard, ioctl_id, &IoctlParms) < 0 ) { - syslog(LOG_ERR, "ioctl: %d failed", ioctl_id); - return(-255); } return IoctlParms.result; } @@ -46,7 +50,6 @@ gpio_state_t gpio_get_state(gpio_t gpio) return board_ioctl(BOARD_IOCTL_GET_GPIO, 0, 0, NULL, gpio, 0); } - void gpio_set_state(gpio_t gpio, gpio_state_t state) { board_ioctl(BOARD_IOCTL_SET_GPIO, 0, 0, NULL, gpio, state); From ab0294c18854022e247ce998f02187a2f2166ddf Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Mon, 14 Dec 2015 14:18:57 +0100 Subject: [PATCH 22/46] minidlna-1.1.4 --- minidlna/Makefile | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/minidlna/Makefile b/minidlna/Makefile index 6a6cd3d95..1bed79bef 100644 --- a/minidlna/Makefile +++ b/minidlna/Makefile @@ -8,13 +8,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=minidlna -PKG_VERSION:=1.1.3 -PKG_RELEASE:=1 +PKG_VERSION:=1.1.4 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@SF/minidlna -PKG_MD5SUM:=879027192c89e5376cdd2ae2d1aa33b4 +PKG_MD5SUM:=67c9e91285bc3801fd91a5d26ea775d7 +PKG_LICENSE:=GPL-2.0 BSD-3-Clause +PKG_LICENSE_FILES:=COPYING LICENCE.miniupnpd + PKG_MAINTAINER:=Knyazkov Dmitry + PKG_BUILD_PARALLEL:=0 PKG_BUILD_DEPENDS:=util-linux @@ -43,9 +47,6 @@ endef TARGET_CPPFLAGS += \ -I$(STAGING_DIR)/usr/include \ -I$(STAGING_DIR)/usr/include/FLAC \ - -I$(STAGING_DIR)/usr/include/libavcodec \ - -I$(STAGING_DIR)/usr/include/libavformat \ - -I$(STAGING_DIR)/usr/include/libavutil \ -I$(STAGING_DIR)/usr/include/libexif \ -I$(STAGING_DIR)/usr/include/uuid \ -I$(STAGING_DIR)/usr/include/vorbis \ @@ -74,7 +75,7 @@ CONFIGURE_ARGS +=\ define Package/minidlna/install $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/minidlnad $(1)/usr/bin/minidlna + $(INSTALL_BIN) $(PKG_BUILD_DIR)/minidlna $(1)/usr/bin/minidlna $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/minidlna.init $(1)/etc/init.d/minidlna $(INSTALL_DIR) $(1)/etc/config From dd91c8823b5b27412dae3c0c3e8cd5daf968b07c Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Fri, 18 Dec 2015 11:18:47 +0100 Subject: [PATCH 23/46] add sipcalc package --- sipcalc/Makefile | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sipcalc/Makefile diff --git a/sipcalc/Makefile b/sipcalc/Makefile new file mode 100644 index 000000000..69bd573db --- /dev/null +++ b/sipcalc/Makefile @@ -0,0 +1,53 @@ +# +# Copyright (C) 2006-2009 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=sipcalc +PKG_VERSION:=1.1.5 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://www.routemeister.net/projects/sipcalc/files \ + http://download.google.com/mirror +PKG_MD5SUM:=8d59e70d21d8f0568e310d342e3e2306 + +include $(INCLUDE_DIR)/package.mk + +define Package/sipcalc + SECTION:=ipv6 + CATEGORY:=Network + TITLE:=IPv6 IPv4 Calculation Program + URL:=http://www.routemeister.net/projects/sipcalc/ + DEPENDS:=+kmod-ipv6 +endef + +define Package/sipcalc/description +IPv6 IPv4 Calculation Program. +endef + +define Build/Configure + $(call Build/Configure/Default,\ + --with-pidfile=/var/run/sipcalc.pid \ + ) +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + sipcalc_LDADD="" +endef + +#define Package/sipcalc/conffiles +#/etc/config/sipcalc +#endef + +define Package/sipcalc/install + $(INSTALL_DIR) $(1)/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sipcalc $(1)/sbin/ +endef + +$(eval $(call BuildPackage,sipcalc)) From ae924338199625cf5d0fac837a701b64541df449 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Fri, 18 Dec 2015 15:56:22 +0100 Subject: [PATCH 24/46] updated bcmkernel --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index d5e738788..a1dc27e7d 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=3114d55f62bac137f2558bbced6eddc978d4495d +PKG_SOURCE_VERSION:=cbebea3dffe02653774d45d09cbf0836b833ed68 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 5eccb99fcee7a7f809a8f7613e5f4bef90cfe3fe Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Fri, 18 Dec 2015 17:44:39 +0100 Subject: [PATCH 25/46] luci-inteno-1.1.28 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index f0114b057..6c8b83cbb 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.27 -PKG_SOURCE_VERSION:=ec8799b06a9647e0b5f6002ec7fc8533d7125738 +PKG_VERSION:=inteno-1.1.28 +PKG_SOURCE_VERSION:=75e326398f2bdc11d65ad6eaa48cc06533c41503 PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From a350812bfdc173e03b1b7306084a54918e9656ce Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Mon, 21 Dec 2015 15:12:13 +0100 Subject: [PATCH 26/46] bcmkernel: eg300: wan phy 0x01 should have gtxclk delay on. --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index a1dc27e7d..a56a4ce1b 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=cbebea3dffe02653774d45d09cbf0836b833ed68 +PKG_SOURCE_VERSION:=037ef547ad41da9fb092c9a1a7658bccab56cd2d PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From b2184b2b4596260d84e779b79e648a762e7e9234 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 29 Dec 2015 17:50:44 +0100 Subject: [PATCH 27/46] icwmp-3.0-2015-12-29 --- icwmp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icwmp/Makefile b/icwmp/Makefile index d9df4c50e..627d360bb 100644 --- a/icwmp/Makefile +++ b/icwmp/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=icwmp -PKG_VERSION:=3.0-2015-12-10 +PKG_VERSION:=3.0-2015-12-29 PKG_FIXUP:=autoreconf ifeq ($(CONFIG_BCM_OPEN),y) PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/freecwmp.git @@ -16,7 +16,7 @@ else PKG_SOURCE_URL:=ssh://git@iopsys.inteno.se/freecwmp.git endif PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=3885e4ed860cdbba94d9d3daf6c2b02cf43b1fe2 +PKG_SOURCE_VERSION:=69ba798f4fb3780ba5c0d96a0dadb2ba4dbe14f3 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) From 178b836aff2fcc9fefab97a1ffab48155f7a982e Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 29 Dec 2015 17:58:13 +0100 Subject: [PATCH 28/46] luci-inteno-1.1.29 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index 6c8b83cbb..f05ece58a 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.28 -PKG_SOURCE_VERSION:=75e326398f2bdc11d65ad6eaa48cc06533c41503 +PKG_VERSION:=inteno-1.1.29 +PKG_SOURCE_VERSION:=ec75ea06754f1096249c835f3f5e7547b832c65a PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From 02e15998dade1f4f9058e75cca17ff9522140203 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 29 Dec 2015 22:39:33 +0100 Subject: [PATCH 29/46] updated bcmkernel --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index a56a4ce1b..6280e5ade 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=037ef547ad41da9fb092c9a1a7658bccab56cd2d +PKG_SOURCE_VERSION:=8b2ebaed98441dd841073599c0b47d1a1f0dd5f5 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From a0749cd0cf3ce0dc15ee997d93b99ee7e985ea87 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Mon, 4 Jan 2016 13:20:47 +0100 Subject: [PATCH 30/46] luci-inteno-1.1.30 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index f05ece58a..3139c741a 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.29 -PKG_SOURCE_VERSION:=ec75ea06754f1096249c835f3f5e7547b832c65a +PKG_VERSION:=inteno-1.1.30 +PKG_SOURCE_VERSION:=bebcfb0f6b19f09c93768ee872bdd59850650edc PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From 27173c0d40d482c6bef0dcb4a43ee36f082accf2 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Mon, 4 Jan 2016 17:42:26 +0100 Subject: [PATCH 31/46] updated bcmkernel --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index 6280e5ade..bf4ce8d7a 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=8b2ebaed98441dd841073599c0b47d1a1f0dd5f5 +PKG_SOURCE_VERSION:=02f5a9f480cd4ee16a4e40b027197036aaa0e618 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 201d3e9b6925a49fbc01847bb62cbbce5ed0a6d8 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Tue, 5 Jan 2016 10:44:03 +0100 Subject: [PATCH 32/46] iup: stop/start iup if reloaded --- iup/files/etc/init.d/iup | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/iup/files/etc/init.d/iup b/iup/files/etc/init.d/iup index 56f18f814..1724bf9cf 100755 --- a/iup/files/etc/init.d/iup +++ b/iup/files/etc/init.d/iup @@ -1,6 +1,7 @@ #!/bin/sh /etc/rc.common # iup at boot # Copyright (C) 2007 OpenWrt.org + START=98 STOP=15 USE_PROCD=1 @@ -46,7 +47,8 @@ init_iup() { echo "$number $starttime * * $interval /sbin/iup > /dev/null 2>&1" >> $CRONPATH /etc/init.d/cron restart fi -} +} + start_service() { init_iup @@ -60,6 +62,11 @@ stop_service() { killall -9 /sbin/iup } +reload_service() { + stop + start +} + service_triggers() { procd_add_reload_trigger provisioning } From ca2d6ac2662884548afa254be14c2898165fb19f Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Thu, 7 Jan 2016 13:07:35 +0100 Subject: [PATCH 33/46] libmicroxml: avoid new lines in attributes patch --- .../0002-avoid-new-lines-in-attributes.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 libmicroxml/patches/0002-avoid-new-lines-in-attributes.patch diff --git a/libmicroxml/patches/0002-avoid-new-lines-in-attributes.patch b/libmicroxml/patches/0002-avoid-new-lines-in-attributes.patch new file mode 100644 index 000000000..9b6905fe0 --- /dev/null +++ b/libmicroxml/patches/0002-avoid-new-lines-in-attributes.patch @@ -0,0 +1,26 @@ +--- a/mxml-file.c ++++ b/mxml-file.c +@@ -2782,7 +2782,7 @@ mxml_write_node(mxml_node_t *node, /* I - Node to write */ + + if (attr->value) + width += strlen(attr->value) + 3; +- ++#if 0 + if (global->wrap > 0 && (col + width) > global->wrap) + { + if ((*putc_cb)('\n', p) < 0) +@@ -2792,11 +2792,14 @@ mxml_write_node(mxml_node_t *node, /* I - Node to write */ + } + else + { ++#endif + if ((*putc_cb)(' ', p) < 0) + return (-1); + + col ++; ++#if 0 + } ++#endif + + if (mxml_write_name(attr->name, p, putc_cb) < 0) + return (-1); From 70597bb8de916770959b64bf8436012fa0ba7f19 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Fri, 8 Jan 2016 13:25:57 +0100 Subject: [PATCH 34/46] icwmp-3.0-2016-01-07 --- icwmp/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/icwmp/Makefile b/icwmp/Makefile index 627d360bb..f47b85afe 100644 --- a/icwmp/Makefile +++ b/icwmp/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=icwmp -PKG_VERSION:=3.0-2015-12-29 +PKG_VERSION:=3.0-2016-01-07 PKG_FIXUP:=autoreconf ifeq ($(CONFIG_BCM_OPEN),y) PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/freecwmp.git @@ -16,7 +16,7 @@ else PKG_SOURCE_URL:=ssh://git@iopsys.inteno.se/freecwmp.git endif PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=69ba798f4fb3780ba5c0d96a0dadb2ba4dbe14f3 +PKG_SOURCE_VERSION:=e00dd9b205a4763873fbdf059bc2d48d3d314955 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) From e11fef0a1d97f38eb112fbe00768df2580a13fba Mon Sep 17 00:00:00 2001 From: Mats Karrman Date: Fri, 8 Jan 2016 15:28:28 +0100 Subject: [PATCH 35/46] imagewrite: use correct JFFS2 clean marker on little-endian systems, refs #8452 --- mtd-utils-mod/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mtd-utils-mod/Makefile b/mtd-utils-mod/Makefile index 7ce08b7a9..14b0f2271 100644 --- a/mtd-utils-mod/Makefile +++ b/mtd-utils-mod/Makefile @@ -9,10 +9,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mtd-utils PKG_VERSION:=1.5.1 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_INSTALL:=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=6d4e751fd861dea1f494b1a91768b3bf401bbab5 +PKG_SOURCE_VERSION:=ba97a0ae50fda81cf7f5a5f3a6cf4a1807383ae5 ifeq ($(CONFIG_BCM_OPEN),y) PKG_SOURCE_URL:=http://ihgsp.inteno.se/git/mtd-utils From b167e072ac2bb242c79672bdc0a26bea9b060d50 Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Fri, 8 Jan 2016 15:35:25 +0100 Subject: [PATCH 36/46] minidlna: force fixup of autotools. Since we know we update the makefile.am do a manual autoreconf instead of allowing this to be detected during make. If its detected the make tries to use the original version of automake and not the version installed on the HOST. this is so we can build on ubuntu 15.10 without downgrading automake. --- minidlna/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/minidlna/Makefile b/minidlna/Makefile index 1bed79bef..9e37b4442 100644 --- a/minidlna/Makefile +++ b/minidlna/Makefile @@ -21,6 +21,7 @@ PKG_MAINTAINER:=Knyazkov Dmitry PKG_BUILD_PARALLEL:=0 PKG_BUILD_DEPENDS:=util-linux +PKG_FIXUP:=autoreconf include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/nls.mk From af1516bf6c43b39802cd4629c5b39e343898b728 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Fri, 8 Jan 2016 16:40:09 +0100 Subject: [PATCH 37/46] luci-inteno-1.1.31 --- webgui/luci/luci/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webgui/luci/luci/Makefile b/webgui/luci/luci/Makefile index 3139c741a..8c87b2a7d 100644 --- a/webgui/luci/luci/Makefile +++ b/webgui/luci/luci/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk PKG_BRANCH:=svn-0.11 PKG_NAME:=luci -PKG_VERSION:=inteno-1.1.30 -PKG_SOURCE_VERSION:=bebcfb0f6b19f09c93768ee872bdd59850650edc +PKG_VERSION:=inteno-1.1.31 +PKG_SOURCE_VERSION:=a1ecfd5a5b59f4ed3377c2f7885dd9c5431bb74a PKG_SOURCE_PROTO:=git ifeq ($(CONFIG_BCM_OPEN),y) From 86bca8523b1369f61c521e1687c511bd5402cc18 Mon Sep 17 00:00:00 2001 From: Mats Karrman Date: Fri, 8 Jan 2016 18:19:07 +0100 Subject: [PATCH 38/46] bcmkernel-4.16L.04: Updated source to tip of 4.16L.04 branch, DG400 DDR, refs #8414 --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index bf4ce8d7a..9b18113ba 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=02f5a9f480cd4ee16a4e40b027197036aaa0e618 +PKG_SOURCE_VERSION:=3ee1f95cc770e927603124c8291d4fed29917932 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 5fb7c59fb3ac5a10fa65332543dcacbad531f192 Mon Sep 17 00:00:00 2001 From: Mats Karrman Date: Mon, 11 Jan 2016 15:16:11 +0100 Subject: [PATCH 39/46] bcmkernel-4.16L.04: Update source version to tip of 4.16L.04, refs #8458 --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index 9b18113ba..e429923d9 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=3ee1f95cc770e927603124c8291d4fed29917932 +PKG_SOURCE_VERSION:=85657be706d3fe2fae5696030f0f6b788a566b35 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 486b1a854c67f1e563774061fcc6aad800b0aa7f Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Mon, 11 Jan 2016 16:06:01 +0100 Subject: [PATCH 40/46] disable ipv6 on wan base device --- layer2interface/broadcom/etc/init.d/layer2_interface_ethernet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet b/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet index 3dbe1ce17..b460d9183 100755 --- a/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet +++ b/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet @@ -75,7 +75,7 @@ boot() { echo "ERROR: porttminit $interf failed!" > /dev/kmsg done fi - + echo '1' > /proc/sys/net/ipv6/conf/$baseifname/disable_ipv6 ifconfig $baseifname up } From fdb3f55a35503a74cf51d97589b21deda32c714c Mon Sep 17 00:00:00 2001 From: Strhuan Blomquist Date: Mon, 11 Jan 2016 16:38:28 +0100 Subject: [PATCH 41/46] iup can now handle UBIFS and JFFS2 with same version and do a upgrade refs #8307 --- iup/files/sbin/iup | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/iup/files/sbin/iup b/iup/files/sbin/iup index c88d9c62e..da30a2c71 100755 --- a/iup/files/sbin/iup +++ b/iup/files/sbin/iup @@ -1,4 +1,4 @@ -#!/bin/sh +!/bin/sh . /lib/functions.sh . /usr/share/libubox/jshn.sh @@ -272,6 +272,12 @@ if [ $software ]; then local sysinfo=$(ubus call router quest "{ \"info\": \"system\" }") json_load "$sysinfo" json_get_var firmware firmware + json_get_var filesystem filesystem + if [ "$filesystem" == "JFFS2" ] ; then + firmware=$firmware.w + else + firmware=$firmware.y + fi if [ "$sofwareminuspath" == "${sofwareminuspath/$firmware/}" ] ; then echo $software handle_provisioning uppgradeserver From 6f600d6f37028ea91b31675c765c008a0703774a Mon Sep 17 00:00:00 2001 From: Strhuan Blomquist Date: Tue, 12 Jan 2016 09:36:50 +0100 Subject: [PATCH 42/46] accidently removed a character creating an error message refs #8307 --- iup/files/sbin/iup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iup/files/sbin/iup b/iup/files/sbin/iup index da30a2c71..7d61b80aa 100755 --- a/iup/files/sbin/iup +++ b/iup/files/sbin/iup @@ -1,4 +1,4 @@ -!/bin/sh +#!/bin/sh . /lib/functions.sh . /usr/share/libubox/jshn.sh From cae28083183a2647d3bb4583d48eab042059e036 Mon Sep 17 00:00:00 2001 From: Strhuan Blomquist Date: Tue, 12 Jan 2016 16:25:51 +0100 Subject: [PATCH 43/46] Fixes So that we dont get double iup process refs #8437 --- iup/files/etc/init.d/iup | 9 ++++++++- iup/files/sbin/iup | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/iup/files/etc/init.d/iup b/iup/files/etc/init.d/iup index 1724bf9cf..f6f0fb27c 100755 --- a/iup/files/etc/init.d/iup +++ b/iup/files/etc/init.d/iup @@ -49,6 +49,10 @@ init_iup() { fi } +boot() { + init_iup +} + start_service() { init_iup @@ -59,7 +63,10 @@ start_service() { } stop_service() { - killall -9 /sbin/iup + if [ -f "/tmp/run/iup.pid" ]; then + kill -9 $(cat /tmp/run/iup.pid) + rm -rf /tmp/run/iup.pid + fi } reload_service() { diff --git a/iup/files/sbin/iup b/iup/files/sbin/iup index 7d61b80aa..bd2094804 100755 --- a/iup/files/sbin/iup +++ b/iup/files/sbin/iup @@ -1,5 +1,5 @@ #!/bin/sh - +echo $$ > /var/run/iup.pid . /lib/functions.sh . /usr/share/libubox/jshn.sh @@ -294,3 +294,4 @@ if [ "$reboot" == "on" ]; then v "Reboot Signaled" /sbin/reboot fi +rm -rf /var/run/iup.pid From 09595f0343bcd354abf66df087b449cc3cebf29d Mon Sep 17 00:00:00 2001 From: Kasper Ingelvide Date: Wed, 13 Jan 2016 12:14:01 +0100 Subject: [PATCH 44/46] Show time as local time in call log, refs #7537 --- voice-client/files/etc/asterisk_templates/cdr.conf.TEMPLATE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/voice-client/files/etc/asterisk_templates/cdr.conf.TEMPLATE b/voice-client/files/etc/asterisk_templates/cdr.conf.TEMPLATE index 7f4babe96..69a5fc659 100644 --- a/voice-client/files/etc/asterisk_templates/cdr.conf.TEMPLATE +++ b/voice-client/files/etc/asterisk_templates/cdr.conf.TEMPLATE @@ -5,7 +5,7 @@ batch=no safeshutdown=yes [csv] -usegmtime=yes ; log date/time in GMT. Default is "no" +usegmtime=no ; log date/time in GMT. Default is "no" loguniqueid=yes ; log uniqueid. Default is "no" loguserfield=yes ; log user field. Default is "no" accountlogs=no ; create separate log file for each account code. Default is "yes" From bf68e19da189d21984d4aad07c50f7d02e1cad65 Mon Sep 17 00:00:00 2001 From: Kenneth Johansson Date: Thu, 14 Jan 2016 15:20:35 +0100 Subject: [PATCH 45/46] bcmkernel-4.16L.04: Update source version to tip of 4.16L.04. --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index e429923d9..ca8cf1b8e 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=85657be706d3fe2fae5696030f0f6b788a566b35 +PKG_SOURCE_VERSION:=2eaca0226738a430f4a6b50ac3fad80cfbce3759 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif From 416807ec6db0a5a73aa827ae25a895ecccdebeba Mon Sep 17 00:00:00 2001 From: Mats Karrman Date: Fri, 15 Jan 2016 16:33:25 +0100 Subject: [PATCH 46/46] bcmkernel-4.16L.04: Update source version to tip of 4.16L.04, cfe ver change --- bcmkernel/416040.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcmkernel/416040.mk b/bcmkernel/416040.mk index ca8cf1b8e..33442b1a7 100644 --- a/bcmkernel/416040.mk +++ b/bcmkernel/416040.mk @@ -16,7 +16,7 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=git@iopsys.inteno.se:bcmkernel PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=2eaca0226738a430f4a6b50ac3fad80cfbce3759 +PKG_SOURCE_VERSION:=5bcd89500860fe7253cf5ca5a856dea626dc33a4 PKG_SOURCE:=$(PKG_NAME)-$(BRCM_SDK_VERSION)-$(PKG_SOURCE_VERSION).tar.gz endif