From c4799af63e6c6fb227068aca91965f734b31486365f208a9eb08a51801f9069b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Mon, 17 Feb 2025 08:16:01 +0100 Subject: [PATCH] Sync from SUSE:SLFO:Main autofs revision 82aee6ddc002971b5974a7b4b1b3ec74 --- .gitattributes | 23 + NetworkManager-autofs | 16 + README.SUSE | 48 + README.SUSE.ldap | 51 + autofs-5.1.1-dbus-udisks-monitor.patch | 3089 +++++++++++++++++ autofs-5.1.1-debuginfo-fix.patch | 17 + autofs-5.1.1-suse-auto_master_default.patch | 31 + ...-incompatible-function-pointer-types.patch | 60 + ....9-fix-ldap_parse_page_control-check.patch | 44 + autofs-5.1.9.tar.sign | 16 + autofs-5.1.9.tar.xz | 3 + autofs-nsswitch-usr-etc.patch | 15 + autofs-suse-manpage-remove-initdir.patch | 38 + ...instead-of-libldap-for-thread-safety.patch | 74 + autofs.changes | 2800 +++++++++++++++ autofs.keyring | 169 + autofs.schema | 24 + autofs.spec | 187 + get-upstream-patches | 57 + org.freedesktop.AutoMount.conf | 27 + sysconfig.autofs | 15 + 21 files changed, 6804 insertions(+) create mode 100644 .gitattributes create mode 100644 NetworkManager-autofs create mode 100644 README.SUSE create mode 100644 README.SUSE.ldap create mode 100644 autofs-5.1.1-dbus-udisks-monitor.patch create mode 100644 autofs-5.1.1-debuginfo-fix.patch create mode 100644 autofs-5.1.1-suse-auto_master_default.patch create mode 100644 autofs-5.1.9-Fix-incompatible-function-pointer-types.patch create mode 100644 autofs-5.1.9-fix-ldap_parse_page_control-check.patch create mode 100644 autofs-5.1.9.tar.sign create mode 100644 autofs-5.1.9.tar.xz create mode 100644 autofs-nsswitch-usr-etc.patch create mode 100644 autofs-suse-manpage-remove-initdir.patch create mode 100644 autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch create mode 100644 autofs.changes create mode 100644 autofs.keyring create mode 100644 autofs.schema create mode 100644 autofs.spec create mode 100644 get-upstream-patches create mode 100644 org.freedesktop.AutoMount.conf create mode 100644 sysconfig.autofs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/NetworkManager-autofs b/NetworkManager-autofs new file mode 100644 index 0000000..839a970 --- /dev/null +++ b/NetworkManager-autofs @@ -0,0 +1,16 @@ +#! /bin/sh +# +# autofs dispatcher script for NetworkManager +# +# Matthias Koenig +# +case "$2" in + up) + if test -x /usr/bin/systemctl && systemctl -q is-enabled autofs.service; then + systemctl reload autofs.service + fi + ;; + *) + exit 0 + ;; +esac diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..1940eac --- /dev/null +++ b/README.SUSE @@ -0,0 +1,48 @@ +autofs5 is a major update with lots of code changes and new features. +Most of the changes enhance the functionality to be more compliant +with current industry standards. + +Here is a list of the most important changes: + +Differences v4 vs. v5 +--------------------- +- Master map is now read and parsed by the `automount' daemon +- The master map default is "auto.master" and nsswitch is used to + locate it. The line "+auto.master" has been added to the default + installed "/etc/auto.master" to ensure that those using NIS will + still find their master map. This is in line with other industry + automount implementations. +- The `automount' daemon is now a multi-threaded application +- `autofs' filesystem mounts only appear in /proc/mounts and not + /etc/mtab. +- `autofs' version 5.0.0 will refuse to run if it cannot find an + autofs4 kernel module that supports protocol version 5.00 or above. +- mount options present in the master map are now overridden by mount + options in map entries instead of being accumulated. This behaviour + is in line with other industry automount implementations. + +New features in v5 +------------------ +- improved direct mount map support +- `+' map inclusion +- added nsswitch map source support +- rewrote multi-mount map code +- added LDAP encryption and authentication support +- improved shutdown and restart +- a "hosts" map module has been added + +Update hints +============ +Since autofs now uses nsswitch to locate the master map, the +sysconfig variable NISMASTERMAP is obsolete. +Also the UNDERSCORETODOT parameter is not support anymore. +Some new sysconfig parameters are available, please take +a look to /etc/sysconfig/autofs. +Note also, that the old Suse config syntax style is not +supported anymore. If you had a configuration like + +/mnt yp auto.home [options] + +you'll have to change this to + +/mnt yp:auto.home [options] diff --git a/README.SUSE.ldap b/README.SUSE.ldap new file mode 100644 index 0000000..d90d316 --- /dev/null +++ b/README.SUSE.ldap @@ -0,0 +1,51 @@ + +Autofs with ldap +---------------- + +You can configure autofs via LDAP using the nis.schema or rfc2307bis.schema. +You can find this schema at /etc/openldap/schema/nis.schema and +/etc/openldap/schema/rfc2307bis.schema resp. + +1. Change the "automount:" entry in /etc/nsswitch.conf to + + automount: files ldap + +2. Configure your /etc/openldap/ldap.conf + +include /etc/openldap/schema/rfc2307bis.schema +or +include /etc/openldap/schema/nis.schema + +3. Create the neccessary entry in LDAP + +Here is an example ldif to mount the whole /home per autofs: + +--------------------- begin ------------------------------------------------ +dn: ou=AUTOFS,dc=example,dc=org +objectClass: organizationalUnit +ou: AUTOFS + +dn: nisMapName=auto.master,ou=AUTOFS,dc=example,dc=org +objectClass: nisMap +nisMapName: auto.master + +dn: cn=/mounts,nisMapName=auto.master,ou=AUTOFS,dc=example,dc=org +objectClass: nisObject +nisMapName: auto.master +cn: /mounts +nisMapEntry: ldap ldapserver.example.org:nisMapName=auto.mounts,ou=AUTOFS,dc=example,dc=org + +dn: nisMapName=auto.mounts,ou=AUTOFS,dc=example,dc=org +objectClass: nisMap +nisMapName: auto.mounts + +dn: cn=home,nisMapName=auto.mounts,ou=AUTOFS,dc=example,dc=org +objectClass: nisObject +nisMapName: auto.mounts +cn: home +nisMapEntry: -fstype=nfs,hard,intr,nodev,nosuid nfsserver.example.org:/home + + + +--------------------- end -------------------------------------------------- + diff --git a/autofs-5.1.1-dbus-udisks-monitor.patch b/autofs-5.1.1-dbus-udisks-monitor.patch new file mode 100644 index 0000000..aec1762 --- /dev/null +++ b/autofs-5.1.1-dbus-udisks-monitor.patch @@ -0,0 +1,3089 @@ +ddiss: rebase atop 37fda2c ("autofs-5.1.8 - add soucre parameter to + module functions") + Fix xmlStructuredErrorFunc callback parameter type (bsc#1221682) + +--- + Makefile.conf.in | 3 + daemon/lookup.c | 4 + daemon/master_tok.l | 2 + include/lookup_udisks.h | 381 +++++++ + lib/parse_subs.c | 2 + man/autofs.udisks.5.in | 121 ++ + modules/Makefile | 12 + modules/lookup_multi.c | 2 + modules/lookup_udisks.c | 2449 ++++++++++++++++++++++++++++++++++++++++++++++++ + modules/parse_sun.c | 1 + samples/autofs.udisks | 28 + 11 files changed, 3004 insertions(+), 1 deletion(-) + +Index: autofs-5.1.9/Makefile.conf.in +=================================================================== +--- autofs-5.1.9.orig/Makefile.conf.in ++++ autofs-5.1.9/Makefile.conf.in +@@ -46,6 +46,9 @@ KRB5_FLAGS=@KRB5_FLAGS@ + # NIS+ support: yes (1) no (0) + NISPLUS = @HAVE_NISPLUS@ + ++# Udisks support ++UDISKS = 1 ++ + # SMBFS support: yes (1) no (0) + SMBFS = @HAVE_SMBMOUNT@ + +Index: autofs-5.1.9/daemon/lookup.c +=================================================================== +--- autofs-5.1.9.orig/daemon/lookup.c ++++ autofs-5.1.9/daemon/lookup.c +@@ -200,6 +200,10 @@ int lookup_nss_read_master(struct master + (name[3] == ',' || name[3] == ':')) || + (!strncmp(name, "nisplus", 7) && + (name[7] == ',' || name[7] == ':')) || ++ (!strncmp(name, "udisks", 6) && ++ (name[6] == ',' || name[6] == ':')) || ++ (!strncmp(name, "udisks2", 7) && ++ (name[7] == ',' || name[7] == ':')) || + (!strncmp(name, "ldap", 4) && + (name[4] == ',' || name[4] == ':')) || + (!strncmp(name, "ldaps", 5) && +Index: autofs-5.1.9/daemon/master_tok.l +=================================================================== +--- autofs-5.1.9.orig/daemon/master_tok.l ++++ autofs-5.1.9/daemon/master_tok.l +@@ -123,7 +123,7 @@ DNNAMESTR2 ([[:alnum:]_.\-]+) + INTMAP (-hosts|-null) + MULTI ((multi)(,(sun|hesiod))?(:{OPTWS}|{WS})) + MULTISEP ([\-]{2}[[:blank:]]+) +-MTYPE ((file|program|exec|sss|yp|nis|nisplus|ldap|ldaps|hesiod|userdir)(,(sun|hesiod|amd))?(:{OPTWS}|{WS})) ++MTYPE ((file|program|exec|sss|yp|nis|nisplus|udisks|udisks2|ldap|ldaps|hesiod|userdir)(,(sun|hesiod|amd))?(:{OPTWS}|{WS})) + + + OPTTOUT (-t{OPTWS}|-t{OPTWS}={OPTWS}|--timeout{OPTWS}|--timeout{OPTWS}={OPTWS}) +Index: autofs-5.1.9/include/lookup_udisks.h +=================================================================== +--- /dev/null ++++ autofs-5.1.9/include/lookup_udisks.h +@@ -0,0 +1,381 @@ ++/* ++ * loopup_udisks.h - Header file for lookup_udisks automount module ++ * ++ * Copyright 2012 SuSE LINUX Products GmbH - All Rights Reserved ++ * Copyright 2012 Werner Fink ++ * ++ * 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, Inc., 675 Mass Ave, Cambridge MA 02139, ++ * USA; 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. ++ * ++ */ ++ ++#ifndef LOOKUP_UDISKS_H ++#define LOOKUP_UDISKS_H ++ ++#include "list.h" ++typedef struct list_head list_t; ++ ++#ifndef list_for_each_safe ++#define list_for_each_safe(pos, safe, head) \ ++ for (pos = (head)->next, safe = pos->next; pos != (head); pos = safe, safe = pos->next) ++#endif ++#ifdef offsetof ++# undef list_entry ++# define list_entry(ptr, type, member) (__extension__ ({ \ ++ __const__ __typeof__( ((type*)0)->member ) *__mptr = (ptr); \ ++ ((type *)( (char *)__mptr - offsetof(type,member) ));})) ++#endif ++ ++#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ++# ifndef inline ++# define inline __inline__ ++# endif ++# ifndef restrict ++# define restrict __restrict__ ++# endif ++# ifndef volatile ++# define volatile __volatile__ ++# endif ++# ifndef extension ++# define extension __extension__ ++# endif ++# ifndef typeof ++# define typeof __typeof__ ++# endif ++#endif ++#ifndef attribute ++# define attribute(attr) __attribute__(attr) ++#endif ++#define alignof(type) ((sizeof(type)+(sizeof(void*)-1)) & ~(sizeof(void*)-1)) ++#define strsize(string) ((strlen(string)+1)*sizeof(char)) ++#define MODPREFIX "lookup(udisks): " ++ ++typedef struct property_s { ++ list_t handle; ++ int type; ++ char *name; ++ void *value; ++} property_t; ++ ++typedef struct array_s { ++ list_t handle; ++ char *value; ++} array_t; ++ ++typedef struct filter_s { ++ char *property; ++#define DBUS_TYPE_OBJECT DBUS_TYPE_OBJECT_PATH ++ int type; ++} filter_t; ++ ++typedef struct option_s { ++ int error; ++ union { ++ dbus_bool_t boolean; ++ dbus_int32_t int32; ++ dbus_uint32_t uint32; ++ dbus_int64_t int64; ++ dbus_uint64_t uint64; ++ double number; ++ const char *string; ++ const list_t *array; ++ }; ++} option_t; ++ ++typedef struct entry_s { ++ time_t age; ++ size_t key_len; ++ size_t mapent_len; ++ char *key; ++ char *mapent; ++} entry_t; ++ ++typedef struct device_s { ++ list_t handle; ++ list_t properties; ++ list_t *head; ++ filter_t *opts; ++ entry_t *entry; ++ char* identify; ++ char* node; ++} device_t; ++ ++typedef struct session_s { ++ list_t handle; ++ list_t properties; ++ list_t *head; ++ filter_t *opts; ++ char* identify; ++ char* node; ++} session_t; ++ ++typedef struct mntopt_s { ++ list_t handle; ++ char* identify; ++ char* options; ++} mntopt_t; ++ ++typedef struct config_s { ++ int enabled; ++ char* common; ++ list_t fstypes; ++ list_t byid; ++ list_t label; ++} config_t; ++ ++struct lookup_context { ++ pthread_mutex_t mtx; ++ pthread_t watchdog; ++ dbus_bool_t monitor; ++ volatile int active; ++ volatile int running; ++ const char *mapname; ++ list_t devices; ++ list_t sessions; ++ config_t config; ++ DBusConnection *conn; ++ DBusError *error; ++ struct autofs_point *ap; ++ struct map_source *map; ++ struct parse_mod *parse; ++}; ++ ++static inline void lock(struct lookup_context *ctxt) ++{ ++ int status = pthread_mutex_lock(&ctxt->mtx); ++ if (status) ++ fatal(status); ++ return; ++} ++ ++static inline void unlock(struct lookup_context *ctxt) ++{ ++ int status = pthread_mutex_unlock(&ctxt->mtx); ++ if (status) ++ fatal(status); ++ return; ++} ++ ++/* ++ * Use posix_memalign for a well aligned container which not only has ++ * the required amount of space for the structure of a list member but ++ * also for the used strings therein. With this such a container can ++ * be freed at once. ++ */ ++extern void* newaligned(size_t size) attribute((__warn_unused_result__,__always_inline__)); ++extern inline void* newaligned(size_t size) ++{ ++ void *restrict new; ++ if (posix_memalign((void**)&new, sizeof(void*), size) != 0) { ++ char buf[MAX_ERR_BUF]; ++ const char *const estr = strerror_r(errno, buf, sizeof(buf)); ++ logerr(MODPREFIX "memory allocation: %s", estr); ++ return (void*)0; ++ } ++ return new; ++} ++ ++/* ++ * Sorted with same order as found in the response of the dbus call ++ * org.freedesktop.DBus.Properties.GetAll, e.g. ++ * dbus-send --system --print-reply --dest=org.freedesktop.UDisks \ ++ * /org/freedesktop/UDisks/devices/sda \ ++ * org.freedesktop.DBus.Properties.GetAll \ ++ * string:org.freedesktop.UDisks.Device | \ ++ * sed -rn '/dict entry\(/,/\)/ { ++ * H ++ * x ++ * s@\n*@@g ++ * s@^\s+string\s"(\w+)"\s+.*@\t\1,@p ++ * }' ++ * ++ * compare with filter[] found in lookup_udisks.c ++ */ ++ ++typedef enum { ++ NativePath = 0, ++ DeviceDetectionTime, ++ DeviceMediaDetectionTime, ++ DeviceMajor, ++ DeviceMinor, ++ DeviceFile, ++ DeviceFilePresentation, ++ DeviceFileById, ++ DeviceFileByPath, ++ DeviceIsSystemInternal, ++ DeviceIsPartition, ++ DeviceIsPartitionTable, ++ DeviceIsRemovable, ++ DeviceIsMediaAvailable, ++ DeviceIsMediaChangeDetected, ++ DeviceIsMediaChangeDetectionPolling, ++ DeviceIsMediaChangeDetectionInhibitable, ++ DeviceIsMediaChangeDetectionInhibited, ++ DeviceIsReadOnly, ++ DeviceIsDrive, ++ DeviceIsOpticalDisc, ++ DeviceIsMounted, ++ DeviceMountPaths, ++ DeviceMountedByUid, ++ DeviceIsLuks, ++ DeviceIsLuksCleartext, ++ DeviceIsLinuxMdComponent, ++ DeviceIsLinuxMd, ++ DeviceIsLinuxLvm2LV, ++ DeviceIsLinuxLvm2PV, ++ DeviceIsLinuxDmmpComponent, ++ DeviceIsLinuxDmmp, ++ DeviceIsLinuxLoop, ++ DeviceSize, ++ DeviceBlockSize, ++ DevicePresentationHide, ++ DevicePresentationNopolicy, ++ DevicePresentationName, ++ DevicePresentationIconName, ++ DeviceAutomountHint, ++ JobInProgress, ++ JobId, ++ JobInitiatedByUid, ++ JobIsCancellable, ++ JobPercentage, ++ IdUsage, ++ IdType, ++ IdVersion, ++ IdUuid, ++ IdLabel, ++ LuksHolder, ++ LuksCleartextSlave, ++ LuksCleartextUnlockedByUid, ++ PartitionSlave, ++ PartitionScheme, ++ PartitionType, ++ PartitionLabel, ++ PartitionUuid, ++ PartitionFlags, ++ PartitionNumber, ++ PartitionOffset, ++ PartitionSize, ++ PartitionAlignmentOffset, ++ PartitionTableScheme, ++ PartitionTableCount, ++ DriveVendor, ++ DriveModel, ++ DriveRevision, ++ DriveSerial, ++ DriveWwn, ++ DriveRotationRate, ++ DriveWriteCache, ++ DriveConnectionInterface, ++ DriveConnectionSpeed, ++ DriveMediaCompatibility, ++ DriveMedia, ++ DriveIsMediaEjectable, ++ DriveCanDetach, ++ DriveCanSpindown, ++ DriveIsRotational, ++ DriveAdapter, ++ DrivePorts, ++ DriveSimilarDevices, ++ OpticalDiscIsBlank, ++ OpticalDiscIsAppendable, ++ OpticalDiscIsClosed, ++ OpticalDiscNumTracks, ++ OpticalDiscNumAudioTracks, ++ OpticalDiscNumSessions, ++ DriveAtaSmartIsAvailable, ++ DriveAtaSmartTimeCollected, ++ DriveAtaSmartStatus, ++ DriveAtaSmartBlob, ++ LinuxMdComponentLevel, ++ LinuxMdComponentPosition, ++ LinuxMdComponentNumRaidDevices, ++ LinuxMdComponentUuid, ++ LinuxMdComponentName, ++ LinuxMdComponentHomeHost, ++ LinuxMdComponentVersion, ++ LinuxMdComponentHolder, ++ LinuxMdComponentState, ++ LinuxMdState, ++ LinuxMdLevel, ++ LinuxMdUuid, ++ LinuxMdHomeHost, ++ LinuxMdName, ++ LinuxMdNumRaidDevices, ++ LinuxMdVersion, ++ LinuxMdSlaves, ++ LinuxMdIsDegraded, ++ LinuxMdSyncAction, ++ LinuxMdSyncPercentage, ++ LinuxMdSyncSpeed, ++ LinuxLvm2PVUuid, ++ LinuxLvm2PVNumMetadataAreas, ++ LinuxLvm2PVGroupName, ++ LinuxLvm2PVGroupUuid, ++ LinuxLvm2PVGroupSize, ++ LinuxLvm2PVGroupUnallocatedSize, ++ LinuxLvm2PVGroupSequenceNumber, ++ LinuxLvm2PVGroupExtentSize, ++ LinuxLvm2PVGroupPhysicalVolumes, ++ LinuxLvm2PVGroupLogicalVolumes, ++ LinuxLvm2LVName, ++ LinuxLvm2LVUuid, ++ LinuxLvm2LVGroupName, ++ LinuxLvm2LVGroupUuid, ++ LinuxDmmpComponentHolder, ++ LinuxDmmpName, ++ LinuxDmmpSlaves, ++ LinuxDmmpParameters, ++ LinuxLoopFilename, ++ NullDict ++} devdict_t; ++ ++/* ++ * Sorted with same order as found in the response of the dbus call ++ * org.freedesktop.DBus.Properties.GetAll, e.g. ++ * dbus-send --print-reply --system --dest=org.freedesktop.ConsoleKit \ ++ * /org/freedesktop/ConsoleKit/Session1 \ ++ * org.freedesktop.DBus.Properties.GetAll \ ++ * string:org.freedesktop.ConsoleKit.Session | \ ++ * sed -rn '/dict entry\(/,/\)/{ ++ * H ++ * x ++ * s@\n*@@g ++ * s@^\s+string\s"([a-z0-9-]+)"\s+.*@\t\1,@p ++ * }' ++ * ++ * compare with sessions[] found in lookup_udisks.c ++ */ ++ ++typedef enum { ++ unix_user = 0, ++ user, ++ session_type, ++ remote_host_name, ++ display_device, ++ x11_display, ++ x11_display_device, ++ active, ++ is_local, ++ idle_hint, ++ NullCk ++} ckdict_t; ++ ++typedef enum { ++ AutofsUdisks = 0, ++ MountOptions, ++ Common, ++ DiskById, ++ DiskByLabel, ++ FSType, ++ NullCnf ++} cnfxml_t; ++ ++#endif +Index: autofs-5.1.9/lib/parse_subs.c +=================================================================== +--- autofs-5.1.9.orig/lib/parse_subs.c ++++ autofs-5.1.9/lib/parse_subs.c +@@ -98,6 +98,8 @@ static struct types map_type[] = { + { "yp", 2 }, + { "nis", 3 }, + { "nisplus", 7 }, ++ { "udisks", 6 }, ++ { "udisks2", 7 }, + { "ldap", 4 }, + { "ldaps", 5 }, + { "hesiod", 6 }, +Index: autofs-5.1.9/man/autofs.udisks.5.in +=================================================================== +--- /dev/null ++++ autofs-5.1.9/man/autofs.udisks.5.in +@@ -0,0 +1,121 @@ ++.\" t ++.TH AUTOFS.UDISKS 5 "22 Aug 2012" ++.SH NAME ++autofs.udisks \- autofs configuration for local removable devices ++.SH "DESCRIPTION" ++The automount udisks module is able to manage removable devices on the ++local system by connecting to the message bus daemon ++.BR dbus\-daemon (1) ++to monitor all device events of the ++.BR udisks\-daemon (8). ++To grant access for local users the automount ++udisks module also monitors users sessions hold by the ConsoleKit ++daemon, compare with description of the PAM module ++.BR pam_ck_connector (8). ++.P ++To use the automount udisks module an entry in the Master Map ++.BR auto.master (5) ++has to added, like this: ++.sp ++.RS +.2i ++.ta 1.0i ++.nf ++.I /media/autofs udisks:@@autofsmapdir@@/autofs.udisks \-\-timeout=5 \-\-ghost ++.fi ++.RE ++.sp ++Please be aware that format of the file ++.R autofs.udisks ++does ++.B not ++follow the common format of the automounter maps but is an XML ++configuration file. This file is used by the automount udisks module ++to generate the automounter map on the fly. ++.P ++An example of this file is: ++.sp ++.RS +.2i ++.ta 1.0i ++.nf ++ ++ ++ ++ uid=$UID,gid=$GID,nosuid,nodev ++ ++ uid=1002,gid=501,user,nosuid,nodev,exec ++ ++ ++ unhide ++ ++ fmask=0132,dmask=0022,showexec ++ umask=0022 ++ ro ++ check=none,noatime,nodiratime,data=journal ++ check=none,noatime,nodiratime,data=journal ++ check=none,noatime ++ ro,nosuid,nodev,noexec ++ ++ ++.fi ++.RE ++.sp ++The entries of such a XML configuration file are ++.TP ++.RB < AutofsUdisks > ++as the outer envelop. This level has exactly one attribute ++.BR enable =\[dq] true \[dq]|\[dq] false \[dq] ++which allows disabling the automount udisks module without ++removing the module its self. ++.TP ++.RB < MountOptions > ++is the only known entry below which is used to list the ++possible mount options, compare with ++.BR mount (8) ++as well as the variable substitutions mentioned in the manual ++page ++.BR autofs (5) ++for the format of the automounter maps. ++.P ++There are four possible entries below ++.RB < MountOptions > ++to help the the automount udisks module to generate the automounter ++map. ++.TP ++.RB < Common > ++is the entry which provides mount options applied to ++nearly all generated maps. ++This entry will be overwritten by the next entry. ++.TP ++.RB < DiskById\ value =\[dq] \fIID\fR \[dq]> ++is the entry which provides mount options which are applied ++instead of the ++.RB < Common > ++entry if a device is found with an ++.I ID ++listed below ++.IR /dev/disk/by\-id/ . ++This entry will be overwritten by the next entry. ++.TP ++.RB < DiskByLabel\ value =\[dq] \fILABEL\fR \[dq]> ++is the entry which provides mount options which are applied ++instead of the ++.RB < Common > ++or ++.RB < DiskByLabel > ++entries if a device is found labeled with ++.IR LABEL . ++Such labels can be detected by the super user with the ++.BR blkid (8) ++command. ++.TP ++.RB < FSType\ [ value =\[dq] \fIFSTYPE\fR \[dq]]> ++those entries are used to apply file system \fIFSTYPE\fR specific mount ++options to a generated automounter map entry. There can be one ++.RB < FSType > ++entry without any file system value as a fallback for file systems ++not specified in the configuration file. ++.SH "SEE ALSO" ++.BR auto.master (5), ++.BR udisks\-daemon (8) ++.SH AUTHOR ++This manual page was written by Werner Fink . +Index: autofs-5.1.9/modules/Makefile +=================================================================== +--- autofs-5.1.9.orig/modules/Makefile ++++ autofs-5.1.9/modules/Makefile +@@ -62,6 +62,14 @@ ifeq ($(SSSD), 1) + MODS += lookup_sss.so + endif + ++ifeq ($(UDISKS), 1) ++ UDISKS_FLAGS += $(shell pkg-config --cflags dbus-1) ++ UDISKS_LIBS += $(shell pkg-config --libs dbus-1) ++ UDISKS_LIBS += $(AUTOFS_LIB) ++ SRCS += lookup_udisks.c ++ MODS += lookup_udisks.so ++endif ++ + CFLAGS += -I../include -I../lib -fPIC -D_GNU_SOURCE + CFLAGS += -DAUTOFS_LIB_DIR=\"$(autofslibdir)\" + CFLAGS += -DAUTOFS_MAP_DIR=\"$(autofsmapdir)\" +@@ -145,6 +153,10 @@ lookup_ldap.so: lookup_ldap.c dclist.o b + $(LDFLAGS) $(LIBLDAP) $(LIBRESOLV) $(LIBS) $(AUTOFS_LIB_LINK) + $(STRIP) lookup_ldap.so + ++lookup_udisks.so: lookup_udisks.c ../include/lookup_udisks.h ++ $(CC) $(SOLDFLAGS) $(CFLAGS) $(UDISKS_FLAGS) -o $@ $< $(UDISKS_LIBS) ++ $(STRIP) $@ ++ + mount_nfs.so: mount_nfs.c replicated.o + $(CC) $(SOLDFLAGS) $(CFLAGS) -o mount_nfs.so \ + mount_nfs.c replicated.o $(LDFLAGS) $(LIBS) $(AUTOFS_LIB_LINK) +Index: autofs-5.1.9/modules/lookup_multi.c +=================================================================== +--- autofs-5.1.9.orig/modules/lookup_multi.c ++++ autofs-5.1.9/modules/lookup_multi.c +@@ -189,6 +189,8 @@ static struct lookup_mod *nss_open_looku + if (!strncmp(argv[0], "file", 4) || + !strncmp(argv[0], "yp", 2) || + !strncmp(argv[0], "nisplus", 7) || ++ !strncmp(argv[0], "udisks", 6) || ++ !strncmp(argv[0], "udisks2", 7) || + !strncmp(argv[0], "nis", 3) || + !strncmp(argv[0], "ldaps", 5) || + !strncmp(argv[0], "ldap", 4) || +Index: autofs-5.1.9/modules/lookup_udisks.c +=================================================================== +--- /dev/null ++++ autofs-5.1.9/modules/lookup_udisks.c +@@ -0,0 +1,2411 @@ ++/* ++ * lookup_udisks.c - Module for Linux automount to access removable devices ++ * listed by the dbus based udisks-daemon ++ * ++ * Copyright 2012 SuSE LINUX Products GmbH - All Rights Reserved ++ * Copyright 2012 Werner Fink ++ * ++ * 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, Inc., 675 Mass Ave, Cambridge MA 02139, ++ * USA; 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. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define MODULE_LOOKUP ++#include "automount.h" ++#include "nsswitch.h" ++#include "lookup_udisks.h" ++ ++extern pthread_attr_t th_attr_detached; ++ ++#define MAPFMT_DEFAULT "sun" ++ ++#define DBUS_COMMON_NAME_UDISKS "org.freedesktop.UDisks" ++#define DBUS_INTERFACE_UDISKS "org.freedesktop.UDisks" ++#define DBUS_OBJECT_PATH_UDISKS_ROOT "/org/freedesktop/UDisks" ++ ++/* ++ * Sorted with same order as found in the response of the dbus call ++ * org.freedesktop.DBus.Properties.GetAll, e.g. ++ * dbus-send --system --print-reply --dest=org.freedesktop.UDisks \ ++ * /org/freedesktop/UDisks/devices/sda \ ++ * org.freedesktop.DBus.Properties.GetAll \ ++ * string:org.freedesktop.UDisks.Device | \ ++ * sed -rn '/dict entry\(/,/\)/ { ++ * H ++ * x ++ * s@\n*@@g ++ * s@^\s+string\s("\w+")\s+variant\s+(\w+).*@FILTER\(\U\2\E,\t\1\)@p ++ * }' ++ * ++ * compare with enum type devdict_t in ../include/lookup_udisks.h ++ * that is if add here a hash key you have to extend dict_t! ++ */ ++#define FILTER(name, property) { property, DBUS_TYPE_ ## name } ++static filter_t devproperpty[] = { ++ FILTER(STRING, "NativePath"), ++ FILTER(UINT64, "DeviceDetectionTime"), ++ FILTER(UINT64, "DeviceMediaDetectionTime"), ++ FILTER(INT64, "DeviceMajor"), ++ FILTER(INT64, "DeviceMinor"), ++ FILTER(STRING, "DeviceFile"), ++ FILTER(STRING, "DeviceFilePresentation"), ++ FILTER(ARRAY, "DeviceFileById"), ++ FILTER(ARRAY, "DeviceFileByPath"), ++ FILTER(BOOLEAN, "DeviceIsSystemInternal"), ++ FILTER(BOOLEAN, "DeviceIsPartition"), ++ FILTER(BOOLEAN, "DeviceIsPartitionTable"), ++ FILTER(BOOLEAN, "DeviceIsRemovable"), ++ FILTER(BOOLEAN, "DeviceIsMediaAvailable"), ++ FILTER(BOOLEAN, "DeviceIsMediaChangeDetected"), ++ FILTER(BOOLEAN, "DeviceIsMediaChangeDetectionPolling"), ++ FILTER(BOOLEAN, "DeviceIsMediaChangeDetectionInhibitable"), ++ FILTER(BOOLEAN, "DeviceIsMediaChangeDetectionInhibited"), ++ FILTER(BOOLEAN, "DeviceIsReadOnly"), ++ FILTER(BOOLEAN, "DeviceIsDrive"), ++ FILTER(BOOLEAN, "DeviceIsOpticalDisc"), ++ FILTER(BOOLEAN, "DeviceIsMounted"), ++ FILTER(ARRAY, "DeviceMountPaths"), ++ FILTER(UINT32, "DeviceMountedByUid"), ++ FILTER(BOOLEAN, "DeviceIsLuks"), ++ FILTER(BOOLEAN, "DeviceIsLuksCleartext"), ++ FILTER(BOOLEAN, "DeviceIsLinuxMdComponent"), ++ FILTER(BOOLEAN, "DeviceIsLinuxMd"), ++ FILTER(BOOLEAN, "DeviceIsLinuxLvm2LV"), ++ FILTER(BOOLEAN, "DeviceIsLinuxLvm2PV"), ++ FILTER(BOOLEAN, "DeviceIsLinuxDmmpComponent"), ++ FILTER(BOOLEAN, "DeviceIsLinuxDmmp"), ++ FILTER(BOOLEAN, "DeviceIsLinuxLoop"), ++ FILTER(UINT64, "DeviceSize"), ++ FILTER(UINT64, "DeviceBlockSize"), ++ FILTER(BOOLEAN, "DevicePresentationHide"), ++ FILTER(BOOLEAN, "DevicePresentationNopolicy"), ++ FILTER(STRING, "DevicePresentationName"), ++ FILTER(STRING, "DevicePresentationIconName"), ++ FILTER(STRING, "DeviceAutomountHint"), ++ FILTER(BOOLEAN, "JobInProgress"), ++ FILTER(STRING, "JobId"), ++ FILTER(UINT32, "JobInitiatedByUid"), ++ FILTER(BOOLEAN, "JobIsCancellable"), ++ FILTER(DOUBLE, "JobPercentage"), ++ FILTER(STRING, "IdUsage"), ++ FILTER(STRING, "IdType"), ++ FILTER(STRING, "IdVersion"), ++ FILTER(STRING, "IdUuid"), ++ FILTER(STRING, "IdLabel"), ++ FILTER(OBJECT, "LuksHolder"), ++ FILTER(OBJECT, "LuksCleartextSlave"), ++ FILTER(UINT32, "LuksCleartextUnlockedByUid"), ++ FILTER(OBJECT, "PartitionSlave"), ++ FILTER(STRING, "PartitionScheme"), ++ FILTER(STRING, "PartitionType"), ++ FILTER(STRING, "PartitionLabel"), ++ FILTER(STRING, "PartitionUuid"), ++ FILTER(ARRAY, "PartitionFlags"), ++ FILTER(INT32, "PartitionNumber"), ++ FILTER(UINT64, "PartitionOffset"), ++ FILTER(UINT64, "PartitionSize"), ++ FILTER(UINT64, "PartitionAlignmentOffset"), ++ FILTER(STRING, "PartitionTableScheme"), ++ FILTER(INT32, "PartitionTableCount"), ++ FILTER(STRING, "DriveVendor"), ++ FILTER(STRING, "DriveModel"), ++ FILTER(STRING, "DriveRevision"), ++ FILTER(STRING, "DriveSerial"), ++ FILTER(STRING, "DriveWwn"), ++ FILTER(UINT32, "DriveRotationRate"), ++ FILTER(STRING, "DriveWriteCache"), ++ FILTER(STRING, "DriveConnectionInterface"), ++ FILTER(UINT64, "DriveConnectionSpeed"), ++ FILTER(ARRAY, "DriveMediaCompatibility"), ++ FILTER(STRING, "DriveMedia"), ++ FILTER(BOOLEAN, "DriveIsMediaEjectable"), ++ FILTER(BOOLEAN, "DriveCanDetach"), ++ FILTER(BOOLEAN, "DriveCanSpindown"), ++ FILTER(BOOLEAN, "DriveIsRotational"), ++ FILTER(OBJECT, "DriveAdapter"), ++ FILTER(ARRAY, "DrivePorts"), ++ FILTER(ARRAY, "DriveSimilarDevices"), ++ FILTER(BOOLEAN, "OpticalDiscIsBlank"), ++ FILTER(BOOLEAN, "OpticalDiscIsAppendable"), ++ FILTER(BOOLEAN, "OpticalDiscIsClosed"), ++ FILTER(UINT32, "OpticalDiscNumTracks"), ++ FILTER(UINT32, "OpticalDiscNumAudioTracks"), ++ FILTER(UINT32, "OpticalDiscNumSessions"), ++ FILTER(BOOLEAN, "DriveAtaSmartIsAvailable"), ++ FILTER(UINT64, "DriveAtaSmartTimeCollected"), ++ FILTER(STRING, "DriveAtaSmartStatus"), ++ FILTER(ARRAY, "DriveAtaSmartBlob"), ++ FILTER(STRING, "LinuxMdComponentLevel"), ++ FILTER(INT32, "LinuxMdComponentPosition"), ++ FILTER(INT32, "LinuxMdComponentNumRaidDevices"), ++ FILTER(STRING, "LinuxMdComponentUuid"), ++ FILTER(STRING, "LinuxMdComponentName"), ++ FILTER(STRING, "LinuxMdComponentHomeHost"), ++ FILTER(STRING, "LinuxMdComponentVersion"), ++ FILTER(OBJECT, "LinuxMdComponentHolder"), ++ FILTER(ARRAY, "LinuxMdComponentState"), ++ FILTER(STRING, "LinuxMdState"), ++ FILTER(STRING, "LinuxMdLevel"), ++ FILTER(STRING, "LinuxMdUuid"), ++ FILTER(STRING, "LinuxMdHomeHost"), ++ FILTER(STRING, "LinuxMdName"), ++ FILTER(INT32, "LinuxMdNumRaidDevices"), ++ FILTER(STRING, "LinuxMdVersion"), ++ FILTER(ARRAY, "LinuxMdSlaves"), ++ FILTER(BOOLEAN, "LinuxMdIsDegraded"), ++ FILTER(STRING, "LinuxMdSyncAction"), ++ FILTER(DOUBLE, "LinuxMdSyncPercentage"), ++ FILTER(UINT64, "LinuxMdSyncSpeed"), ++ FILTER(STRING, "LinuxLvm2PVUuid"), ++ FILTER(UINT32, "LinuxLvm2PVNumMetadataAreas"), ++ FILTER(STRING, "LinuxLvm2PVGroupName"), ++ FILTER(STRING, "LinuxLvm2PVGroupUuid"), ++ FILTER(UINT64, "LinuxLvm2PVGroupSize"), ++ FILTER(UINT64, "LinuxLvm2PVGroupUnallocatedSize"), ++ FILTER(UINT64, "LinuxLvm2PVGroupSequenceNumber"), ++ FILTER(UINT64, "LinuxLvm2PVGroupExtentSize"), ++ FILTER(ARRAY, "LinuxLvm2PVGroupPhysicalVolumes"), ++ FILTER(ARRAY, "LinuxLvm2PVGroupLogicalVolumes"), ++ FILTER(STRING, "LinuxLvm2LVName"), ++ FILTER(STRING, "LinuxLvm2LVUuid"), ++ FILTER(STRING, "LinuxLvm2LVGroupName"), ++ FILTER(STRING, "LinuxLvm2LVGroupUuid"), ++ FILTER(OBJECT, "LinuxDmmpComponentHolder"), ++ FILTER(STRING, "LinuxDmmpName"), ++ FILTER(ARRAY, "LinuxDmmpSlaves"), ++ FILTER(STRING, "LinuxDmmpParameters"), ++ FILTER(STRING, "LinuxLoopFilename"), ++ FILTER(BOOLEAN, (char*)0) ++}; ++ ++/* ++ * Sorted with same order as found in the response of the dbus call ++ * org.freedesktop.DBus.Properties.GetAll, e.g. ++ * dbus-send --print-reply --system --dest=org.freedesktop.ConsoleKit \ ++ * /org/freedesktop/ConsoleKit/Session2 \ ++ * org.freedesktop.DBus.Properties.GetAll \ ++ * string:org.freedesktop.ConsoleKit.Session | \ ++ * sed -rn '/dict entry\(/,/\)/ { ++ * H ++ * x ++ * s@\n*@@g ++ * s@^\s+string\s("[a-z0-9-]+")\s+variant\s+(\w+).*@FILTER\(\U\2\E,\t\1\)@p ++ * }' ++ * ++ * compare with enum type ckdict_t in ../include/lookup_udisks.h ++ * that is if add here a hash key you have to extend ckdict_t! ++ */ ++static filter_t sessproperty[] = { ++ FILTER(UINT32, "unix-user"), ++ FILTER(UINT32, "user"), ++ FILTER(STRING, "session-type"), ++ FILTER(STRING, "remote-host-name"), ++ FILTER(STRING, "display-device"), ++ FILTER(STRING, "x11-display"), ++ FILTER(STRING, "x11-display-device"), ++ FILTER(BOOLEAN, "active"), ++ FILTER(BOOLEAN, "is-local"), ++ FILTER(BOOLEAN, "idle-hint"), ++ FILTER(BOOLEAN, (char*)0) ++}; ++ ++#undef FILTER ++ ++static inline device_t* add_device(list_t *head, const char *node) ++{ ++ const char* identify; ++ device_t *restrict new; ++ list_t *ptr; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ return this; ++ } ++ ++ new = newaligned(alignof(device_t)+strsize(node)); ++ if (!new) ++ return (device_t*)0; ++ memset(new, 0, alignof(device_t)); ++ ++ list_add_tail(&new->handle, head); ++ INIT_LIST_HEAD(&new->properties); ++ new->head = head; ++ ++ new->node = ((typeof(new->node))new)+alignof(device_t); ++ strcpy(new->node, node); ++ new->identify = new->node+(identify-node); ++ return new; ++} ++ ++static inline device_t* find_device(list_t *head, const char *node) ++{ ++ const char* identify; ++ list_t *ptr; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ return this; ++ } ++ return (device_t*)0; ++} ++ ++static inline void delete_device(device_t *this) ++{ ++ list_t *ptr, *safe; ++ list_for_each_safe(ptr, safe, &this->properties) { ++ property_t *obj = list_entry(ptr, property_t, handle); ++ if (obj->type == DBUS_TYPE_ARRAY) { ++ list_t *ap, *as; ++ list_for_each_safe(ap, as, (list_t*)obj->value) { ++ array_t *array = list_entry(ap, array_t, handle); ++ list_del(ap); ++ free(array); ++ } ++ } ++ list_del(ptr); ++ free(obj); ++ } ++ list_del(&this->handle); ++ this->head = (list_t*)0; ++ if (this->opts) free(this->opts); ++ if (this->entry) free(this->entry); ++ free(this); ++} ++ ++static inline void remove_device(list_t *head, const char *node) ++{ ++ list_t *ptr; ++ device_t *this = (device_t*)0; ++ const char* identify; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ this = list_entry(ptr, device_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ break; ++ } ++ if (this) delete_device(this); ++} ++ ++static inline void clear_devices(list_t *head) ++{ ++ list_t *ptr, *safe; ++ list_for_each_safe(ptr, safe, head) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ delete_device(this); ++ } ++} ++ ++static inline session_t* add_session(list_t *head, const char *node) ++{ ++ const char* identify; ++ session_t *restrict new; ++ list_t *ptr; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ session_t *this = list_entry(ptr, session_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ return this; ++ } ++ ++ new = newaligned(alignof(session_t)+strsize(node)); ++ if (!new) ++ return (session_t*)0; ++ memset(new, 0, alignof(session_t)); ++ ++ list_add_tail(&new->handle, head); ++ INIT_LIST_HEAD(&new->properties); ++ new->head = head; ++ ++ new->node = ((typeof(new->node))new)+alignof(session_t); ++ strcpy(new->node, node); ++ new->identify = new->node+(identify-node); ++ return new; ++} ++ ++static inline session_t* find_session(list_t *head, const char *node) ++{ ++ const char* identify; ++ list_t *ptr; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ session_t *this = list_entry(ptr, session_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ return this; ++ } ++ return (session_t*)0; ++} ++ ++static inline void delete_session(session_t *this) ++{ ++ list_t *ptr, *safe; ++ list_for_each_safe(ptr, safe, &this->properties) { ++ property_t *obj = list_entry(ptr, property_t, handle); ++ if (obj->type == DBUS_TYPE_ARRAY) { ++ list_t *ap, *as; ++ list_for_each_safe(ap, as, (list_t*)obj->value) { ++ array_t *array = list_entry(ap, array_t, handle); ++ list_del(ap); ++ free(array); ++ } ++ } ++ list_del(ptr); ++ free(obj); ++ } ++ list_del(&this->handle); ++ this->head = (list_t*)0; ++ if (this->opts) free(this->opts); ++ free(this); ++} ++ ++static inline void remove_session(list_t *head, const char *node) ++{ ++ list_t *ptr; ++ session_t *this = (session_t*)0; ++ const char* identify; ++ ++ if ((identify = strrchr(node, '/'))) ++ identify++; ++ else identify = node; ++ ++ list_for_each(ptr, head) { ++ this = list_entry(ptr, session_t, handle); ++ if (strcmp(this->identify, identify) == 0) ++ break; ++ } ++ if (this) delete_session(this); ++} ++ ++static inline void clear_sessions(list_t *head) ++{ ++ list_t *ptr, *safe; ++ list_for_each_safe(ptr, safe, head) { ++ session_t *this = list_entry(ptr, session_t, handle); ++ delete_session(this); ++ } ++} ++ ++static filter_t *property; ++static inline property_t *add_property(list_t *head, ++ const char* name, ++ int type, ++ const void *value, ++ size_t len) ++{ ++ property_t *restrict new; ++ filter_t *flt; ++ list_t *ptr; ++ size_t slen; ++ ++ if (!property) { ++ logerr(MODPREFIX "property not specified"); ++ return (property_t*)0; ++ } ++ ++ flt = property; ++ do { ++ if (flt->property == (char*)0) ++ break; ++ if (strcmp(flt->property, name) == 0) ++ break; ++ } while (flt++); ++ ++ if (flt->property == (char*)0) { ++ warn(LOGOPT_NONE, MODPREFIX "udisks reply property `%s' not known", name); ++ slen = strsize(name); ++ } else { ++ slen = 0; ++ if (flt->type != type) ++ warn(LOGOPT_NONE, MODPREFIX "udisks reply type `%c' not known", type); ++ } ++ ++ list_for_each(ptr, head) { ++ property_t *this = list_entry(ptr, property_t, handle); ++ if (strcmp(this->name, name) == 0) ++ return this; ++ } ++ if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) ++ len++; ++ ++ new = newaligned(alignof(property_t)+slen+len); ++ if (!new) ++ return (property_t*)0; ++ memset(new, 0, alignof(property_t)); ++ ++ list_add_tail(&new->handle, head); ++ ++ new->type = type; ++ ++ if (flt->property == (char*)0) { ++ new->name = ((typeof(new->name))new)+alignof(property_t); ++ strcpy(new->name, name); ++ } else ++ new->name = flt->property; /* hash key */ ++ ++ new->value = ((typeof(new->value))new)+alignof(property_t)+slen; ++ if (type == DBUS_TYPE_ARRAY) ++ INIT_LIST_HEAD(((list_t*)new->value)); ++ else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) ++ strcpy(new->value, value); ++ else ++ memcpy(new->value, value, len); ++ ++ return new; ++} ++ ++static void append_array(list_t *head, const char *value) ++{ ++ array_t *restrict new; ++ const char *string; ++ ++ if ((string = strrchr(value, '/'))) ++ string++; ++ else string = value; ++ ++ new = newaligned(alignof(array_t)+strsize(string)); ++ if (!new) ++ return; ++ memset(new, 0, alignof(array_t)); ++ list_add_tail(&new->handle, head); ++ ++ new->value = ((typeof(new->value))new)+alignof(array_t); ++ strcpy(new->value, string); ++} ++ ++static inline option_t map_property(const list_t *head, const char *restrict property) ++{ ++ option_t ret; ++ list_t *ptr; ++ ++ list_for_each(ptr, head) { ++ property_t *prop = list_entry(ptr, property_t, handle); ++ if (property == prop->name) { ++ ret.error = 0; ++ switch (prop->type) { ++ case DBUS_TYPE_BOOLEAN: ++ ret.boolean = *(dbus_bool_t*)(prop->value); ++ break; ++ case DBUS_TYPE_INT32: ++ ret.int32 = *(dbus_int32_t*)(prop->value); ++ break; ++ case DBUS_TYPE_UINT32: ++ ret.uint32 = *(dbus_uint32_t*)(prop->value); ++ break; ++ case DBUS_TYPE_INT64: ++ ret.int64 = *(dbus_int64_t*)(prop->value); ++ break; ++ case DBUS_TYPE_UINT64: ++ ret.uint64 = *(dbus_uint64_t*)(prop->value); ++ break; ++ case DBUS_TYPE_DOUBLE: ++ ret.number = *(double*)(prop->value); ++ break; ++ case DBUS_TYPE_STRING: ++ case DBUS_TYPE_OBJECT: ++ ret.string = (char*)(prop->value); ++ break; ++ case DBUS_TYPE_ARRAY: ++ ret.array = (list_t*)(prop->value); ++ break; ++ default: ++ ret.error = 1; ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks dbus type `%c' not handled", prop->type); ++ break; ++ } ++ break; ++ } ++ } ++ ++ return ret; ++} ++ ++static option_t get_option(const device_t *this, const devdict_t opt) ++{ ++ filter_t *flt; ++ option_t ret; ++ ++ memset(&ret, 0, sizeof(ret)); ++ ret.error = 1; ++ if (sizeof(devproperpty)/sizeof(filter_t) < opt) { ++ logerr(MODPREFIX "udisks option `%d' not known", opt); ++ goto out; ++ } ++ flt = &devproperpty[opt]; ++ if (flt->property == (char*)0) { ++ warn(LOGOPT_NONE, MODPREFIX "udisks option `%d' not known", opt); ++ goto out; ++ } ++ ret = map_property(&this->properties, flt->property); ++out: ++ return ret; ++} ++ ++static option_t get_session(const session_t *this, const ckdict_t opt) ++{ ++ filter_t *flt; ++ option_t ret; ++ ++ memset(&ret, 0, sizeof(ret)); ++ ret.error = 1; ++ if (sizeof(sessproperty)/sizeof(filter_t) < opt) { ++ logerr(MODPREFIX "udisks option `%d' not known", opt); ++ goto out; ++ } ++ flt = &sessproperty[opt]; ++ if (flt->property == (char*)0) { ++ warn(LOGOPT_NONE, MODPREFIX "udisks option `%d' not known", opt); ++ goto out; ++ } ++ ret = map_property(&this->properties, flt->property); ++out: ++ return ret; ++} ++ ++static entry_t *do_map_entry(struct lookup_context *ctxt, device_t *this) ++{ ++ const int labels[] = {IdLabel, DriveModel, DriveVendor, DriveSerial, -1}; ++ const config_t *const config = &ctxt->config; ++ entry_t *restrict entry = (entry_t*)0; ++ char mapent[MAPENT_MAX_LEN+1]; ++ const char *fstype; ++ const char *fallbck; ++ const char *common; ++ const char *device; ++ option_t option; ++ size_t maplen; ++ int offset; ++ list_t *ptr; ++ char *key; ++ ++ if (!config->enabled) ++ goto out; ++ ++ option = get_option(this, DeviceIsSystemInternal); ++ if (option.error || option.boolean == TRUE) ++ goto out; ++ ++ option = get_option(this, JobInProgress); ++ if (option.error || option.boolean == TRUE) ++ goto out; ++ ++ option = get_option(this, DeviceIsRemovable); ++ if (option.error || option.boolean == FALSE) { ++ /* ++ * Check for removable master device! ++ */ ++ option = get_option(this, DeviceIsDrive); ++ if (option.error) ++ goto out; ++ if (option.boolean == FALSE) { ++ device_t *master; ++ option = get_option(this, PartitionSlave); ++ if (option.error || strlen(option.string) <= 1) ++ goto out; ++ master = find_device(this->head, option.string); ++ option = get_option(master, DeviceIsRemovable); ++ if (option.error || option.boolean == FALSE) ++ goto out; ++ } ++ } ++ ++ option = get_option(this, DeviceIsPartition); ++ if (option.error || option.boolean == FALSE) { ++ /* ++ * Check for optical device with media! ++ */ ++ option = get_option(this, DeviceIsOpticalDisc); ++ if (option.error || option.boolean == FALSE) ++ goto out; ++ option = get_option(this, OpticalDiscNumAudioTracks); ++ if (option.error || option.uint32 > 0) ++ goto out; ++ } ++ ++ option = get_option(this, IdUsage); ++ if (option.error || strcmp(option.string, "filesystem") != 0) ++ goto out; ++ ++ option = get_option(this, IdType); ++ if (option.error) ++ goto out; ++ fstype = option.string; ++ if (*fstype == '\0') ++ fstype = "auto"; ++ ++ option = get_option(this, DeviceFilePresentation); ++ if (option.error) ++ goto out; ++ device = option.string; ++ ++ maplen = sizeof(mapent); ++ offset = snprintf(&mapent[0], maplen, "-fstype=%s", fstype); ++ if (offset < 0 || offset >= maplen) ++ goto out; ++ maplen -= offset; ++ ++ fallbck = (char*)0; ++ list_for_each(ptr, &config->fstypes) { ++ mntopt_t *fs = list_entry(ptr, mntopt_t, handle); ++ if (strcmp(fstype, fs->identify) == 0) { ++ int len = snprintf(&mapent[offset], maplen, ",%s", fs->options); ++ if (len < 0 || len >= maplen) ++ goto out; ++ offset += len; ++ maplen -= len; ++ fallbck = (char*)0; ++ break; ++ } ++ if (strcmp("auto", fs->identify) == 0) ++ fallbck = fs->identify; ++ } ++ ++ if (fallbck) { ++ int len = snprintf(&mapent[offset], maplen, ",%s", fallbck); ++ if (len < 0 || len >= maplen) ++ goto out; ++ offset += len; ++ maplen -= len; ++ } ++ ++ /* ++ * Determine common mount options in order of ++ * , and last but not least from the ++ * configuration file for the current map. ++ */ ++ common = (char*)0; ++ option = get_option(this, IdLabel); ++ if (option.error) ++ goto out; ++ if (*option.string) { ++ list_for_each(ptr, &config->label) { ++ mntopt_t *lb = list_entry(ptr, mntopt_t, handle); ++ if (strcmp(option.string, lb->identify) == 0) { ++ common = lb->options; ++ break; ++ } ++ } ++ } ++ if (!common) { ++ list_t *tmp; ++ option = get_option(this, DeviceFileById); ++ if (option.error) ++ goto out; ++ list_for_each(tmp, option.array) { ++ array_t *str = list_entry(tmp, array_t, handle); ++ list_for_each(ptr, &config->byid) { ++ mntopt_t *id = list_entry(ptr, mntopt_t, handle); ++ if (strcmp(str->value, id->identify) == 0) { ++ common = id->options; ++ break; ++ } ++ } ++ if (common) break; ++ } ++ } ++ if (!common) common = config->common; ++ ++ if (common) { ++ int len = snprintf(&mapent[offset], maplen, ",%s", common); ++ if (len < 0 || len >= maplen) ++ goto out; ++ offset += len; ++ maplen -= len; ++ } ++ ++ /* ++ * Now add the device after a colon ++ */ ++ offset = snprintf(&mapent[offset], maplen, " :%s", device); ++ if (offset < 0 || offset >= maplen) ++ goto out; ++ maplen -= offset; ++ ++ /* ++ * The key of the entry ++ */ ++ key = (char*)0; ++ for (offset = 0; labels[offset] >= 0; offset++) { ++ char *ptr; ++ ++ option = get_option(this, labels[offset]); ++ if (option.error) ++ continue; ++ if (*option.string == '\0') ++ continue; ++ if (strcasecmp(option.string, "usb") == 0) ++ continue; ++ ++ key = strdup(option.string); ++ if (key == (char*)0) ++ goto out; ++ ++ for (ptr = key; *ptr; ptr++) { ++ if (*ptr == ' ') *ptr = '_'; ++ else if (*ptr == '/') *ptr = '_'; ++ else if (*ptr < 32) *ptr = '?'; ++ else if (*ptr > 127) *ptr = '?'; ++ } ++ ++ break; ++ } ++ if (key == (char*)0) ++ goto out; ++ ++ /* ++ * Allocate the entry and return this. ++ */ ++ entry = newaligned(alignof(entry_t)+strsize(key)+strsize(mapent)); ++ if (!entry) ++ goto out; ++ memset(entry, 0, alignof(entry_t)); ++ ++ entry->key = ((typeof(entry->key))entry)+alignof(entry_t); ++ entry->key_len = strlen(key); ++ strcpy(entry->key, key); ++ ++ entry->mapent = ((typeof(entry->mapent))entry)+alignof(entry_t)+strsize(key); ++ entry->mapent_len = strlen(mapent); ++ strcpy(entry->mapent, mapent); ++ ++ if (this->entry) ++ free(this->entry); ++ this->entry = entry; ++ free(key); ++out: ++ return entry; ++} ++ ++/* ++ * We parse dbus messages structure as response of org.freedesktop.DBus.Properties.GetAll ++ * which looks like this one: ++ * ++ * array [ ++ * dict_entry( ++ * string "DictName" ++ * variant [array:string|boolean|double|int32|int64|object_path|string|uint32|uint64] ++ * ) ++ * ... ++ * ] ++ * ++ */ ++static void __iterate_reply(DBusMessageIter *iter, list_t *head, const char** name) ++{ ++ do { ++ int type = dbus_message_iter_get_arg_type(iter); ++ if (type == DBUS_TYPE_INVALID) ++ break; ++ switch (type) { ++ case DBUS_TYPE_STRING: { ++ char *value; ++ dbus_message_iter_get_basic(iter, &value); ++ if (*name == (char*)0) { ++ *name = value; ++ break; ++ } ++ add_property(head, *name, DBUS_TYPE_STRING, value, strlen(value)); ++ break; ++ } ++ case DBUS_TYPE_OBJECT_PATH: { ++ char *value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_OBJECT_PATH, value, strlen(value)); ++ break; ++ } ++ case DBUS_TYPE_INT32: { ++ dbus_int32_t value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_INT32, &value, sizeof(dbus_int32_t)); ++ break; ++ } ++ case DBUS_TYPE_UINT32: { ++ dbus_uint32_t value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_UINT32, &value, sizeof(dbus_uint32_t)); ++ break; ++ } ++ case DBUS_TYPE_INT64: { ++ dbus_int64_t value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_INT64, &value, sizeof(dbus_int64_t)); ++ break; ++ } ++ case DBUS_TYPE_UINT64: { ++ dbus_uint64_t value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_UINT64, &value, sizeof(dbus_uint64_t)); ++ break; ++ } ++ case DBUS_TYPE_DOUBLE: { ++ double value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_DOUBLE, &value, sizeof(double)); ++ break; ++ } ++ case DBUS_TYPE_BOOLEAN: { ++ dbus_bool_t value; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_get_basic(iter, &value); ++ add_property(head, *name, DBUS_TYPE_BOOLEAN, &value, sizeof(dbus_bool_t)); ++ break; ++ } ++ case DBUS_TYPE_ARRAY: { ++ int tsub; ++ property_t *prop; ++ DBusMessageIter isub; ++ ++ if (name == (const char**)0) { ++ /* ++ * The outer array of the message, check for first entry which ++ * should be a dict container, anything else is a bug. ++ */ ++ dbus_message_iter_recurse (iter, &isub); ++ if (dbus_message_iter_get_arg_type(&isub) != DBUS_TYPE_DICT_ENTRY) ++ goto err; ++ __iterate_reply(&isub, head, (const char**)0); ++ break; ++ } ++ ++ dbus_message_iter_recurse(iter, &isub); ++ tsub = dbus_message_iter_get_arg_type(&isub); ++ prop = add_property(head, *name, DBUS_TYPE_ARRAY, 0, sizeof(list_t)); ++ ++ while (tsub == DBUS_TYPE_STRING) { ++ char *value; ++ dbus_message_iter_get_basic(&isub, &value); ++ append_array(((list_t*)prop->value), value); ++ ++ dbus_message_iter_next(&isub); ++ tsub = dbus_message_iter_get_arg_type(&isub); ++ } ++ break; ++ } ++ case DBUS_TYPE_VARIANT: { ++ DBusMessageIter isub; ++ if (*name == (char*)0) ++ goto err; ++ dbus_message_iter_recurse(iter, &isub); ++ __iterate_reply(&isub, head, name); ++ break; ++ } ++ case DBUS_TYPE_DICT_ENTRY: { ++ const char *dict; ++ DBusMessageIter isub; ++ dbus_message_iter_recurse(iter, &isub); ++ dict = (const char*)0; ++ __iterate_reply(&isub, head, &dict); ++ dbus_message_iter_next(&isub); ++ __iterate_reply(&isub, head, &dict); ++ break; ++ } ++ default: ++ err: ++ warn(LOGOPT_NONE, MODPREFIX "udisks reply type `%c' not handled", type); ++ break; ++ } ++ } while (dbus_message_iter_next(iter)); ++} ++ ++static inline void iterate_device_reply(DBusMessageIter *iter, list_t *head) ++{ ++ property = &devproperpty[0]; ++ __iterate_reply(iter, head, (const char**)0); ++ property = (filter_t*)0; ++} ++ ++static int read_device_properties(struct lookup_context *ctxt, device_t *obj) ++{ ++ const char *device = "org.freedesktop.UDisks.Device"; ++ DBusMessage *reply, *send; ++ DBusMessageIter iter; ++ const char *signature; ++ int ret = NSS_STATUS_UNAVAIL; ++ ++ send = dbus_message_new_method_call("org.freedesktop.UDisks", ++ obj->node, ++ "org.freedesktop.DBus.Properties", ++ "GetAll"); ++ if (!send) ++ goto out; ++ dbus_message_set_auto_start(send, TRUE); ++ if (!dbus_message_set_destination(send, "org.freedesktop.UDisks")) ++ goto out; ++ ++ dbus_message_iter_init_append(send, &iter); ++ ++ dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &device); ++ ++ reply = dbus_connection_send_with_reply_and_block(ctxt->conn, send, 50000, ctxt->error); ++ dbus_message_unref(send); ++ ++ if (dbus_error_is_set(ctxt->error)) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks map %s, can not connect system dbus: %s", ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto out; ++ } ++ if (!reply) ++ goto out; ++ if (dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN) ++ goto unref; ++ signature = dbus_message_get_signature(reply); ++ if ((int)*signature != DBUS_TYPE_ARRAY) ++ goto unref; ++ dbus_message_iter_init(reply, &iter); ++ iterate_device_reply(&iter, &obj->properties); ++ ret = NSS_STATUS_SUCCESS; ++unref: ++ dbus_message_unref(reply); ++out: ++ if (ret != NSS_STATUS_SUCCESS) ++ logerr(MODPREFIX "%s failed", __FUNCTION__); ++ return ret; ++} ++ ++static inline void iterate_session_reply(DBusMessageIter *iter, list_t *head) ++{ ++ property = &sessproperty[0]; ++ __iterate_reply(iter, head, (const char**)0); ++ property = (filter_t*)0; ++} ++ ++static int read_session_properties(struct lookup_context *ctxt, session_t *obj) ++{ ++ const char *session = "org.freedesktop.ConsoleKit.Session"; ++ DBusMessage *reply, *send; ++ DBusMessageIter iter; ++ const char *signature; ++ int ret = NSS_STATUS_UNAVAIL; ++ ++ send = dbus_message_new_method_call("org.freedesktop.ConsoleKit", ++ obj->node, ++ "org.freedesktop.DBus.Properties", ++ "GetAll"); ++ if (!send) ++ goto out; ++ dbus_message_set_auto_start(send, TRUE); ++ if (!dbus_message_set_destination(send, "org.freedesktop.ConsoleKit")) ++ goto out; ++ ++ dbus_message_iter_init_append(send, &iter); ++ ++ dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &session); ++ ++ reply = dbus_connection_send_with_reply_and_block(ctxt->conn, send, 50000, ctxt->error); ++ dbus_message_unref(send); ++ ++ if (dbus_error_is_set(ctxt->error)) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks sessions %s, can not connect system dbus: %s", ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto out; ++ } ++ if (!reply) ++ goto out; ++ if (dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN) ++ goto unref; ++ signature = dbus_message_get_signature(reply); ++ if ((int)*signature != DBUS_TYPE_ARRAY) ++ goto unref; ++ dbus_message_iter_init(reply, &iter); ++ iterate_session_reply(&iter, &obj->properties); ++ ret = NSS_STATUS_SUCCESS; ++unref: ++ dbus_message_unref(reply); ++out: ++ if (ret != NSS_STATUS_SUCCESS) ++ logerr(MODPREFIX "%s failed", __FUNCTION__); ++ return ret; ++} ++ ++typedef enum member_e { ++ DeviceAdded = 0, ++ DeviceChanged, ++ DeviceRemoved, ++ SessionAdded, ++ SessionRemoved, ++ UnkownMember ++} member_t; ++ ++static time_t do_cache_update(struct lookup_context *ctxt, ++ const char *key, const char *mapent, ++ const int update) ++{ ++ struct autofs_point *ap = ctxt->ap; ++ struct map_source *map = ctxt->map; ++ struct mapent_cache *mc; ++ time_t age = time(NULL); ++ char path[PATH_MAX+1]; ++ int manage = 0; ++ ++ if (!ap || !map->mc) ++ return 0; ++ mc = map->mc; ++ ++ if ((ap->flags & MOUNT_FLAG_GHOST) && strlen(key)) { ++ int len = snprintf(path, PATH_MAX, "%s/%s", ap->path, key); ++ if (len < 0 || len >= PATH_MAX) ++ return 0; ++ manage = 1; ++ } ++ ++ cache_writelock(mc); ++ switch (update) { ++ case DeviceRemoved: ++ debug(LOGOPT_NONE, MODPREFIX "%s %d remove %s -> %s", __FUNCTION__, __LINE__, key, mapent); ++ cache_delete(mc, key); ++ if (manage) ++ rmdir_path(ap, path, ap->dev); ++ break; ++ default: ++ case DeviceAdded: ++ debug(LOGOPT_NONE, MODPREFIX "%s %d added %s -> %s", __FUNCTION__, __LINE__, key, mapent); ++ cache_update(mc, map, key, mapent, age); ++ if (manage) ++ mkdir_path(path, 0555); ++ break; ++ } ++ cache_unlock(mc); ++ ++ map->age = age; ++ return age; ++} ++ ++static DBusHandlerResult dbusfilter(DBusConnection *connection, ++ DBusMessage *message, ++ void *context) ++{ ++ struct lookup_context *ctxt = (struct lookup_context *)context; ++ DBusMessageIter iter; ++ const char *interface; ++ const char *member; ++ const char *path; ++ int type, state; ++ member_t memb; ++ ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &state); ++ ++ type = dbus_message_get_type(message); ++ switch (type) { ++ case DBUS_MESSAGE_TYPE_SIGNAL: ++ case DBUS_MESSAGE_TYPE_METHOD_CALL: ++ path = dbus_message_get_path(message); ++ if (!path) ++ break; ++ if (strncmp("/org/freedesktop/", path, 17)) ++ break; ++ interface = dbus_message_get_interface(message); ++ if (!interface) ++ break; ++ if (strncmp("org.freedesktop.", interface, 16)) ++ break; ++ member = dbus_message_get_member(message); ++ if (!member) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks member of `%s' is missed known", path); ++ break; ++ } ++ ++ memb = UnkownMember; ++ if (strcmp("UDisks", path+17) == 0) { ++ if (strcmp("UDisks", interface+16)) ++ break; ++ if (strncmp(member, "Device", 6)) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks member `%s' not known", member); ++ break; ++ } ++ member += 6; ++ ++ if (strcmp(member, "Added") == 0) ++ memb = DeviceAdded; ++ else if (strcmp(member, "Changed") == 0) ++ memb = DeviceChanged; ++ else if (strcmp(member, "Removed") == 0) ++ memb = DeviceRemoved; ++ ++ } else if (strncmp("ConsoleKit/Seat", path+17, 4) == 0) { ++ if (strcmp("ConsoleKit.Seat", interface+16)) ++ break; ++ if (strncmp(member, "Session", 7)) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks member `%s' not known", member); ++ break; ++ } ++ member += 7; ++ ++ if (strcmp(member, "Added") == 0) ++ memb = SessionAdded; ++ else if (strcmp(member, "Removed") == 0) ++ memb = SessionRemoved; ++ ++ } else ++ break; ++ ++ dbus_message_iter_init(message, &iter); ++ type = dbus_message_iter_get_arg_type(&iter); ++ if (type != DBUS_TYPE_OBJECT_PATH) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks member `Device%s' without object path", member); ++ break; ++ } ++ dbus_message_iter_get_basic(&iter, &path); ++ lock(ctxt); ++ switch (memb) { ++ case DeviceAdded: { ++ device_t *this = add_device(&ctxt->devices, path); ++ if (this) { ++ entry_t *entry; ++ int ret = read_device_properties(ctxt, this); ++ if (ret != NSS_STATUS_SUCCESS) { ++ remove_device(&ctxt->devices, path); ++ break; ++ } ++ entry = do_map_entry(ctxt, this); ++ if (entry) ++ entry->age = do_cache_update(ctxt, entry->key, entry->mapent, DeviceAdded); ++ } ++ break; ++ } ++ case DeviceChanged: { ++ char *key = (char*)0; ++ device_t *this = find_device(&ctxt->devices, path); ++ if (this) { ++ entry_t *entry = this->entry; ++ if (entry) ++ key = strdup(entry->key); ++ delete_device(this); ++ } ++ this = add_device(&ctxt->devices, path); ++ if (this) { ++ entry_t *entry; ++ int ret = read_device_properties(ctxt, this); ++ if (ret != NSS_STATUS_SUCCESS) { ++ remove_device(&ctxt->devices, path); ++ if (key) ++ free(key); ++ break; ++ } ++ entry = do_map_entry(ctxt, this); ++ if (entry) { ++ if (key == (char*)0) ++ entry->age = do_cache_update(ctxt, entry->key, entry->mapent, DeviceAdded); ++ else if (strcmp(key, entry->key) != 0) { ++ entry->age = do_cache_update(ctxt, entry->key, entry->mapent, DeviceAdded); ++ free(key); ++ } ++ } else { ++ if (key) { ++ (void)do_cache_update(ctxt, key, (char*)0, DeviceRemoved); ++ free(key); ++ } ++ } ++ break; ++ } ++ if (!key) ++ break; ++ do_cache_update(ctxt, key, (char*)0, DeviceRemoved); ++ free(key); ++ break; ++ } ++ case DeviceRemoved: { ++ device_t *this = find_device(&ctxt->devices, path); ++ if (this) { ++ entry_t *entry = this->entry; ++ if (entry) ++ (void)do_cache_update(ctxt, entry->key, (char*)0, DeviceRemoved); ++ delete_device(this); ++ } ++ break; ++ } ++ case SessionAdded: { ++ session_t *this = add_session(&ctxt->sessions, path); ++ if (this) { ++ int ret = read_session_properties(ctxt, this); ++ if (ret == NSS_STATUS_SUCCESS) { ++ debug(LOGOPT_NONE, MODPREFIX "%s %d added session %s", __FUNCTION__, __LINE__, path); ++ break; ++ } ++ remove_session(&ctxt->sessions, path); ++ } ++ break; ++ } ++ case SessionRemoved: { ++ session_t *this = find_session(&ctxt->sessions, path); ++ if (this) { ++ debug(LOGOPT_NONE, MODPREFIX "%s %d removed session %s", __FUNCTION__, __LINE__, path); ++ delete_session(this); ++ } ++ break; ++ } ++ default: ++ warn(LOGOPT_NONE, MODPREFIX "udisks member `Device%s' not known", member); ++ break; ++ } ++ unlock(ctxt); ++ default: ++ break; ++ } ++ ++ pthread_setcancelstate(state, NULL); ++ ++ if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")) { ++ if (ctxt->active) { ++ lock(ctxt); ++ ctxt->active = 0; ++ unlock(ctxt); ++ pthread_exit(NULL); ++ } ++ } ++ ++ return DBUS_HANDLER_RESULT_HANDLED; ++} ++ ++static void free_config(struct lookup_context *ctxt) ++{ ++ list_t *ptr, *safe; ++ if (ctxt->config.common) ++ free(ctxt->config.common); ++ list_for_each_safe(ptr, safe, &ctxt->config.fstypes) { ++ mntopt_t *this = list_entry(ptr, mntopt_t, handle); ++ list_del(ptr); ++ free(this); ++ } ++ list_for_each_safe(ptr, safe, &ctxt->config.byid) { ++ mntopt_t *this = list_entry(ptr, mntopt_t, handle); ++ list_del(ptr); ++ free(this); ++ } ++ list_for_each_safe(ptr, safe, &ctxt->config.label) { ++ mntopt_t *this = list_entry(ptr, mntopt_t, handle); ++ list_del(ptr); ++ free(this); ++ } ++} ++ ++#ifdef LIBXML_TREE_ENABLED ++static void xmlerror(void *context, const xmlError *err) ++{ ++ struct lookup_context *ctxt = (struct lookup_context*)context; ++ char *message = err->message; ++ char *nl = strrchr(message, '\n'); ++ if (nl) *nl = '\0'; ++ logerr(MODPREFIX "in %s at line %d: %s", ctxt->mapname, err->line, err->message); ++ xmlResetError(err); ++ ctxt->config.enabled = 0; ++} ++ ++#define FILTER(property) { #property, property } ++static filter_t cnfproperpty[] = { ++ FILTER(AutofsUdisks), ++ FILTER(MountOptions), ++ FILTER(Common), ++ FILTER(DiskById), ++ FILTER(DiskByLabel), ++ FILTER(FSType), ++ { (char*)0, 0 } ++}; ++#undef FILTER ++ ++static filter_t *check_config(struct lookup_context *ctxt, const xmlChar *name, const int depth) ++{ ++ filter_t *flt; ++ cnfxml_t obj = 0; ++ ++ flt = &cnfproperpty[obj]; ++ ++ do { ++ if (flt->property == (char*)0) ++ break; ++ if (strcmp(flt->property, (char*)name) == 0) ++ break; ++ } while (flt++); ++ ++ switch (flt->type) { ++ case AutofsUdisks: ++ case MountOptions: ++ if (depth == flt->type) ++ break; ++ logerr(MODPREFIX "broken xml configuration file %s", ctxt->mapname); ++ ctxt->config.enabled = 0; ++ default: ++ break; ++ } ++ ++ return flt; ++} ++ ++static void add_config(struct lookup_context *ctxt, list_t *head, const char *fs, const char* opts) ++{ ++ mntopt_t *restrict new; ++ ++ new = newaligned(alignof(mntopt_t)+strsize(fs)+strsize(opts)); ++ if (!new) { ++ ctxt->config.enabled = 0; ++ return; ++ } ++ memset(new, 0, alignof(mntopt_t)); ++ ++ list_add_tail(&new->handle, head); ++ ++ new->identify = ((typeof(new->identify))new)+alignof(mntopt_t); ++ strcpy(new->identify, fs); ++ ++ new->options = ((typeof(new->options))new)+alignof(mntopt_t)+strsize(fs); ++ strcpy(new->options, opts); ++} ++ ++static void iterate_config(struct lookup_context *ctxt, const xmlNode *node, int depth) ++{ ++ const xmlNode *curr; ++ ++ for (curr = node; curr; curr = curr->next) { ++ const xmlAttr *attr; ++ xmlNode *child; ++ xmlChar *entry; ++ xmlChar *opts; ++ filter_t *flt; ++ list_t *head; ++ int cnt; ++ ++ if (curr->type != XML_ELEMENT_NODE) ++ continue; ++ child = curr->children; ++ flt = check_config(ctxt, curr->name, depth); ++ head = (list_t*)0; ++ opts = (xmlChar*)0; ++ ++ entry = xmlNodeListGetString(curr->doc, child, 1); ++ if (entry) { ++ char *nl; ++ opts = entry; ++ while (*opts == ' ' || *opts == '\n') ++ opts++; ++ if ((nl = strchr((char*)opts, '\n'))) ++ *nl = '\0'; ++ switch (flt->type) { ++ case AutofsUdisks: ++ case MountOptions: ++ if (*opts == '\0') ++ break; ++ goto err; ++ case Common: ++ if (ctxt->config.common) ++ goto err; ++ ctxt->config.common = strdup((char*)opts); ++ break; ++ case DiskById: ++ if (!curr->properties) ++ goto err; ++ head = &ctxt->config.byid; ++ break; ++ case DiskByLabel: ++ if (!curr->properties) ++ goto err; ++ head = &ctxt->config.label; ++ break; ++ case FSType: ++ head = &ctxt->config.fstypes; ++ if (!curr->properties) ++ add_config(ctxt, head, "auto", (const char*)opts); ++ break; ++ default: ++ goto err; ++ } ++ } ++ ++ for (attr = curr->properties, cnt = 0; attr; attr = attr->next, cnt++) { ++ xmlChar *key; ++ if (!attr->name) ++ continue; ++ switch (flt->type) { ++ case MountOptions: ++ case Common: ++ goto err; ++ default: ++ if (!cnt) ++ break; ++ goto err; ++ } ++ key = xmlNodeListGetString(attr->doc, attr->children, 1); ++ if (key) { ++ char *nl; ++ xmlChar *ptr = key; ++ while (*ptr == ' ' || *ptr == '\n') ++ ptr++; ++ if ((nl = strchr((char*)opts, '\n'))) ++ *nl = '\0'; ++ switch (flt->type) { ++ case AutofsUdisks: ++ if (strcmp("enable", (char*)attr->name)) ++ goto err; ++ if (strcasecmp("true", (char*)ptr) == 0 || ++ strcasecmp("yes", (char*)ptr) == 0) ++ ctxt->config.enabled = 1; /* Here we go */ ++ break; ++ default: ++ if (strcmp("value", (char*)attr->name)) ++ goto err; ++ if (!head || !opts) ++ goto err; ++ add_config(ctxt, head, (const char*)ptr, (const char*)opts); ++ break; ++ } ++ xmlFree(key); ++ } ++ } ++ if (entry) ++ xmlFree(entry); ++ ++ iterate_config(ctxt, child, ++depth); ++ } ++ return; ++err: ++ logerr(MODPREFIX "broken xml configuration file %s", ctxt->mapname); ++ ctxt->config.enabled = 0; ++} ++ ++static void parse_config(struct lookup_context *ctxt, const char* path) ++{ ++ xmlNode *root = (xmlNode*)0; ++ xmlDoc *doc; ++ ++ xmlSetStructuredErrorFunc(ctxt, &xmlerror); ++ ++ doc = xmlReadFile(path, (const char*)0, XML_PARSE_NONET | XML_PARSE_PEDANTIC); ++ if (!doc) ++ return; ++ root = xmlDocGetRootElement(doc); ++ if (!root) { ++ xmlFreeDoc(doc); ++ return; ++ } ++ ++ iterate_config(ctxt, root, 0); ++ ++ xmlFreeDoc(doc); ++ xmlCleanupParser(); ++} ++#else /* !LIBXML_TREE_ENABLED */ ++static void parse_config(struct lookup_context ctxt, const char* path) ++{ ++ ctxt->config.enabled = 0; ++} ++#endif /* !LIBXML_TREE_ENABLED */ ++ ++static void free_context(struct lookup_context *ctxt) ++{ ++ if (ctxt->active) { ++ lock(ctxt); ++ ctxt->active = 0; ++ unlock(ctxt); ++ pthread_yield(); ++ if (ctxt->running && ctxt->watchdog) ++ pthread_cancel(ctxt->watchdog); ++ } ++ ++ lock(ctxt); ++ if (!list_empty(&ctxt->devices)) { ++ list_t *ptr; ++ list_for_each(ptr, &ctxt->devices) { ++ entry_t *entry; ++ device_t *this = list_entry(ptr, device_t, handle); ++ if (!this) ++ continue; ++ entry = do_map_entry(ctxt, this); ++ if (!entry) ++ continue; ++ do_cache_update(ctxt, entry->key, entry->mapent, DeviceRemoved); ++ } ++ clear_devices(&ctxt->devices); ++ } ++ if (!list_empty(&ctxt->sessions)) ++ clear_sessions(&ctxt->sessions); ++ unlock(ctxt); ++ pthread_mutex_destroy(&ctxt->mtx); ++ ++ free_config(ctxt); ++ ++ if (ctxt->error && dbus_error_is_set(ctxt->error)) ++ dbus_error_free(ctxt->error); ++ if (ctxt->conn) { ++ dbus_connection_close(ctxt->conn); ++ dbus_connection_unref(ctxt->conn); ++ } ++ dbus_shutdown(); ++ ++ free(ctxt); ++} ++ ++int lookup_version = AUTOFS_LOOKUP_VERSION; /* Required by protocol */ ++int lookup_init(const char *mapfmt, int argc, const char *const *argv, void **context) ++{ ++ struct lookup_context *restrict ctxt; ++ struct stat st; ++ int ret; ++ ++ *context = NULL; ++ ++ debug(LOGOPT_NONE, MODPREFIX "lookup init with argv[0] == %s", argv[0]); ++ ++ if (sizeof(devproperpty)/sizeof(filter_t) != NullDict+1) { ++ logerr(MODPREFIX "size of hash array does not fit numbers of symbols"); ++ goto err; ++ } ++ if (sizeof(sessproperty)/sizeof(filter_t) != NullCk+1) { ++ logerr(MODPREFIX "size of hash array does not fit numbers of symbols"); ++ goto err; ++ } ++ ++#ifdef LIBXML_TREE_ENABLED ++ if (sizeof(cnfproperpty)/sizeof(filter_t) != NullCnf+1) { ++ logerr(MODPREFIX "size of hash array does not fit numbers of symbols"); ++ goto err; ++ } ++ xmlInitParser(); ++ ++ /* ++ * This initialize the library and check potential ABI mismatches ++ * between the version it was compiled for and the actual shared ++ * library used. ++ */ ++ LIBXML_TEST_VERSION ++#else /* !LIBXML_TREE_ENABLED */ ++ logerr(MODPREFIX "there was no XML support compiled in"); ++ goto err; ++#endif /* !LIBXML_TREE_ENABLED */ ++ ctxt = newaligned(alignof(struct lookup_context)+sizeof(struct DBusError)); ++ if (!ctxt) ++ goto err; ++ memset(ctxt, 0, alignof(struct lookup_context)); ++ ++ INIT_LIST_HEAD(&ctxt->devices); ++ INIT_LIST_HEAD(&ctxt->sessions); ++ INIT_LIST_HEAD(&ctxt->config.fstypes); ++ INIT_LIST_HEAD(&ctxt->config.byid); ++ INIT_LIST_HEAD(&ctxt->config.label); ++ ctxt->config.enabled = 0; ++ ctxt->error = (struct DBusError*)((void*)ctxt+alignof(struct lookup_context)); ++ dbus_error_init(ctxt->error); ++ ++ ret = pthread_mutex_init(&ctxt->mtx, NULL); ++ if (ret) { ++ error(LOGOPT_ANY, MODPREFIX "failed to init mutex"); ++ goto ferr; ++ } ++ ++ /* If a map type isn't explicitly given, parse it like sun entries. */ ++ if (mapfmt == NULL) ++ mapfmt = MAPFMT_DEFAULT; ++ ++ if (argc < 1) { ++ logerr(MODPREFIX "No map name"); ++ goto ferr; ++ } ++ ctxt->mapname = argv[0]; ++ if (ctxt->mapname[0] != '/') { ++ logmsg(MODPREFIX ++ "udisks autofs %s is not an absolute pathname", argv[0]); ++ goto ferr; ++ } ++ if (access(ctxt->mapname, R_OK)) { ++ logerr(MODPREFIX ++ "udisks autofs %s missing or not readable", argv[0]); ++ goto ferr; ++ } ++ if (stat(ctxt->mapname, &st)) { ++ logerr(MODPREFIX ++ "udisks autofs %s, could not stat", argv[0]); ++ goto ferr; ++ } ++ ++ if (S_ISREG(st.st_mode) == 0) { ++ logerr(MODPREFIX ++ "udisks autofs %s, is not a regular file", argv[0]); ++ goto ferr; ++ } ++ parse_config(ctxt, ctxt->mapname); ++ ++ if (dbus_threads_init_default() == FALSE) { ++ char buf[MAX_ERR_BUF]; ++ const char *const estr = strerror_r(errno, buf, sizeof(buf)); ++ logerr(MODPREFIX "memory allocation: %s", estr); ++ return NSS_STATUS_UNAVAIL; ++ } ++ ++ ctxt->conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, ctxt->error); ++ if (!ctxt->conn) { ++ logerr(MODPREFIX "udisks map %s, can not connect system dbus: %s", ++ ctxt->mapname, ctxt->error->message); ++ goto ferr; ++ } ++ dbus_connection_set_exit_on_disconnect(ctxt->conn, FALSE); ++ ++ ret = dbus_bus_start_service_by_name(ctxt->conn, "org.freedesktop.UDisks", 0, 0, ctxt->error); ++ if ((dbus_bool_t)ret == FALSE) { ++ warn(LOGOPT_NONE, MODPREFIX ++ "udisks map %s, can not start system udisks service: %s", argv[0], ctxt->error->message); ++ goto ferr; ++ } ++ ++ ret = dbus_bus_request_name(ctxt->conn, "org.freedesktop.AutoMount", DBUS_NAME_FLAG_REPLACE_EXISTING, ctxt->error); ++ if ((dbus_bool_t)ret == FALSE) { ++ logerr(MODPREFIX "udisks map %s, can not connect system dbus: %s", ++ ctxt->mapname, ctxt->error->message); ++ goto ferr; ++ } ++ ++ /* Open the parser, if we can. */ ++ ctxt->parse = open_parse(mapfmt, MODPREFIX, argc - 1, argv + 1); ++ if (!ctxt->parse) { ++ logerr(MODPREFIX "failed to open parse context"); ++ goto ferr; ++ } ++ ++ ctxt->ap = (struct autofs_point*)0; ++ *context = ctxt; ++ return NSS_STATUS_SUCCESS; ++ferr: ++ free_context(ctxt); ++err: ++ logerr(MODPREFIX "%s failed", __FUNCTION__); ++ return NSS_STATUS_NOTFOUND; ++} ++ ++int lookup_read_master(struct master *master, time_t age, void *context) ++{ ++ logmsg(MODPREFIX "%s master not supported", __FUNCTION__); ++ return NSS_STATUS_UNKNOWN; ++} ++ ++static int read_current_map(struct lookup_context *ctxt) ++{ ++ DBusMessage *reply, *send; ++ DBusMessageIter iter, isub; ++ int type, ret = NSS_STATUS_UNAVAIL; ++ ++ send = dbus_message_new_method_call("org.freedesktop.UDisks", ++ "/org/freedesktop/UDisks", ++ "org.freedesktop.UDisks", ++ "EnumerateDevices"); ++ if (!send) ++ goto err; ++ dbus_message_set_auto_start(send, TRUE); ++ if (!dbus_message_set_destination(send, "org.freedesktop.UDisks")) ++ goto err; ++ ++ reply = dbus_connection_send_with_reply_and_block(ctxt->conn, send, 50000, ctxt->error); ++ dbus_message_unref(send); ++ ++ if (dbus_error_is_set(ctxt->error)) { ++ logerr(MODPREFIX "udisks map %s, can not connect system dbus: %s", ++ ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++ if (!reply) ++ goto err; ++ if (dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN) ++ goto unref; ++ ++ /* ++ * As reply we assume an array of strings here, ++ * each of them a device path ++ */ ++ dbus_message_iter_init(reply, &iter); ++ type = dbus_message_iter_get_arg_type(&iter); ++ if (type != DBUS_TYPE_ARRAY) ++ goto unref; ++ ++ dbus_message_iter_recurse (&iter, &isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ if (type == DBUS_TYPE_BYTE) ++ goto unref; ++ ++ while (type == DBUS_TYPE_OBJECT_PATH) { ++ char *path; ++ ++ dbus_message_iter_get_basic(&isub, &path); ++ if (add_device(&ctxt->devices, path) == (device_t*)0) ++ goto unref; ++ ++ dbus_message_iter_next (&isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ } ++ ret = NSS_STATUS_SUCCESS; ++unref: ++ dbus_message_unref(reply); ++err: ++ if (ret != NSS_STATUS_SUCCESS) ++ logerr(MODPREFIX "%s faild", __FUNCTION__); ++ return ret; ++} ++ ++static int read_current_sessions(struct lookup_context *ctxt, const char* seat) ++{ ++ DBusMessage *reply, *send; ++ DBusMessageIter iter, isub; ++ int type, ret = NSS_STATUS_UNAVAIL; ++ ++ ++ send = dbus_message_new_method_call("org.freedesktop.ConsoleKit", ++ seat, ++ "org.freedesktop.ConsoleKit.Seat", ++ "GetSessions"); ++ if (!send) ++ goto err; ++ dbus_message_set_auto_start(send, TRUE); ++ if (!dbus_message_set_destination(send, "org.freedesktop.ConsoleKit")) ++ goto err; ++ ++ reply = dbus_connection_send_with_reply_and_block(ctxt->conn, send, 50000, ctxt->error); ++ dbus_message_unref(send); ++ ++ if (dbus_error_is_set(ctxt->error)) { ++ logerr(MODPREFIX "udisks sessions %s, can not connect system dbus: %s", ++ ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++ if (!reply) ++ goto err; ++ if (dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN) ++ goto unref; ++ ++ /* ++ * As reply we assume an array of strings here, ++ * each of them a seat path ++ */ ++ dbus_message_iter_init(reply, &iter); ++ type = dbus_message_iter_get_arg_type(&iter); ++ if (type != DBUS_TYPE_ARRAY) ++ goto unref; ++ ++ dbus_message_iter_recurse (&iter, &isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ if (type == DBUS_TYPE_BYTE) ++ goto unref; ++ ++ while (type == DBUS_TYPE_OBJECT_PATH) { ++ char *path; ++ ++ dbus_message_iter_get_basic(&isub, &path); ++ if (add_session(&ctxt->sessions, path) == (session_t*)0) ++ goto unref; ++ ++ dbus_message_iter_next (&isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ } ++ ret = NSS_STATUS_SUCCESS; ++unref: ++ dbus_message_unref(reply); ++err: ++ if (ret != NSS_STATUS_SUCCESS) ++ logerr(MODPREFIX "%s faild", __FUNCTION__); ++ return ret; ++} ++ ++static int read_current_seats(struct lookup_context *ctxt) ++{ ++ DBusMessage *reply, *send; ++ DBusMessageIter iter, isub; ++ int type, ret = NSS_STATUS_UNAVAIL; ++ ++ send = dbus_message_new_method_call("org.freedesktop.ConsoleKit", ++ "/org/freedesktop/ConsoleKit/Manager", ++ "org.freedesktop.ConsoleKit.Manager", ++ "GetSeats"); ++ if (!send) ++ goto err; ++ dbus_message_set_auto_start(send, TRUE); ++ if (!dbus_message_set_destination(send, "org.freedesktop.ConsoleKit")) ++ goto err; ++ ++ reply = dbus_connection_send_with_reply_and_block(ctxt->conn, send, 50000, ctxt->error); ++ dbus_message_unref(send); ++ ++ if (dbus_error_is_set(ctxt->error)) { ++ logerr(MODPREFIX "udisks seats %s, can not connect system dbus: %s", ++ ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++ if (!reply) ++ goto err; ++ if (dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN) ++ goto unref; ++ ++ /* ++ * As reply we assume an array of strings here, ++ * each of them a seat path ++ */ ++ dbus_message_iter_init(reply, &iter); ++ type = dbus_message_iter_get_arg_type(&iter); ++ if (type != DBUS_TYPE_ARRAY) ++ goto unref; ++ ++ dbus_message_iter_recurse (&iter, &isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ if (type == DBUS_TYPE_BYTE) ++ goto unref; ++ ++ while (type == DBUS_TYPE_OBJECT_PATH) { ++ char *seat; ++ ++ dbus_message_iter_get_basic(&isub, &seat); ++ if (read_current_sessions(ctxt, seat) != NSS_STATUS_SUCCESS) ++ goto unref; ++ ++ dbus_message_iter_next (&isub); ++ type = dbus_message_iter_get_arg_type(&isub); ++ } ++ ret = NSS_STATUS_SUCCESS; ++unref: ++ dbus_message_unref(reply); ++err: ++ if (ret != NSS_STATUS_SUCCESS) ++ logerr(MODPREFIX "%s faild", __FUNCTION__); ++ return ret; ++} ++ ++static void *udisks_dispatcher(void *context) ++{ ++ struct lookup_context *ctxt = (struct lookup_context *)context; ++ ++ lock(ctxt); ++ ctxt->active = 1; ++ ctxt->running = 1; ++ unlock(ctxt); ++ while (dbus_connection_read_write_dispatch(ctxt->conn, -1)) { ++ if (!ctxt->active) ++ break; ++ } ++ lock(ctxt); ++ ctxt->running = 0; ++ unlock(ctxt); ++ return NULL; ++} ++ ++static int enable_udisks_watchdog(struct lookup_context *ctxt) ++{ ++ int policy = SCHED_RR, ret; ++ struct sched_param param; ++ char match[128] = "eavesdrop='true',type='signal',sender='org.freedesktop.%s',interface='org.freedesktop.%s'"; ++ char *restrict mptr; ++ int offset; ++ ++ if (ctxt->monitor) ++ goto dog; ++ offset = 0; ++ckretry: ++ ret = asprintf((char**)&mptr, &match[offset], "ConsoleKit", "ConsoleKit.Seat"); ++ if (ret < 0) { ++ char buf[MAX_ERR_BUF]; ++ const char *const estr = strerror_r(errno, buf, sizeof(buf)); ++ logerr(MODPREFIX "memory allocation: %s", estr); ++ goto err; ++ } ++ dbus_bus_add_match(ctxt->conn, mptr, ctxt->error); ++ free(mptr); ++ if (dbus_error_is_set(ctxt->error)) { ++ if (!offset && strcmp(ctxt->error->name, DBUS_ERROR_MATCH_RULE_INVALID) == 0) { ++ offset = strlen("eavesdrop='true',"); ++ dbus_error_free(ctxt->error); ++ goto ckretry; ++ } ++ logerr(MODPREFIX "udisks sessions %s, can not listen system ConsoleKit: %s", ++ ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++ offset = 0; ++uretry: ++ ret = asprintf((char**)&mptr, &match[offset], "UDisks", "UDisks"); ++ if (ret < 0) { ++ char buf[MAX_ERR_BUF]; ++ const char *const estr = strerror_r(errno, buf, sizeof(buf)); ++ logerr(MODPREFIX "memory allocation: %s", estr); ++ goto err; ++ } ++ dbus_bus_add_match(ctxt->conn, mptr, ctxt->error); ++ free(mptr); ++ if (dbus_error_is_set(ctxt->error)) { ++ if (!offset && strcmp(ctxt->error->name, DBUS_ERROR_MATCH_RULE_INVALID) == 0) { ++ offset = strlen("eavesdrop='true',"); ++ dbus_error_free(ctxt->error); ++ goto uretry; ++ } ++ logerr(MODPREFIX "udisks map %s, can not listen system UDisks: %s", ++ ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++ if ((ctxt->monitor = dbus_connection_add_filter(ctxt->conn, dbusfilter, (void *)ctxt, NULL)) != TRUE) { ++ logerr(MODPREFIX "udisks %s, could not add device and session filters: %s", ctxt->mapname, ctxt->error->message); ++ dbus_error_free(ctxt->error); ++ goto err; ++ } ++dog: ++ if (ctxt->watchdog) ++ goto out; ++ ret = pthread_getschedparam(pthread_self(), &policy, ¶m); ++ if (pthread_create(&ctxt->watchdog, &th_attr_detached, &udisks_dispatcher, (void *)ctxt) != 0) { ++ ctxt->watchdog = (pthread_t)0; ++ goto err; ++ } ++ if (ret == 0) pthread_setschedparam(ctxt->watchdog, policy, ¶m); ++out: ++ return NSS_STATUS_SUCCESS; ++err: ++ return NSS_STATUS_UNAVAIL; ++} ++ ++int lookup_read_map(struct autofs_point *ap, struct map_source *source, time_t age, void *context) ++{ ++ struct lookup_context *ctxt = (struct lookup_context *)context; ++ struct mapent_cache *mc = source->mc; ++ int ret, cur_state; ++ list_t *ptr; ++ ++ ctxt->ap = ap; ++ ctxt->map = ap->entry->current; ++#if defined(DEBUG) && (DEBUG > 0) ++ ctxt->ap->logopt = LOGOPT_DEBUG; ++#endif ++ ++ /* ++ * If we don't need to create directories then there's no use ++ * reading the map. We always need to read the whole map for ++ * direct mounts in order to mount the triggers. ++ */ ++ ret = NSS_STATUS_SUCCESS; ++ if ((ap->flags & MOUNT_FLAG_GHOST) == 0 && ap->type != LKP_DIRECT) { ++ debug(ap->logopt, "map read not needed, so not done"); ++ goto out; ++ } ++ ++ if (sizeof(devproperpty)/sizeof(filter_t) != NullDict+1) { ++ logerr(MODPREFIX "size of hash array does not fit numbers of symbols"); ++ goto out; ++ } ++ ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cur_state); ++ ret = enable_udisks_watchdog(context); ++ if (ret != NSS_STATUS_SUCCESS) { ++ warn(LOGOPT_NONE, MODPREFIX "udisks map %s, could not start watchdog", ++ ctxt->mapname); ++ goto cancel; ++ } ++ ++ lock(ctxt); ++ if (list_empty(&ctxt->devices)) { ++ ret = read_current_map(ctxt); ++ if (ret != NSS_STATUS_SUCCESS) { ++ unlock(ctxt); ++ goto cancel; ++ } ++ list_for_each(ptr, &ctxt->devices) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ ret = read_device_properties(ctxt, this); ++ if (ret != NSS_STATUS_SUCCESS) { ++ unlock(ctxt); ++ goto cancel; ++ } ++ } ++ } ++ if (list_empty(&ctxt->sessions)) { ++ ret = read_current_seats(ctxt); ++ if (ret != NSS_STATUS_SUCCESS) { ++ unlock(ctxt); ++ goto cancel; ++ } ++ list_for_each(ptr, &ctxt->sessions) { ++ session_t *this = list_entry(ptr, session_t, handle); ++ ret = read_session_properties(ctxt, this); ++ if (ret != NSS_STATUS_SUCCESS) { ++ unlock(ctxt); ++ goto cancel; ++ } ++ } ++ } ++ list_for_each(ptr, &ctxt->devices) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ entry_t *entry = do_map_entry(ctxt, this); ++ char *key; ++ ++ if (entry == (entry_t*)0) ++ continue; ++ if (entry->key == (char*)0) ++ continue; ++ ++ key = sanitize_path(entry->key, entry->key_len, ap->type, ap->logopt); ++ if (key == (char*)0) ++ continue; ++ ++ entry->age = age; ++ ++ cache_writelock(mc); ++ cache_update(mc, source, key, entry->mapent, age); ++ cache_unlock(mc); ++ ++ free(key); ++ } ++ unlock(ctxt); ++ source->age = age; ++cancel: ++ pthread_setcancelstate(cur_state, NULL); ++out: ++ return ret; ++} ++ ++static int lookup_one(struct autofs_point *ap, ++ struct map_source *source, ++ char *key, int key_len, ++ struct lookup_context *ctxt) ++{ ++ struct mapent_cache *mc = source->mc; ++ time_t age = time(NULL); ++ int ret, cur_state; ++ entry_t *entry; ++ list_t *ptr; ++ ++ ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cur_state); ++ ++ lock(ctxt); ++ entry = (entry_t*)0; ++ list_for_each(ptr, &ctxt->devices) { ++ device_t *this = list_entry(ptr, device_t, handle); ++ entry = this->entry; ++ ++ if (entry == (entry_t*)0) ++ continue; ++ if (entry->key == (char*)0) ++ continue; ++ ++ if (entry->key_len != key_len) ++ continue; ++ ++ if (strcmp(entry->key, key) == 0) ++ break; ++ entry = (entry_t*)0; ++ } ++ unlock(ctxt); ++ ++ ret = CHE_MISSING; ++ if (entry == (entry_t*)0) ++ goto out; ++ ++ entry->age = age; ++ ++ cache_writelock(mc); ++ ret = cache_update(mc, source, key, entry->mapent, age); ++ cache_unlock(mc); ++out: ++ pthread_setcancelstate(cur_state, NULL); ++ return ret; ++} ++ ++static int check_map_indirect(struct autofs_point *ap, ++ struct map_source *source, ++ char *key, int key_len, ++ struct lookup_context *ctxt) ++{ ++ struct mapent_cache *mc = source->mc; ++ struct mapent *me; ++ time_t now = time(NULL); ++ time_t t_last_read; ++ int ret, cur_state; ++ ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cur_state); ++ ret = lookup_one(ap, source, key, key_len, ctxt); ++ if (ret == CHE_FAIL) { ++ pthread_setcancelstate(cur_state, NULL); ++ return NSS_STATUS_NOTFOUND; ++ } ++ if (ret == CHE_UNAVAIL) { ++ /* ++ * If the server is down and the entry exists in the cache ++ * and belongs to this map return success and use the entry. ++ */ ++ struct mapent *exists = cache_lookup(mc, key); ++ if (exists && exists->source == source) { ++ pthread_setcancelstate(cur_state, NULL); ++ return NSS_STATUS_SUCCESS; ++ } ++ ++ warn(ap->logopt, ++ MODPREFIX "lookup for %s failed: connection failed", key); ++ ++ pthread_setcancelstate(cur_state, NULL); ++ return NSS_STATUS_UNAVAIL; ++ } ++ if (ret == CHE_COMPLETED) { ++ pthread_setcancelstate(cur_state, NULL); ++ return NSS_STATUS_COMPLETED; ++ } ++ pthread_setcancelstate(cur_state, NULL); ++ ++ /* ++ * Check for map change and update as needed for ++ * following cache lookup. ++ */ ++ cache_readlock(mc); ++ t_last_read = ap->exp_runfreq + 1; ++ me = cache_lookup_first(mc); ++ while (me) { ++ if (me->source == source) { ++ t_last_read = now - me->age; ++ break; ++ } ++ me = cache_lookup_next(mc, me); ++ } ++ cache_unlock(mc); ++ ++ if (t_last_read > ap->exp_runfreq && ret & CHE_UPDATED) ++ source->stale = 1; ++ ++ cache_readlock(mc); ++ me = cache_lookup_distinct(mc, "*"); ++ if (ret == CHE_MISSING && (!me || me->source != source)) { ++ cache_unlock(mc); ++ return NSS_STATUS_NOTFOUND; ++ } ++ cache_unlock(mc); ++ ++ return NSS_STATUS_SUCCESS; ++} ++ ++static int check_permsission(struct autofs_point *ap, struct lookup_context *ctxt) ++{ ++ struct thread_stdenv_vars *tsv; ++ int state, ret; ++ ++ ret = NSS_STATUS_UNAVAIL; ++ if (list_empty(&ctxt->sessions)) ++ goto out; ++ ++ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &state); ++ ++ tsv = pthread_getspecific(key_thread_stdenv_vars); ++ if (tsv) { ++ list_t *ptr; ++ list_for_each(ptr, &ctxt->sessions) { ++ session_t *session = list_entry(ptr, session_t, handle); ++ option_t opt = get_session(session, unix_user); ++ if (opt.error) ++ break; ++ if (opt.uint32 == (unsigned int)tsv->uid) { ++ option_t opt = get_session(session, is_local); ++ if (opt.error) ++ break; ++ if (opt.boolean) { ++ ret = NSS_STATUS_SUCCESS; ++ break; ++ } ++#if defined(DEBUG) && (DEBUG > 0) ++ opt = get_session(session, x11_display); ++ if (opt.error) ++ break; ++ if (*opt.string == ':') ++ ret = NSS_STATUS_SUCCESS; ++#endif ++ break; ++ } ++ } ++ } ++ ++ pthread_setcancelstate(state, NULL); ++out: ++ debug(ap->logopt, MODPREFIX "mount not allowed"); ++ return ret; ++} ++ ++int lookup_mount(struct autofs_point *ap, struct map_source *source, const char *name, int name_len, void *context) ++{ ++ struct lookup_context *ctxt = (struct lookup_context *) context; ++ struct mapent_cache *mc = source->mc; ++ struct mapent *me; ++ char key[KEY_MAX_LEN + 1]; ++ int key_len; ++ char *mapent = NULL; ++ char mapent_buf[MAPENT_MAX_LEN + 1]; ++ int status = 0; ++ int ret = 1; ++ ++ debug(ap->logopt, MODPREFIX "looking up %s", name); ++ ++ status = check_permsission(ap, ctxt); ++ if (status != NSS_STATUS_SUCCESS) ++ return status; ++ ++ key_len = snprintf(key, KEY_MAX_LEN + 1, "%s", name); ++ if (key_len < 0 || key_len > KEY_MAX_LEN) ++ return NSS_STATUS_NOTFOUND; ++ ++ if (sizeof(sessproperty)/sizeof(filter_t) != NullCk+1) { ++ logerr(MODPREFIX "size of hash array does not fit numbers of symbols"); ++ return NSS_STATUS_NOTFOUND; ++ } ++ ++ /* Check if we recorded a mount fail for this key anywhere */ ++ me = lookup_source_mapent(ap, key, LKP_DISTINCT); ++ if (me) { ++ if (me->status >= time(NULL)) { ++ cache_unlock(me->mc); ++ return NSS_STATUS_NOTFOUND; ++ } else { ++ struct mapent_cache *smc = me->mc; ++ struct mapent *sme; ++ ++ if (me->mapent) ++ cache_unlock(smc); ++ else { ++ cache_unlock(smc); ++ cache_writelock(smc); ++ sme = cache_lookup_distinct(smc, key); ++ /* Negative timeout expired for non-existent entry. */ ++ if (sme && !sme->mapent) ++ cache_delete(smc, key); ++ cache_unlock(smc); ++ } ++ } ++ } ++ ++ /* ++ * We can't check the direct mount map as if it's not in ++ * the map cache already we never get a mount lookup, so ++ * we never know about it. ++ */ ++ if (ap->type == LKP_INDIRECT && *key != '/') { ++ char *lkp_key; ++ ++ cache_readlock(mc); ++ me = cache_lookup_distinct(mc, key); ++ lkp_key = strdup(key); ++ cache_unlock(mc); ++ ++ if (!lkp_key) ++ return NSS_STATUS_UNKNOWN; ++ ++ status = check_map_indirect(ap, source, lkp_key, strlen(lkp_key), ctxt); ++ free(lkp_key); ++ if (status) { ++ if (status == NSS_STATUS_COMPLETED) ++ return NSS_STATUS_SUCCESS; ++ return NSS_STATUS_NOTFOUND; ++ } ++ } ++ ++ cache_readlock(mc); ++ me = cache_lookup(mc, key); ++ /* Stale mapent => check for entry in alternate source or wildcard */ ++ if (me && !me->mapent) { ++ while ((me = cache_lookup_key_next(me))) ++ if (me->source == source) ++ break; ++ if (!me) ++ me = cache_lookup_distinct(mc, "*"); ++ } ++ if (me && me->mapent && (me->source == source || *me->key == '/')) { ++ pthread_cleanup_push(cache_lock_cleanup, mc); ++ strcpy(mapent_buf, me->mapent); ++ mapent = &mapent_buf[0]; ++ pthread_cleanup_pop(0); ++ } ++ cache_unlock(mc); ++ ++ if (!me) ++ return NSS_STATUS_NOTFOUND; ++ ++ if (!mapent) ++ return NSS_STATUS_TRYAGAIN; ++ ++ debug(ap->logopt, MODPREFIX "%s -> %s", key, mapent); ++ ret = ctxt->parse->parse_mount(ap, source, key, key_len, ++ mapent, ctxt->parse->context); ++ if (ret) { ++ time_t now = time(NULL); ++ int rv = CHE_OK; ++ ++ /* Record the the mount fail in the cache */ ++ cache_writelock(mc); ++ me = cache_lookup_distinct(mc, key); ++ if (!me) ++ rv = cache_update(mc, source, key, NULL, now); ++ if (rv != CHE_FAIL) { ++ me = cache_lookup_distinct(mc, key); ++ me->status = now + ap->negative_timeout; ++ } ++ cache_unlock(mc); ++ return NSS_STATUS_TRYAGAIN; ++ } ++ ++ return NSS_STATUS_SUCCESS; ++} ++ ++int lookup_done(void *context) ++{ ++ struct lookup_context *ctxt = (struct lookup_context *)context; ++ int ret = NSS_STATUS_UNAVAIL; ++ if (!ctxt) ++ goto out; ++ ret = close_parse(ctxt->parse); ++ free_context(ctxt); ++out: ++ return ret; ++} +Index: autofs-5.1.9/modules/parse_sun.c +=================================================================== +--- autofs-5.1.9.orig/modules/parse_sun.c ++++ autofs-5.1.9/modules/parse_sun.c +@@ -965,6 +965,7 @@ static int validate_location(unsigned in + ((esc = strchr(ptr, '\\')) && *(esc + 1) == ':') || + !strncmp(ptr, "file:", 5) || !strncmp(ptr, "yp:", 3) || + !strncmp(ptr, "nis:", 4) || !strncmp(ptr, "nisplus:", 8) || ++ !strncmp(ptr, "udisks:", 7) || !strncmp(ptr, "udisks2:", 8) || + !strncmp(ptr, "ldap:", 5) || !strncmp(ptr, "ldaps:", 6) || + !strncmp(ptr, "sss:", 4) || !strncmp(ptr, "dir:", 4)) + return 1; +Index: autofs-5.1.9/samples/autofs.udisks +=================================================================== +--- /dev/null ++++ autofs-5.1.9/samples/autofs.udisks +@@ -0,0 +1,28 @@ ++ ++ ++ ++ ++ uid=$UID,gid=$GID,nosuid,nodev ++ ++ fmask=0132,dmask=0022,showexec ++ umask=0022 ++ ro ++ check=none,noatime,nodiratime,data=journal ++ check=none,noatime,nodiratime,data=journal ++ check=none,noatime ++ ro,nosuid,nodev,noexec ++ ++ diff --git a/autofs-5.1.1-debuginfo-fix.patch b/autofs-5.1.1-debuginfo-fix.patch new file mode 100644 index 0000000..8adbabf --- /dev/null +++ b/autofs-5.1.1-debuginfo-fix.patch @@ -0,0 +1,17 @@ +--- + Makefile.rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: autofs-5.1.8/Makefile.rules +=================================================================== +--- autofs-5.1.8.orig/Makefile.rules ++++ autofs-5.1.8/Makefile.rules +@@ -32,7 +32,7 @@ CFLAGS ?= -g -Wall -DDEBUG + LDFLAGS ?= -g + else + CFLAGS ?= -O2 -Wall +-LDFLAGS ?= -s ++LDFLAGS ?= -g + endif + + ifdef DONTSTRIP diff --git a/autofs-5.1.1-suse-auto_master_default.patch b/autofs-5.1.1-suse-auto_master_default.patch new file mode 100644 index 0000000..5a1c7c2 --- /dev/null +++ b/autofs-5.1.1-suse-auto_master_default.patch @@ -0,0 +1,31 @@ +--- + samples/auto.master | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/samples/auto.master ++++ b/samples/auto.master +@@ -4,13 +4,13 @@ + # mount-point [map-type[,format]:]map [options] + # For details of the format look at auto.master(5). + # +-/misc /etc/auto.misc ++#/misc /etc/auto.misc + # + # NOTE: mounts done from a hosts map will be mounted with the + # "nosuid" and "nodev" options unless the "suid" and "dev" + # options are explicitly given. + # +-/net -hosts ++#/net -hosts + # + # Include /etc/auto.master.d/*.autofs + # To add an extra map using this mechanism you will need to add +@@ -19,7 +19,7 @@ + # and a separate mount map (e.g. /etc/auto.extra or an auto.extra NIS map) + # that is referred to by the extra.autofs file. + # +-+dir:/etc/auto.master.d ++#+dir:/etc/auto.master.d + # + # If you have fedfs set up and the related binaries, either + # built as part of autofs or installed from another package, diff --git a/autofs-5.1.9-Fix-incompatible-function-pointer-types.patch b/autofs-5.1.9-Fix-incompatible-function-pointer-types.patch new file mode 100644 index 0000000..209fb8d --- /dev/null +++ b/autofs-5.1.9-Fix-incompatible-function-pointer-types.patch @@ -0,0 +1,60 @@ +From b7ff971bb8aa3fc609bb531ddc4c2ce56226383f Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Mon, 18 Dec 2023 13:48:18 +0100 +Subject: [PATCH] autofs-5.1.9 - Fix incompatible function pointer types in + cyrus-sasl module + +Add casts to SASL callbacks to avoid incompatible-pointer-types +errors. Avoids a build failure with stricter compilers. + +Signed-off-by: Florian Weimer +Signed-off-by: Ian Kent +Reviewed-by: David Disseldorp +--- + CHANGELOG | 2 ++ + modules/cyrus-sasl.c | 14 +++++++------- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 3e47daa..fd9d861 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -1,4 +1,6 @@ + ++- Fix incompatible function pointer types in cyrus-sasl module. ++ + 02/11/2023 autofs-5.1.9 + - fix kernel mount status notification. + - fix fedfs build flags. +diff --git a/modules/cyrus-sasl.c b/modules/cyrus-sasl.c +index e742eaf..78b7794 100644 +--- a/modules/cyrus-sasl.c ++++ b/modules/cyrus-sasl.c +@@ -109,17 +109,17 @@ static int getpass_func(sasl_conn_t *, void *, int, sasl_secret_t **); + static int getuser_func(void *, int, const char **, unsigned *); + + static sasl_callback_t callbacks[] = { +- { SASL_CB_USER, &getuser_func, NULL }, +- { SASL_CB_AUTHNAME, &getuser_func, NULL }, +- { SASL_CB_PASS, &getpass_func, NULL }, ++ { SASL_CB_USER, (int(*)(void)) &getuser_func, NULL }, ++ { SASL_CB_AUTHNAME, (int(*)(void)) &getuser_func, NULL }, ++ { SASL_CB_PASS, (int(*)(void)) &getpass_func, NULL }, + { SASL_CB_LIST_END, NULL, NULL }, + }; + + static sasl_callback_t debug_callbacks[] = { +- { SASL_CB_LOG, &sasl_log_func, NULL }, +- { SASL_CB_USER, &getuser_func, NULL }, +- { SASL_CB_AUTHNAME, &getuser_func, NULL }, +- { SASL_CB_PASS, &getpass_func, NULL }, ++ { SASL_CB_LOG, (int(*)(void)) &sasl_log_func, NULL }, ++ { SASL_CB_USER, (int(*)(void)) &getuser_func, NULL }, ++ { SASL_CB_AUTHNAME, (int(*)(void)) &getuser_func, NULL }, ++ { SASL_CB_PASS, (int(*)(void)) &getpass_func, NULL }, + { SASL_CB_LIST_END, NULL, NULL }, + }; + +-- +2.35.3 + diff --git a/autofs-5.1.9-fix-ldap_parse_page_control-check.patch b/autofs-5.1.9-fix-ldap_parse_page_control-check.patch new file mode 100644 index 0000000..77e45de --- /dev/null +++ b/autofs-5.1.9-fix-ldap_parse_page_control-check.patch @@ -0,0 +1,44 @@ +From a76cbadd48237abdce0de9a1e3576b02e6111bf8 Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Wed, 20 Mar 2024 01:48:55 +0100 +Subject: [PATCH] autofs-5.1.9 - fix ldap_parse_page_control() check + +The final @cookie parameter should be a struct berval ** type. The +check currently fails when -Werror=incompatible-pointer-types is set: + +conftest.c: In function 'main': +conftest.c:54:47: error: passing argument 4 of 'ldap_parse_page_control' +from incompatible pointer type [-Werror=incompatible-pointer-types] + 54 | ret = ldap_parse_page_control(ld,clp,ct,c); + | ^ + | | + | struct berval * +In file included from /usr/include/lber_types.h:24, + from /usr/include/lber.h:29, + from /usr/include/ldap.h:30, + from conftest.c:45: +/usr/include/ldap.h:2155:25: note: expected 'struct berval **' but +argument is of type 'struct berval *' + 2155 | ldap_parse_page_control LDAP_P(( + +Signed-off-by: David Disseldorp +--- + aclocal.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/aclocal.m4 b/aclocal.m4 +index 1046d72..fa18eb1 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -424,7 +424,7 @@ AC_LINK_IFELSE( + #include ]], + [[ LDAP *ld; + ber_int_t *ct; +- struct berval *c; ++ struct berval **c; + int ret; + LDAPControl **clp; + ret = ldap_parse_page_control(ld,clp,ct,c); ]])], +-- +2.35.3 + diff --git a/autofs-5.1.9.tar.sign b/autofs-5.1.9.tar.sign new file mode 100644 index 0000000..40218f9 --- /dev/null +++ b/autofs-5.1.9.tar.sign @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEzQpuPLtnaIALBzao52dzgPVP2KkFAmVJtJ8ACgkQ52dzgPVP +2Kn7QA//bLh6hZWgEGw0gjXC1gB7yWrqTN7DxTwn5283lLVDitCFHaOGp1y9+lXZ +VGHsat15OmvxTu79wvwSqwpL5g7jRfyjcF3U/F3yclWTxG148mNaMZxgluJiSpPe +Oqb9dqYTjCRwPJrjqxJESDxIHVqH0ychXVw557XwOM7Axz1Wtwop8tI6nChU7n1+ +cFVfrDv0ekeyH1uPGhM8LWkrus9zSh8wsRWcdXlsP7nBSq/trrACmhksk0RCBXaV +eboC1QHAcT3/RFQt4O61yvmCiEUn6d2u6cuzh3GnYfJceSGzB2ikpN6FDjxS5AH1 +OA/H4D9dZqT6lgnYspLAhzHOVFKPJZ7lScRSuROQnRHPCG5SEXvRmkDIX+fRGf8y +MFFWKV25VvTFtqqKlNVNeBbbGsxWXDwvaSmXKBFjSLzB/UWRUS6tU/A6iXDkorWp +Kz6CRPuX7H5INQJPDxeqyhzy7N7zRA2ABAklQNSKIuGmIJLvVksAI035ne6ok3L5 +xfe7qHqeqtDe8tmiKawb8C3JEAmY5prjTxomJ818QQusX5454N0RDgpRscm1Kx8c +yhSepRA+x8oF/f6gTCqAGAOTiojqj+FsR5YnP56xQxCiFxk15krb9foyL3FMWq3G +8yvhlAuaFF+Vy3xaruZ9lu4aT0GrFJnZVB6cqepFWR4VKITGQjg= +=KGsN +-----END PGP SIGNATURE----- diff --git a/autofs-5.1.9.tar.xz b/autofs-5.1.9.tar.xz new file mode 100644 index 0000000..320bc19 --- /dev/null +++ b/autofs-5.1.9.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87e6af6a03794b9462ea519781e50e7d23b5f7c92cd59e1142c85d2493b3c24b +size 331872 diff --git a/autofs-nsswitch-usr-etc.patch b/autofs-nsswitch-usr-etc.patch new file mode 100644 index 0000000..b7d8514 --- /dev/null +++ b/autofs-nsswitch-usr-etc.patch @@ -0,0 +1,15 @@ +--- + lib/nss_parse.y | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/lib/nss_parse.y ++++ b/lib/nss_parse.y +@@ -168,6 +168,8 @@ + int status; + + nsswitch = open_fopen_r(NSSWITCH_FILE); ++ if (!nsswitch) ++ nsswitch = open_fopen_r("/usr" NSSWITCH_FILE); + if (!nsswitch) { + logerr("couldn't open %s", NSSWITCH_FILE); + return 1; diff --git a/autofs-suse-manpage-remove-initdir.patch b/autofs-suse-manpage-remove-initdir.patch new file mode 100644 index 0000000..bcea933 --- /dev/null +++ b/autofs-suse-manpage-remove-initdir.patch @@ -0,0 +1,38 @@ +References: bsc#1207881 - Obsolete and incorrect manual page details for autofs(8) + +Index: autofs-5.1.8/man/autofs.8.in +=================================================================== +--- autofs-5.1.8.orig/man/autofs.8.in ++++ autofs-5.1.8/man/autofs.8.in +@@ -2,13 +2,6 @@ + .SH NAME + autofs \- Service control for the automounter + .SH SYNOPSIS +-If a SysV init script system is being used: +-.br +-.B @@initdir@@/autofs +-.I start|stop|restart|reload|status +-.P +-or if the systemd init system is being used: +-.br + .B systemctl + .I start|stop|restart|reload|status + .B autofs.service +@@ -37,8 +30,6 @@ by default to find mount points on the s + will mount and start a thread, with the appropriate parameters, to + manage the mount point. + .P +-.B @@initdir@@/autofs reload +-or + .B systemctl autofs.service reload + will check the current auto.master map against the current automount managed + mounts. It will terminate those daemons or threads (depending on +@@ -61,8 +52,6 @@ mounts cannot be updated due to potentia + case the map entry offsets will not be updated until after the map + entry has expired. + .P +-.B @@initdir@@/autofs status +-or + .B systemctl status autofs.service + will display the status of, + .BR automount (8), diff --git a/autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch b/autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch new file mode 100644 index 0000000..d3fdcaa --- /dev/null +++ b/autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch @@ -0,0 +1,74 @@ +From: Jeff Mahoney +Subject: autofs: use libldap_r instead of libldap for thread safety +References: bsc#955477 + +In order for OpenSSL to be threadsafe, CRYPTO_set_locking_callback needs +to be used to set the locking function. That's only done with libldap_r, +not plain libldap. + +>From the openldap source: + +** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE +** can be used to determine if -lldap_r is available at compile +** time. You must define LDAP_THREAD_SAFE if and only if you +** link with -lldap_r. +** +** If you fail to define LDAP_THREAD_SAFE when linking with +** -lldap_r or define LDAP_THREAD_SAFE when linking with -lldap, +** provided header definations and declarations may be incorrect. + +The autofs Makefile defines LDAP_THREAD_SAFE and then links with -lldap. + +This patch links with -lldap_r instead and fixes observed crashes. + +Signed-off-by: Jeff Mahoney +--- + aclocal.m4 | 8 ++++---- + configure.in | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +Index: autofs-5.1.9/aclocal.m4 +=================================================================== +--- autofs-5.1.9.orig/aclocal.m4 ++++ autofs-5.1.9/aclocal.m4 +@@ -374,11 +374,11 @@ dnl + dnl Check for function ldap_create_page_control + dnl -------------------------------------------------------------------------- + AC_DEFUN([AF_CHECK_FUNC_LDAP_CREATE_PAGE_CONTROL], +-[AC_MSG_CHECKING(for ldap_create_page_control in -lldap) ++[AC_MSG_CHECKING(for ldap_create_page_control in -lldap_r) + + # save current libs + af_check_ldap_create_page_control_save_libs="$LIBS" +-LIBS="$LIBS -lldap" ++LIBS="$LIBS -lldap_r" + af_check_ldap_create_page_control_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS -Werror=implicit-function-declaration" + +@@ -410,11 +410,11 @@ dnl + dnl Check for function ldap_parse_page_control + dnl -------------------------------------------------------------------------- + AC_DEFUN([AF_CHECK_FUNC_LDAP_PARSE_PAGE_CONTROL], +-[AC_MSG_CHECKING(for ldap_parse_page_control in -lldap) ++[AC_MSG_CHECKING(for ldap_parse_page_control in -lldap_r) + + # save current libs + af_check_ldap_parse_page_control_save_libs="$LIBS" +-LIBS="$LIBS -lldap" ++LIBS="$LIBS -lldap_r" + af_check_ldap_parse_page_control_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS -Werror=implicit-function-declaration" + +Index: autofs-5.1.9/configure.ac +=================================================================== +--- autofs-5.1.9.orig/configure.ac ++++ autofs-5.1.9/configure.ac +@@ -299,7 +299,7 @@ AC_ARG_WITH(openldap, + if test -z "$HAVE_LDAP" -o "$HAVE_LDAP" != "0"; then + HAVE_LDAP=0 + LDAP_FLAGS="$LDAP_FLAGS -DLDAP_DEPRECATED=1" +- AC_CHECK_LIB(ldap, ldap_initialize, HAVE_LDAP=1 LIBLDAP="$LIBLDAP -lldap -llber -lresolv", , ++ AC_CHECK_LIB(ldap_r, ldap_initialize, HAVE_LDAP=1 LIBLDAP="$LIBLDAP -lldap_r -llber -lresolv", , + -llber -lresolv $LIBS) + if test "$HAVE_LDAP" = "1"; then + AC_DEFINE(WITH_LDAP,1, diff --git a/autofs.changes b/autofs.changes new file mode 100644 index 0000000..9e940c2 --- /dev/null +++ b/autofs.changes @@ -0,0 +1,2800 @@ +------------------------------------------------------------------- +Tue Jan 14 18:14:14 UTC 2025 - Goldwyn Rodrigues + +- Remove libnsl-devel dependency to remove NSL support + +------------------------------------------------------------------- +Tue Nov 5 19:46:13 UTC 2024 - Thorsten Kukuk + +- 5.1.8 removed rpcgen dependency, remove it from spec file, too + +------------------------------------------------------------------- +Mon Jun 3 02:21:09 UTC 2024 - David Disseldorp + +- Fix xmlStructuredErrorFunc callback parameter type (bsc#1221682) + * Refresh autofs-5.1.1-dbus-udisks-monitor.patch +- Use upstream sasl_callback_t patch + * Remove autofs-5.1.9-cast-sasl_callback_t-function-pointers.patch + * Add autofs-5.1.9-Fix-incompatible-function-pointer-types.patch + +------------------------------------------------------------------- +Wed Mar 20 01:27:16 UTC 2024 - David Disseldorp + +- Fix -Werror=incompatible-pointer-types issues (bsc#1221682) + * Add autofs-5.1.9-fix-ldap_parse_page_control-check.patch + * Add autofs-5.1.9-cast-sasl_callback_t-function-pointers.patch + +------------------------------------------------------------------- +Tue Feb 20 10:27:04 UTC 2024 - Dominique Leuenberger + +- Use %patch -P N instead of deprecated %patchN. + +------------------------------------------------------------------- +Sat Feb 10 13:47:34 UTC 2024 - David Disseldorp + +- update to 5.1.9 (bsc#1219508) + * fix kernel mount status notification. + * fix fedfs build flags. + * fix set open file limit. + * improve descriptor open error reporting. + * fix root offset error handling. + * fix fix root offset error handling. + * fix nonstrict fail handling of last offset mount. + * dont fail on duplicate offset entry tree add. + * fix loop under run in cache_get_offset_parent(). + * bailout on rpc systemerror. + * fix nfsv4 only mounts should not use rpcbind. + * simplify cache_add() a little. + * fix use after free in tree_mapent_delete_offset_tree(). + * fix memory leak in xdr_exports(). + * avoid calling pthread_getspecific() with NULL key_thread_attempt_id. + * fix sysconf(3) return handling. + * remove nonstrict parameter from tree_mapent_umount_offsets(). + * fix handling of incorrect return from umount_ent(). + * dont use initgroups() at spawn. + * fix bashism in configure. + * musl: fix missing include in hash.h. + * musl: define fallback dummy NSS config path + * musl: avoid internal stat.h definitions. + * musl: add missing include to hash.h for _WORDSIZE. + * musl: add missing include to log.h for pid_t. + * musl: define _SWORD_TYPE. + * add autofs_strerror_r() helper for musl. + * update configure. + * handle innetgr() not present in musl. + * fix missing unlock in sasl_do_kinit_ext_cc(). + * fix a couple of null cache locking problems. + * restore gcc flags after autoconf Kerberos 5 check. + * prepare for OpenLDAP SASL binding. + * let OpenLDAP handle SASL binding. + * configure: LDAP function checks ignore implicit declarations. + * improve debug logging of LDAP binds. + * improve debug logging of SASL binds. + * internal SASL logging only in debug log mode. + * more comprehensive verbose logging for LDAP maps. + * fix invalid tsv access. + * support SCRAM for SASL binding. + * ldap_sasl_interactive_bind() needs credentials for auto-detection. + * fix autofs regression due to positive_timeout. + * fix parse module instance mutex naming. + * serialise lookup module open and reinit. + * coverity fix for invalid access. + * fix hosts map deadlock on restart. + * fix deadlock with hosts map reload. + * fix memory leak in update_hosts_mounts(). + * fix minus only option handling in concat_options(). + * fix incorrect path for is_mounted() in try_remount(). + * fix additional tsv invalid access. + * fix use_ignore_mount_option description. + * include addtional log info for mounts. + * fail on empty replicated host name. + * improve handling of ENOENT in sss setautomntent(). + * don't immediately call function when waiting. + * define LDAP_DEPRECATED during LDAP configure check. + * fix return status of mount_autofs(). + * don't close lookup at umount. + * fix deadlock in lookups. + * dont delay expire. + * make amd mapent search function name clear. + * rename statemachine() to signal_handler(). + * make signal handling consistent. + * eliminate last remaining state_pipe usage. + * add function master_find_mapent_by_devid(). + * use device id to locate autofs_point when setting log priotity. + * add command pipe handling functions. + * switch to application wide command pipe. + * get rid of unused field submnt_count. + * fix mount tree startup reconnect. + * fix unterminated read in handle_cmd_pipe_fifo_message(). + * fix memory leak in sasl_do_kinit() + * fix fix mount tree startup reconnect. + * fix amd selector function matching. + * get rid entry thid field. + * continue expire immediately after submount check. + * eliminate realpath from mount of submount. + * eliminate root param from autofs mount and umount. + * remove redundant fstat from do_mount_direct(). + * get rid of strlen call in handle_packet_missing_direct(). + * remove redundant stat call in lookup_ghost(). + * set mapent dev and ino before adding to index. + * change to use printf functions in amd parser. + * dont call umount_subtree_mounts() on parent at umount. + * dont take parent source lock at mount shutdown. + * fix possible use after free in handle_mounts_exit(). + * make submount cleanup the same as top level mounts. + * add soucre parameter to module functions. + * add ioctlfd open helper. + * make open files limit configurable. + * use correct reference for IN6 macro call. + * dont probe interface that cant send packet. + * fix some sss error return cases. + * fix incorrect matching of cached wildcard key. + * fix expire retry looping. + * allow -null map in indirect maps. + * fix multi-mount check. + * fix let OpenLDAP handle SASL binding. + * always recreate credential cache. + * fix ldap_parse_page_control() check. + * fix typo in create_cmd_pipe_fifo(). + * add null check in master_kill(). + * be more careful with cmd pipe at exit. + * rename configure.in to configure.ac. + * update autoconf macros. + * update autoconf release. + * update autofs release. +- drop autofs-5-1-3-fix-unset-tsd-group-name-handling.patch, upstream + as ab8ca82 ("autofs-5.1.3 - fix unset tsd group name handling") +- drop autofs-Test-TCP-request-correctly-in-nfs_get_info.patch, + superseded by 80845bb ("autofs-5.1.8 - fix nfsv4 only mounts should + not use rpcbind") +- rebase autofs-5.1.1-dbus-udisks-monitor.patch atop 37fda2c + ("autofs-5.1.8 - add soucre parameter to module functions") + +------------------------------------------------------------------- +Thu Jan 11 01:32:34 UTC 2024 - Goldwyn Rodrigues + +- Removed following upstreamed patches because of upgrade: + * autofs-5.1.6-fix-quoted-string-length-calc-in-expand.patch + * 0001-use_hostname_for_mounts-shouldn-t-prevent-selection-.patch + * 0002-Fix-monotonic_elapsed.patch Deleted + * 0003-autofs-5.1.4-fix-fd-leak-in-rpc_do_create_client.patch Deleted + * 0004-autofs-5.1.3-add-port-parameter-to-rpc_ping.patch + * 0005-autofs-5.1.4-fix-incorrect-locking-in-sss-lookup.patch + * autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_aut.patch + * autofs-5-1-3-check-map-instances-for-staleness-on-map-update.patch + * autofs-5-1-3-fix-ordering-of-seteuid-setegid-in-do_spawn.patch + * autofs-5-1-3-fix-possible-map-instance-memory-leak.patch + * autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_aut.patch + * autofs-5.1.6-fix-quoted-string-length-calc-in-expand.patch + +------------------------------------------------------------------- +Sat Apr 22 22:11:37 UTC 2023 - David Disseldorp + +- autofs-5.1.3-revert-fix-argc-off-by-one-in-mount_aut.patch + Fix off-by-one error in recursive map handling. (bsc#1209653) + +------------------------------------------------------------------- +Mon Apr 17 15:21:33 UTC 2023 - Goldwyn Rodrigues + +- Add autofs-suse-manpage-remove-initdir.patch + Removes references of initdir from man pages (bsc#1207881) + +------------------------------------------------------------------- +Tue Sep 13 10:52:58 UTC 2022 - Callum Farmer + +- Move dbus-1 system.d file to /usr (bsc#1203362) + +------------------------------------------------------------------- +Thu May 12 15:12:50 UTC 2022 - Stefan Schubert + +- Moved -autofs- file from user specif directory + /etc/NetworkManager/dispatcher.d to vendor specific directory + /usr/lib/NetworkManager/dispatcher.d. So, users changes can + still be done in /etc and will not be overwritten by an update. + +------------------------------------------------------------------- +Mon May 9 15:06:32 UTC 2022 - Goldwyn Rodrigues + +- Use OPTIONS instead of AUTOFS_OPTIONS in /etc/sysconfig/autofs + (bsc#1199027) + +------------------------------------------------------------------- +Tue Mar 15 03:47:10 UTC 2022 - Neil Brown + +- autofs-5.1.6-fix-quoted-string-length-calc-in-expand.patch + Fix problem with quote handling + (bsc#1181715) + +------------------------------------------------------------------- +Mon Mar 14 03:58:48 UTC 2022 - Neil Brown + +- 0005-autofs-5.1.4-fix-incorrect-locking-in-sss-lookup.patch + Fix locking problem that causes deadlock when sss used. + (bsc#1196485) + +------------------------------------------------------------------- +Mon Feb 14 22:59:30 UTC 2022 - Neil Brown + +- 0004-autofs-5.1.3-add-port-parameter-to-rpc_ping.patch + Suppress portmap calls when port explicitly given + (bsc#1195697) + +------------------------------------------------------------------- +Thu Feb 10 00:36:26 UTC 2022 - Neil Brown + +- Add autofs-Test-TCP-request-correctly-in-nfs_get_info.patch + Fix bug when rpcbind not visible + (bsc#1195587 bsc#1195595) + +------------------------------------------------------------------- +Tue Jan 4 22:03:02 UTC 2022 - Dirk Müller + +- update to 5.1.8: + * add xdr_exports(). + * remove mount.x and rpcgen dependencies. + * dont use realloc in host exports list processing. + * use sprintf() when constructing hosts mapent. + * fix mnts_remove_amdmount() uses wrong list. + * Fix option for master read wait. + * eliminate cache_lookup_offset() usage. + * fix is mounted check on non existent path. + * simplify cache_get_parent(). + * set offset parent in update_offset_entry(). + * remove redundant variables from mount_autofs_offset(). + * remove unused parameter form do_mount_autofs_offset(). + * refactor umount_multi_triggers(). + * eliminate clean_stale_multi_triggers(). + * simplify mount_subtree() mount check. + * fix mnts_get_expire_list() expire list construction. + * fix inconsistent locking in umount_subtree_mounts(). + * fix return from umount_subtree_mounts() on offset list delete. + * pass mapent_cache to update_offset_entry(). + * fix inconsistent locking in parse_mount(). + * remove unused mount offset list lock functions. + * eliminate count_mounts() from expire_proc_indirect(). + * eliminate some strlen calls in offset handling. + * don't add offset mounts to mounted mounts table. + * reduce umount EBUSY check delay. + * cleanup cache_delete() a little. + * rename path to m_offset in update_offset_entry(). + * don't pass root to do_mount_autofs_offset(). + * rename tree implementation functions. + * add some multi-mount macros. + * remove unused functions cache_dump_multi() and cache_dump_cache(). + * add a len field to struct autofs_point. + * make tree implementation data independent. + * add mapent tree implementation. + * add tree_mapent_add_node(). + * add tree_mapent_delete_offsets(). + * add tree_mapent_traverse_subtree(). + * fix mount_fullpath(). + * add tree_mapent_cleanup_offsets(). + * add set_offset_tree_catatonic(). + * add mount and umount offsets functions. + * switch to use tree implementation for offsets. + * remove obsolete functions. + * remove redundant local var from sun_mount(). + * use mount_fullpath() in one spot in parse_mount(). + * pass root length to mount_fullpath(). + * remove unused function master_submount_list_empty(). + * move amd mounts removal into lib/mounts.c. + * check for offset with no mount location. + * remove mounts_mutex. + * remove unused variable from get_exports(). + * add missing free in handle_mounts(). + * remove redundant if check. + * fix possible memory leak in master_parse(). + * fix possible memory leak in mnts_add_amdmount(). + * fix double unlock in parse_mount(). + * add length check in umount_subtree_mounts(). + * fix flags check in umount_multi(). + * dont try umount after stat() ENOENT fail. + * remove redundant assignment in master_add_amd_mount_section_mounts(). + * fix dead code in mnts_add_mount(). + * fix arg not used in error print. + * fix missing lock release in mount_subtree(). + * fix double free in parse_mapent(). + * refactor lookup_prune_one_cache() a bit. + * cater for empty mounts list in mnts_get_expire_list(). + * add ext_mount_hash_mutex lock helpers. + * fix amd section mounts map reload. + * fix dandling symlink creation if nis support is not available. + * dont use AUTOFS_DEV_IOCTL_CLOSEMOUNT. + * fix lookup_prune_one_cache() refactoring change. + * fix amd hosts mount expire. + * fix offset entries order. + * use mapent tree root for tree_mapent_add_node(). + * eliminate redundant cache lookup in tree_mapent_add_node(). + * fix hosts map offset order. + * fix direct mount deadlock. + * add missing description of null map option. + * fix nonstrict offset mount fail handling. + * fix concat_options() error handling. + * eliminate some more alloca usage. + * use default stack size for threads. + * fix use of possibly NULL var in lookup_program.c:match_key(). + * fix incorrect print format specifiers in get_pkt(). + * add mapent path length check in handle_packet_expire_direct(). + * add copy length check in umount_autofs_indirect(). + * add some buffer length checks to master map parser. + * add buffer length check to rmdir_path(). + * eliminate buffer usage from handle_mounts_cleanup(). + * add buffer length checks to autofs mount_mount(). + * make NFS version check flags consistent. + * refactor get_nfs_info(). +- drop autofs-5.1.7-Fix-option-for-master_read_wait.patch, + autofs-5.1.7-use-default-stack-size-for-threads.patch: upstream + +------------------------------------------------------------------- +Wed Sep 8 18:15:58 UTC 2021 - Goldwyn Rodrigues + +- autofs-5.1.7-use-default-stack-size-for-threads.patch: Use default + stack size for threads (bsc#1189199) + +------------------------------------------------------------------- +Thu Apr 22 20:38:26 UTC 2021 - Goldwyn Rodrigues + +- Update pidfile path to /run from /var/run (bsc#1185155) + +------------------------------------------------------------------- +Thu Apr 22 14:43:15 UTC 2021 - Goldwyn Rodrigues + +- Upgrade to 5.1.7 + - make bind mounts propagation slave by default. + - update ldap READMEs and schema definitions. + - fix program map multi-mount lookup after mount fail. + - fix browse dir not re-created on symlink expire. + - fix a regression with map instance lookup. + - correct fsf address. + - samples: fix Makefile targets' directory dependencies + - remove intr hosts map mount option. + - fix trailing dollar sun entry expansion. + - initialize struct addrinfo for getaddrinfo() calls. + - fix quoted string length calc in expandsunent(). + - fix autofs mount options construction. + - mount_nfs.c fix local rdma share not mounting. + - configure.in: Remove unneeded second call to PKG_PROG_PKG_CONFIG. + - configure.in: Do not append parentheses to PKG_PROG_PKG_CONFIG. + - Use PKG_CHECK_MODULES to detect the libxml2 library. + - fix ldap sasl reconnect problem. + - samples/ldap.schema fix. + - fix configure force shutdown check. + - fix crash in sun_mount(). + - fix lookup_nss_read_master() nsswicth check return. + - fix typo in open_sss_lib(). + - fix sss_master_map_wait timing. + - add sss ECONREFUSED return handling. + - use mapname in sss context for setautomntent(). + - add support for new sss autofs proto version call. + - fix retries check in setautomntent_wait(). + - refactor sss setautomntent(). + - improve sss setautomntent() error handling. + - refactor sss getautomntent(). + - improve sss getautomntent() error handling. + - sss introduce calculate_retry_count() function. + - move readall into struct master. + - sss introduce a flag to indicate map being read. + - update sss timeout documentation. + - refactor sss getautomntbyname(). + - improve sss getautomntbyname() error handling. + - use a valid timeout in lookup_prune_one_cache(). + - dont prune offset map entries. + - simplify sss source stale check. + - include linux/nfs.h directly in rpc_subs.h. + - fix typo in daemon/automount.c. + - fix direct mount unlink_mount_tree() path. + - fix unlink mounts umount order. + - fix incorrect logical compare in unlink_mount_tree(). + - use bit flag for force unlink mounts. + - improve force unlink option description. + - remove command fifo on autofs mount fail. + - add force unlink mounts and exit option. + - cleanup stale logpri fifo pipes on unlink and exit. + - fix incorrect systemctl command syntax in autofs(8). + - update list.h. + - add hashtable implementation. + - change mountpoint to mp in struct ext_mount. + - make external mounts independent of amd_entry. + - make external mounts use simpler hashtable. + - add a hash index to mnt_list. + - use mnt_list for submounts. + - use mnt_list for amdmounts. + - make umount_autofs() static. + - remove force parameter from umount_all(). + - fix remount expire. + - fix stale offset directories disable mount. + - use struct mnt_list to track mounted mounts. + - use struct mnt_list mounted list for expire. + - remove unused function tree_get_mnt_list(). + - only add expre alarm for active mounts. + - move submount check into conditional_alarm_add(). + - move lib/master.c to daemon/master.c. + - use master_list_empty() for list empty check. + - add helper to construct mount point path. + - check defaults_read_config() return. + - move AUTOFS_LIB to end of build rule lines. + - make autofs.a a shared library. + - make lookup_file.c nss map read status return handling consistent. + - fix empty mounts list return from unlink_mount_tree(). +- Refreshed autofs-5.1.1-dbus-udisks-monitor.patch +- Replaced automount-fix-master-wait.patch with upstream patch + autofs-5.1.7-Fix-option-for-master_read_wait.patch + +------------------------------------------------------------------- +Fri Oct 23 14:28:02 UTC 2020 - Goldwyn Rodrigues + +- automount-fix-master-wait.patch: Fix options string for master wait + (bsc#1178006) + +------------------------------------------------------------------- +Mon Aug 31 18:12:49 UTC 2020 - Goldwyn Rodrigues + +- autofs-nsswitch-usr-etc.patch: Use /usr/etc/nsswitch.conf if + /etc/nsswitch.con is unavailable (bsc#1175238) + +------------------------------------------------------------------- +Tue Mar 3 17:08:03 UTC 2020 - Goldwyn Rodrigues + +- Upgrade to 5.1.6 + - support strictexpire mount option. + - fix hesiod string check in master_parse(). + - add NULL check for get_addr_string() return. + - use malloc(3) in spawn.c. + - add mount_verbose configuration option. + - optionally log mount requestor process info. + - log mount call arguments if mount_verbose is set. + - Fix NFS mount from IPv6 addresses. + - make expire remaining log level debug. + - allow period following macro in selector value. + - fix macro expansion in selector values. + - fix typing errors. + - Explain /etc/auto.master.d usage. + - plus map includes are only allowed in file sources. + - Update README. + - fix additional typing errors. + - update autofs(8) offset map entry update description. + - increase group buffer size geometrically. + - also use strictexpire for offsets. + - remove unused function has_fstab_option(). + - remove unused function reverse_mnt_list(). + - remove a couple of old debug messages. + - fix amd entry memory leak. + - fix unlink_mount_tree() not umounting mounts. + - use ignore option for offset mounts as well. + - add config option for "ignore" mount option + - use bit flags for autofs mount types in mnt_list. + - use mp instead of path in mnt_list entries. + - always use PROC_MOUNTS to make mount lists. + - add glibc getmntent_r(). + - use local getmntent_r in table_is_mounted(). + - refactor unlink_active_mounts() in direct.c. + - don't use tree_is_mounted() for mounted checks. + - use single unlink_umount_tree() for both direct and indirect mounts. + - move unlink_mount_tree() to lib/mounts.c. + - use local_getmntent_r() for unlink_mount_tree(). + - use local getmntent_r() in get_mnt_list(). + - use local getmntent_r() in tree_make_mnt_list(). + - fix missing initialization of autofs_point flags. + +------------------------------------------------------------------- +Fri Feb 28 15:03:30 UTC 2020 - Martin Wilck + +- NetworkManager-autofs: reload rather than restart autofs.service + * If complex network setups are being brought up, autofs.service + may be restarted too quickly, causing systemd to consider the + service failed. "reload" avoids that, and works just fine. + +------------------------------------------------------------------- +Mon Feb 24 08:51:25 UTC 2020 - Martin Wilck + +- Fix autofs restart when Networkmanager connection is brought up + * NetworkManager-autofs: /bin/systemctl has been removed in + systemd-244 + +------------------------------------------------------------------- +Wed Jun 19 11:18:12 UTC 2019 - Dominique Leuenberger + +- BuildRequire pkgconfig(libsystemd) instead of systemd-devel: + allow OBS to shortcut by using systemd-devel-mini. + +------------------------------------------------------------------- +Wed Apr 17 11:13:01 CEST 2019 - kukuk@suse.de + +- Remove legacy LSB-init script code, we don't have that anymore. + +------------------------------------------------------------------- +Sun Mar 17 14:50:26 UTC 2019 - Jan Engelhardt + +- Drop pre-12.2 parts from build recipe +- Switch %systemd_requires to %systemd_ordering, since %service_* + can deal with its absence. + +------------------------------------------------------------------- +Fri Jan 11 21:13:10 UTC 2019 - rgoldwyn@suse.com + +- Upgrade to 5.1.5 + - fix flag file permission. + - fix directory create permission. + - fix use after free in do_master_list_reset(). + - fix deadlock in dumpmaps. + - dont use array for path when not necessary. + - fix prefix option handling in expand_entry(). + - fix sublink option not set from defaults. + - fix error return in do_nfs_mount(). + - add error handling for ext_mount_add(). + - account for recent libnsl changes. + - use_hostname_for_mounts shouldn't prevent selection among replicas. + - fix monotonic_elapsed. + - Makefiles.rules: remove 'samples' from SUBDIRS. + - dont allow trailing slash in master map mount points. + - fix libresolv configure check. + - add fedfs-getsrvinfo.c. + - add mount.fedfs.c. + - add fedfs-map-nfs4.c. + - add conditional inclusion of fedfs binaries. + - add an example fedfs master map entry to the installed master map. + - improve hostname lookup error logging. + - fix rpm spec install premissions on auto.net and auto.smb. + - tiny patch for autofs typo and possible bug. + - add units After line to include statd service. + - use systemd sd_notify() at startup. + - fix NFS version mask usage. + - fix fd leak in rpc_do_create_client(). + - add-man page note about extra slashes in paths. + - change expire type naming to better reflect usage. + - use defines for expire type. + - enable SIGUSR2 handling in rpm spec file. + - fix age setting at startup. + - fix update_negative_cache() map source usage. + - fix program usage message. + - mark removed cache entry negative. + - set bind mount as propagation slave. + - add master map pseudo options for mount propagation. + - fix use after free in parse_ldap_config(). + - fix incorrect locking in sss lookup. + - fix amd parser opts option handling. + - fix possible NULL pointer dereference in get_defaults_entry(). + - better handle hesiod support not built in. + - fix indent in automount(8) man page. + - remove autofs4 module load code. + - add NULL check in prepare_attempt_prefix(). + - update build info with systemd. + - use flags for startup boolean options. + - move close stdio descriptors to become_daemon(). + - add systemd service command line option. + - refactor negative map entry check. + - remove unused function dump_master(). + - remove unused function dump_state_queue(). + - remove couple of undeeded requires. + - Removed patches: + * autofs-5-1-3-fix-ordering-of-seteuid-setegid-in-do_spawn.patch + * autofs-5-1-3-fix-possible-map-instance-memory-leak.patch + * autofs-5-1-3-check-map-instances-for-staleness-on-map-update.patch + * 0001-use_hostname_for_mounts-shouldn-t-prevent-selection-.patch + * 0002-Fix-monotonic_elapsed.patch + * 0003-autofs-5.1.4-fix-fd-leak-in-rpc_do_create_client.patch + - Updated spec file to use native autofs service files + +------------------------------------------------------------------- +Wed May 16 00:55:57 UTC 2018 - nfbrown@suse.com + +- 0003-autofs-5.1.4-fix-fd-leak-in-rpc_do_create_client.patch + Fix filedescriptor leak (bsc#1093436) + +------------------------------------------------------------------- +Tue Mar 6 17:53:35 UTC 2018 - dimstar@opensuse.org + +- BuildRequire pkgconfig(udisks2) instead of udisks2-devel: let's + be flexible on possible package name changes. +- Package COPYRIGHT as %license instead of %doc. + +------------------------------------------------------------------- +Sun Feb 4 23:22:33 UTC 2018 - nfbrown@suse.com + +- 0001-use_hostname_for_mounts-shouldn-t-prevent-selection-.patch + Fix handling of replicated NFS server so that + selection between servers still works sensibly when + use_hostname_for_mounts is in effect. + (bsc#1066720) +- 0002-Fix-monotonic_elapsed.patch + Fix bug introduced with monotonic-time patches which + causes nanoseconds to be ignored and effectively + disables sorting based on response time and/or weight. + (bsc#1066720) + +------------------------------------------------------------------- +Thu Nov 23 13:44:33 UTC 2017 - rbrown@suse.com + +- Replace references to /var/adm/fillup-templates with new + %_fillupdir macro (boo#1069468) + +------------------------------------------------------------------- +Sun Nov 12 09:51:06 CET 2017 - kukuk@suse.de + +- Add build require for rpcgen (preparation for removing it from + glibc) + +------------------------------------------------------------------- +Wed Oct 18 21:03:57 UTC 2017 - jeffm@suse.com + +- fix ordering of seteuid/setegid in do_spawn (bsc#1062482). +- fix unset tsd group name handling (bsc#1062482). +- fix possible map instance memory leak (bsc#1038198). +- check map instances for staleness on map update (bsc#1038198). +- Added patches: + - autofs-5-1-3-check-map-instances-for-staleness-on-map-update.patch + - autofs-5-1-3-fix-ordering-of-seteuid-setegid-in-do_spawn.patch + - autofs-5-1-3-fix-possible-map-instance-memory-leak.patch + - autofs-5-1-3-fix-unset-tsd-group-name-handling.patch + +------------------------------------------------------------------- +Tue Aug 15 21:57:09 CEST 2017 - kukuk@suse.de + +- Add libnsl-devel as build require in preparation of libnsl + removal from glibc + +------------------------------------------------------------------- +Tue Aug 15 17:09:57 UTC 2017 - jeffm@suse.com + +- Add gpg signature + +------------------------------------------------------------------- +Wed Aug 9 18:45:13 UTC 2017 - jeffm@suse.com + +- Update URL to use www.kernel.org now that ftp is gone. + +------------------------------------------------------------------- +Wed Aug 9 17:45:46 UTC 2017 - jeffm@suse.com + +- update to version 5.1.3: + * limit getgrgid_r() buffer size + * increase worker thread per-thread stack size + * fix offset mount location multiple expansion + * use malloc for expanded map location + * fix invalid reference in remount_active_mount() + * fix work around sss startup delay + * fix possible NULL derefernce + * use autofs_point to store expire timeout where possibe + * add config option to use mount request log id + * factor out set_thread_mount_request_log_id() + * log functions to prefix messages with attempt_id if available + * create thread-local ID for mount attempts + * add the mount requestor's pid to pending_args + * delay submount exit for amd submounts + * fix bogus check in expire_cleanup() + * handle amd cache option all in amd type auto mounts + * handle map_option cache for top level mounts + * capture cache option and its settings during parsing + * add function conf_amd_get_map_options() + * check for conflicting amd section mounts + * include amd mount section mounts in master mounts list + * add function conf_amd_get_mount_paths() + * add function conf_amd_get_map_name() + * add support for amd browsable option + * add ref counting to struct map_source + * fix typos in README.amd-maps + * honor last rw in mount options when doing a bind mount + * set autofs mounts catatonic at exit + * make set_direct_mount_catatonic() more general + * check NFS server availability on local mount fallback + * make lookup_nss_read_master() return nss status + * don't return until after master map retry read + * set sane default master read wait timeout + * dont exit on master map read fail timeout + * fix included master map not found return + * fix quoted key handling in sanitize_path() + * add sss master map wait config option + * work around sss startup delay + * add master read wait option + * wait for master map available at start + * update and add README for old autofs schema + * fix create_client() RPC client handling + * fix _strncmp() usage + * fix argc off by one in mount_autofs.c + * fix cachefs parse message not being logged + * fix typo in MOUNT_FLAG_GHOST comment + * Avoid local variable name shadowing another + * configure: add cache variable for Linux proc filesystem check + * fix count_mounts() function + * fix short memory allocation in lookup_amd_instance() + * Fix fgets(3) size argument (another one) + * Fix typos in error messages + * Remove unused local 2KB buffer + * fix file map changed check + * Change .requestor to .requester for consistency + * Fix a typo in CREDITS + * fix libtirpc detection with -Wl,--as-needed + * Fix size arg of fgets(3) + * Drop redundant \n in logerr() + * Fix compiler warning in try_remount() + * build: check for clock_gettime in librt + * fix possible memory leak in nfs mount + * add config option to suppress not found log message + * properly handle errors in lookup_nss_mount + * fix yp map age not updated during map lookup + * fix 'nameing' typo in autofs.conf + * add remote-fs.target systemd dependency + * add autofs(5) note of IPv6 libtirpc requirement + * fix autofs(5) description of supported map sources + * fix modules make clean target + * fix Makefile linking dependencies + * fix handle_mounts() termination condition check + * log pipe read errors + * fix use-after-free in st_queue_handler() + * always set direct mounts catatonic at exit + * improve scalability of direct mount path component + * fix use after free in match_my_name() + * fix memory leak in get_network_proximity() + * fix typo in autofs_sasl_bind() + * fix use after free in open_lookup() + * fix use after free in sun parser parse_init() + * fix memory leak in ldap do_init() + * fix memory leak in nisplus lookup_reinit() + * fix sasl connection concurrancy problem + * fix unbind sasl external mech + * remove unused function elapsed() + * change time() to use monotonic_clock() + * change remaining gettimeofday() to use clock_gettime() + * use monotonic clock for indirect mount condition + * use monotonic clock for direct mount condition + * define pending condition init helper function + * use monotonic clock for alarm thread condition wait + * define monotonic clock helper functions + * Add a mode option for master map entries + * fix error handling of is_mounted() + * fix out of order call in program map lookup + * add configuration option to use fqdn in mounts + * update map_hash_table_size description + * change lookup to use reinit instead of reopen + * implement reinit in multi lookup module + * fix map format check in nss_open_lookup() multi map module + * factor out alloc multi map context + * factor out free multi map context + * add type to struct lookup_mod + * implement reinit in yp lookup module + * implement reinit in sss lookup module + * implement reinit in program lookup module + * implement reinit in nisplus lookup module + * implement reinit in ldap lookup module + * implement reinit in hosts lookup module + * implement reinit in hesiod lookup module + * implement reinit in file lookup module + * implement reinit in dir lookup module + * implement reinit in parse modules + * add reinit entry point to modules + * fix nsswitch handling when opening multi map + * make open_lookup() return nss status + * move check_nss_result() to nsswitchr.c + * fix update_hosts_mounts() return + * fix missing source sss in multi map lookup + * fix direct map expire not set for initial empty map + * fix direct mount stale instance flag reset + * fix error handling on ldap bind fail + * fix config old name lookup + * fix rwlock unlock crash + * fix return handling of do_reconnect() in ldap module + * make find_server() return a status + * make find_dc_server() return a status + * make connect_to_server() return a status + * make do_connect() return a status + * move query dn calculation from do_bind() to do_connect() + * fix return handling in sss lookup module + * fix left mount count return from umount_multi_triggers() + * revert fix libtirpc name clash + * update libtirpc workaround for new soname + * fix fix gcc5 complaints + * Removed patches: + autofs-5.1.1-task-use-after-free.patch + autofs-improve-scalability-of-direct-mount-path-comp.patch + autofs-5.1.1-properly-handle-errors-in-lookup_nss_mount.patch + autofs-5.1.1-fix-yp-map-age-not-updated-during-map-lookup.patch + autofs-5.1.1-leave_auth_destroy.patch + * Updated patches for context: + autofs-5.1.1-dbus-udisks-monitor.patch + +------------------------------------------------------------------- +Thu Apr 6 11:23:41 UTC 2017 - astieger@suse.com + +- remove rpmlintrc, review was boo#782691 + +------------------------------------------------------------------- +Wed Aug 10 13:10:50 UTC 2016 - jeffm@suse.com + +- Fix spurious ELOOP on certain kinds of failures (bsc#968918): + * autofs: fix yp map age not updated in s/_/./g case + * autofs: properly handle errors in lookup_nss_mount + * Added patches: + autofs-5.1.1-properly-handle-errors-in-lookup_nss_mount.patch + autofs-5.1.1-fix-yp-map-age-not-updated-during-map-lookup.patch + +------------------------------------------------------------------- +Thu Mar 24 14:47:04 UTC 2016 - jeffm@suse.com + +- improve scalability of direct mount path component creation (bsc#966573). + * Added autofs-improve-scalability-of-direct-mount-path-comp.patch + * Refreshed autofs-5.1.1-dbus-udisks-monitor.patch +- Use libldap_r instead of libldap for thread safety (bsc#955477). + * Added autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch + +------------------------------------------------------------------- +Tue Dec 8 22:26:30 CET 2015 - ro@suse.de + +- add patch autofs-5.1.1-leave_auth_destroy.patch (bnc#958410) + do not redefined auth_destroy, the reason for this has long + been fixed in libtirpc (version 0.2.1 is already fine) + +------------------------------------------------------------------- +Thu Jun 25 23:33:34 UTC 2015 - crrodriguez@opensuse.org + +- autofs.service: Use KillMode=mixed so "KillSignal" (SIGTERM) is + only sent to the main process and if still does not exit after + "TimeoutStopSec" then "SendSIGKILL" is sent to all remaining + processes of the unit's control group. + This is the desired behaviour for almost all daemons that + execute foreign programs. + +------------------------------------------------------------------- +Sun May 17 21:00:05 UTC 2015 - lchiquitto@suse.com + +- update to version 5.1.1: + * fix compile error in defaults.c + * add serialization to sasl init + * dont allocate dev_ctl_ops too early + * fix incorrect round robin host detection + * fix race accessing qdn in get_query_dn() + * fix leak in cache_push_mapent() + * fix config entry read buffer not checked + * fix FILE pointer check in defaults_read_config() + * fix memory leak in conf_amd_get_log_options() + * fix signed comparison in inet_fill_net() + * fix buffer size checks in get_network_proximity() + * fix leak in get_network_proximity() + * fix buffer size checks in merge_options() + * check amd lex buffer len before copy + * add return check in ldap check_map_indirect() + * check host macro is set before use + * check options length before use in parse_amd.c + * fix some out of order evaluations in parse_amd.c + * fix copy and paste error in dup_defaults_entry() + * fix leak in parse_mount() + * add mutex call return check in defaults.c + * force disable browse mode for amd format maps + * fix hosts map options check in lookup_amd_instance() + * fix memory leak in create_client() + * fix memory leak in get_exports() + * fix memory leak in get_defaults_entry() + * fix out of order clearing of options buffer + * fix reset amd lexer scan buffer + * ignore multiple commas in options strings + * fix typo in flagdir configure option + * clarify multiple mounts description + * gaurd against incorrect umount return + * update man page autofs(8) for systemd + * dont pass sloppy option for other than nfs mounts + * make service want network-online + * fix fix master map type check + * init qdn before use in get_query_dn() + * fix typo in update_hosts_mounts() + * fix hosts map update on reload + * make negative cache update consistent for all lookup modules + * ensure negative cache isn't updated on remount + * dont add wildcard to negative cache + * add a prefix to program map stdvars + * add config option to force use of program map stdvars + * fix incorrect check in parse_mount() + * handle duplicates in multi mounts + * revert special case cifs escapes + * fix map option parsing for 'strictatime' + * fix showmount search in auto.net + * remove obsolete comment in auto.net + * fix macro usage in lookup_program.c + * fix gcc5 complaints + * remove unused offset handling code + * fix mount as you go offset selection + * link daemon with pthread library (Debian patch) + * manpage corrections (Debian patch) + * fix manpages hyphenation (Debian patch). +- ported patches: + * autofs-5.1.0-dbus-udisks-monitor.patch -> + autofs-5.1.1-dbus-udisks-monitor.patch + * autofs-debuginfo-fix.patch -> autofs-5.1.1-debuginfo-fix.patch + * autofs-5.0.9-suse-auto_master_default.patch -> + autofs-5.1.1-suse-auto_master_default.patch + * autofs-5.0.9-task-use-after-free.patch -> + autofs-5.1.1-task-use-after-free.patch +- remove patches that are now upstream: + * autofs-5.1.0-dont-pass-sloppy-option-for-other-than-nfs-mounts.patch + * autofs-5.1.0-add-a-prefix-to-program-map-stdvars.patch + * autofs-5.1.0-add-config-option-to-force-use-of-program-map-stdvars.patch + * autofs-5.1.0-gcc5-fixes.patch + +------------------------------------------------------------------- +Wed May 6 11:27:45 UTC 2015 - dmueller@suse.com + +- add autofs-5.1.0-gcc5-fixes.patch: Fix build against gcc 5.x + +------------------------------------------------------------------- +Tue Mar 3 10:56:48 CET 2015 - mszeredi@suse.cz + +- prevent potential privilege escalation via interpreter load path + for program-based automount maps, add the following patches: + autofs-5.1.0-add-a-prefix-to-program-map-stdvars.patch + autofs-5.1.0-add-config-option-to-force-use-of-program-map-stdvars.patch + (bnc#917977 CVE-2014-8169) + +------------------------------------------------------------------- +Tue Feb 17 10:23:44 CET 2015 - mszeredi@suse.cz + +- add autofs-5.1.0-dont-pass-sloppy-option-for-other-than-nfs-mounts.patch + (bsc#911720) + +------------------------------------------------------------------- +Tue Feb 3 19:51:56 UTC 2015 - lchiquitto@suse.com + +- Fix autofs.service so that multiple options passed through + sysconfig AUTOFS_OPTIONS work correctly (bsc#909472) + +------------------------------------------------------------------- +Tue Feb 3 18:40:56 UTC 2015 - lchiquitto@suse.com + +- Fix configuration handling now that we have /etc/autofs.conf + and /etc/sysconfig/autofs. Runtime options are now configured in + the former, while settings that affect the daemon start up are + still handled in the latter. +- Clean-up sysconfig.autofs, leave only init script options: + $OPTIONS and $USE_MISC_DEVICE. +- Run %fillup also when systemd is enabled. (bsc#906606) + +------------------------------------------------------------------- +Fri Jan 9 09:59:41 CET 2015 - kukuk@suse.de + +- Use udisks2, udisks development has ceased in favor of udisks2. + +------------------------------------------------------------------- +Mon Aug 4 14:36:56 CEST 2014 - mszeredi@suse.cz + +- add autofs-debuginfo-fix.patch to fix building of debuginfo + package + +------------------------------------------------------------------- +Mon Jul 21 15:01:47 UTC 2014 - p.drouand@gmail.com + +- Do not depend on insserv if the system use systemd; it's useless +- Update to version 5.1.0 + + fix mistake in assignment. + + add amd map format parser. + + check for non existent negative entries in lookup_ghost(). + + fix reset flex scan buffer on init. + + fix fix negative status being reset on map read. + + amd lookup update lookup ldap to handle amd keys. + - inadvertantly dropped from initial series. + + amd lookup update lookup hesiod to handle amd keys. + - inadvertantly dropped from initial series. + + fix wildcard key lookup. + + fix out of order amd timestamp lookup. + + fix ldap default schema config. + + fix ldap default master map name config. + + fix map format init in lookup_init(). + + fix incorrect max key length in defaults get_hash(). + + fix xfn sets incorrect lexer state. + + fix old style key lookup. + + fix expire when server not responding. + + fix ldap_uri config update. + + fix typo in conf_load_autofs_defaults(). + + fix hash on confg option add and delete. + + add plus to path match pattern. + + fix multi entry ldap option handling. + + cleanup options in amd_parse.c + + allow empty value for some map options. + + allow empty value in macro selectors. +- Adapt autofs-5.0.9-dbus-udisks-monitor.patch to upstream changes, + rename to autofs-5.1.0-dbus-udisks-monitor.patch + +------------------------------------------------------------------- +Wed May 14 11:57:22 UTC 2014 - lchiquitto@suse.com + +- autofs.init: drop when systemd is enabled (bnc#863970) + +------------------------------------------------------------------- +Fri Mar 28 14:32:15 UTC 2014 - lchiquitto@suse.com + +- update to version 5.0.9: + * fixes for samples/auto.master + * fix variable substitution description + * fix incorrect append options description in README.v5-release +- rebase, refresh and rename all patches on top of 5.0.9 +- switch to .xz compressed tarball instead of bzip2 +- autofs-5.0.8-upstream-patches-20140324.bz2: remove + +------------------------------------------------------------------- +Tue Mar 25 11:23:27 UTC 2014 - werner@suse.de + +- Avoid bad timings and timeouts if a shutdown was done by a remote + user via su and with autofs based home directory + +------------------------------------------------------------------- +Mon Mar 24 11:09:12 UTC 2014 - lchiquitto@suse.com + +- autofs-5.0.8-upstream-patches-20140324.bz2: update 5.0.8 upstream + patches up to 2014-03-24, fixing the following bugs: + * fix fix options compare + * use open(2) instead of access(2) to trigger dependent mounts + * fix fix map source with type lookup (bnc#869377) + +------------------------------------------------------------------- +Tue Feb 25 14:30:35 UTC 2014 - lchiquitto@suse.com + +- autofs-5.0.8-upstream-patches-20140224.bz2: update 5.0.8 upstream + patches up to 2014-02-24, fixing the following bugs: + * fix ipv6 link local address handling + * fix fix ipv6 libtirpc getport + * get_nfs_info() should query portmapper if port is not given + * fix rpc_portmap_getport() proto not set + * fix protmap not trying proto v2 + * fix rpc_getport() when libtirpc is disabled + * fix rpc_getrpcbport() when libtirpc is disabled + * don't reset errno (former autofs-5.0.8-eaccess.patch) + * extend fix for crash due to thread unsafe use of libldap (bnc#853469) + * fix deadlock in init_ldap_connection (bnc#859969) + * fix options compare + * fix negative status being reset on map read + * check for existing offset mount before mounting + * fix max() declaration + * fix symlink fail message in mount_bind.c + * fix cache readlock not taken on lookup + * pass map_source as function paramter where possible + * check for bind onto self in mount_bind.c + * fix symlink expire + * dont clobber mapent for negative cache + * fix macro_addvar() and move init to main thread + * change walk_tree() to take ap + * add negative cache lookup to hesiod lookup + * fix external env configure + * make autofs(5) consistent with auto.master(5) + * fix map source with type lookup + * fix lookup_nss_mount() map lookup + * dont ignore null cache entries on multi mount umount + * fix inconsistent error returns in handle_packet_missing_direct() + * simple coverity fixes +- autofs-5.0.8-eaccess.patch: removed (merged upstream) +- autofs-5.0.8-dbus-udisks-monitor.patch: refresh + +------------------------------------------------------------------- +Mon Jan 20 13:46:20 UTC 2014 - lchiquitto@suse.com + +- autofs-5.0.8-revert-fix-libtirpc-name-clash.patch: no longer + needed after libtirpc was updated to 0.2.4-rc2, remove + +------------------------------------------------------------------- +Mon Dec 2 18:20:54 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.8-upstream-patches-20131124.bz2: update 5.0.8 upstream + patches up to 2013-11-24, fixing the following bugs: + * fix undefined authtype_requires_creds err if ldap enabled but + without sasl + * fix master map type check + * fix task manager not getting signaled + * allow --with-systemd to take a path arg + * fix WITH_LIBTIRPC function name + * fix ipv6 libtirpc getport +- autofs-5.0.8-dbus-udisks-monitor.patch: rebase on top of 5.0.8 + +------------------------------------------------------------------- +Thu Oct 17 21:21:35 UTC 2013 - lchiquitto@suse.com + +- update to version 5.0.8: no code changes as all patches were + already present in autofs-5.0.7-upstream-patches-20131001.bz2 +- autofs-5.0.7-upstream-patches-20131001.bz2: removed + +------------------------------------------------------------------- +Thu Oct 3 16:45:02 UTC 2013 - lchiquitto@suse.com + +- autofs-suse-build.patch: removed, no longer needed. + +------------------------------------------------------------------- +Thu Oct 3 01:35:29 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20131001.bz2: update 5.0.7 upstream + patches up to 2013-10-01, fixing many bugs: + * fix add null check in parse_server_string() + * check for protocol option + * use ulimit max open files if greater than internal maximum + * don't override LDFLAGS in make rules + * fix a couple of compiler warnings + * add after sssd dependency to unit file + * dont start readmap unless ready + * fix crash due to thread unsafe use of libldap (bnc#820585) + * fix compile error with heimdal support enabled + * fix typo forced-shutdown should be force-shutdown + * fix hesiod check error and use correct $(LIBS) setting + * fix dead LDAP symbolic link when LDAP support is disabled + * add missing libtirpc lib to mount_nfs.so when TIRPC enabled + * use compiler determined by configure instead of hard-coded ones + * remove hard-coded STRIP variable + * use LIBS for link libraries + * unbundle NOTSTRIP from DEBUG so they dont depend on each other + * fix occasional build error when enable parallel compiling + * fix compilation of lookup_ldap.c without sasl + * fix dumpmaps multi output + * try and cleanup after dumpmaps + * teach dumpmaps to output simple key value pairs + * fix syncronize handle_mounts() shutdown + * fix fix wildcard multi map regression + * improve timeout option description + * only probe specific nfs version when requested + * fix bad mkdir permission on create + * setup program map env from macro table + * add short host name standard marco variable + * allow use of hosts map in maps + * fix get_nfs_info() probe + * fix portmap lookup + * add std vars to program map invocation + * samples/auto.smb: add logic to obtain credentials + +------------------------------------------------------------------- +Sun Jul 7 17:27:39 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20130619.bz2: update 5.0.7 upstream + patches up to 2013-06-19, fixing some bugs: + * make dump maps check for duplicate indirect mounts + * document allowed map sources in auto.master + * add enable sloppy mount option to configure + * fix interface address null check + * don't probe rdma mounts + * fix master map mount options matching + * fix master map bogus keywork match + * fix fix map entry duplicate offset detection + * probe each nfs version in turn for singleton mounts + * fix probe each nfs version in turn for singleton mounts + * misc man page fixes + +------------------------------------------------------------------- +Sun Jun 16 02:25:35 UTC 2013 - jengelh@inai.de + +- Explicitly specify cyrus-sasl-devel and openssl-devel + which were implicit before + +------------------------------------------------------------------- +Sun May 12 10:02:05 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20130428.bz2: update 5.0.7 upstream + patches up to 2013-04-28, fixing some bugs: + * fix some automount(8) typos + * syncronize handle_mounts() shutdown + * fix submount tree not all expiring (bnc#801808) +- remove patches that are now upstream: + * autofs-5.0.7-fix-submount-tree-not-all-expiring.patch + +------------------------------------------------------------------- +Tue Apr 9 20:43:54 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-fix-submount-tree-not-all-expiring.patch: expire + multiple levels of recursive mounts correctly (bnc#801808) + +------------------------------------------------------------------- +Mon Mar 11 13:36:06 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20130311.bz2: update 5.0.7 upstream + patches to 20130311, fixing some bugs: + * dont fail on master map self include (bnc#799873) + * fix wildcard multi map regression + * fix file descriptor leak when reloading the daemon (bnc#772698) + * deprecate nosymlink pseudo option + * add symlink pseudo option + * document browse option in man page + +------------------------------------------------------------------- +Wed Feb 6 21:30:49 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.6-invalid-ghost-dirs.patch: delete. the problem's + root cause was fixed in the kernel + +------------------------------------------------------------------- +Tue Jan 29 16:38:22 UTC 2013 - lchiquitto@suse.com + +- rpm spec: enable sssd support if available + +------------------------------------------------------------------- +Mon Jan 21 14:58:04 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20130121.bz2: update 5.0.7 upstream + patches to 20130121, fixing some bugs: + * fix nobind man page description + * fix submount offset delete + * fix init script status return + * fix use get_proximity() without libtirpc + * don't use dirent d_type to filter out files in scandir() + * don't schedule new alarms after readmap + * use numeric protocol ids instead of protoent structs + * lib/defaults.c: use WITH_LDAP conditional around LDAP types + * make yellow pages support optional + * modules/replicated.c: use sin6_addr.s6_addr32 + * workaround missing GNU versionsort extension +- remove patches that are now upstream: + * autofs-5.0.7-fix-scandir-filter.patch + * autofs-5.0.7-use-protocol-id-instead-of-protoent.patch + * autofs-5.0.7-dont-reschedule-alarm-after-signals.patch + +------------------------------------------------------------------- +Fri Jan 11 19:02:21 UTC 2013 - lchiquitto@suse.com + +- fix build on older versions of the distribution, do not install + org.freedesktop.AutoMount.conf + +------------------------------------------------------------------- +Fri Jan 11 18:45:14 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-fix-scandir-filter.patch: fix lookup_dir when the + included directory is on an XFS file system (bnc#798158) + +------------------------------------------------------------------- +Fri Jan 11 18:37:56 UTC 2013 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20121120.bz2: update 5.0.7 upstream + patches to 20121120, fixing some bugs: + * fix map entry duplicate offset detection + * allow nsswitch.conf to not contain "automount:" lines + +------------------------------------------------------------------- +Fri Jan 11 18:28:53 UTC 2013 - lchiquitto@suse.com + +- revert systemd initialization type from "simple" to "forking" + and drop the patch that partially implemented "new style systemd" + daemon (bnc#798162) +- autofs-5.0.7-new-style-systemd-daemon.patch: delete + +------------------------------------------------------------------- +Thu Nov 15 11:53:37 UTC 2012 - werner@suse.de + +- UDisks dbus module support: use private connection, do not refer + to a reply if already handled, install dbus AutoMount.conf in + direct way + +------------------------------------------------------------------- +Tue Nov 6 21:30:37 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-use-protocol-id-instead-of-protoent.patch: use + protocol id directly instead of calling the non-reentrant + function getprotobyname() (bnc#787410) + +------------------------------------------------------------------- +Tue Nov 6 21:18:39 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-dont-reschedule-alarm-after-signals.patch: don't + schedule new alarms after handling SIGHUP and SIGUSR1 (bnc#783651) + +------------------------------------------------------------------- +Tue Nov 6 21:12:19 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-new-style-systemd-daemon.patch: add new command + line parameter --systemd, which instructs automount to skip + daemonization completely, leaving the task to systemd +- autofs.service: use new --systemd option when starting up + +------------------------------------------------------------------- +Thu Nov 1 19:45:43 UTC 2012 - crrodriguez@opensuse.org + +- autofs.service: use service type simple with no forking + +------------------------------------------------------------------- +Fri Oct 19 12:56:57 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20121018.bz2: update 5.0.7 upstream + patches to 20121018, fixing some bugs: + * fix recursive mount deadlock + * increase file map read buffer size + * handle new location of systemd +- remove patches that are now upstream: + * autofs-5.0.7-handle-new-location-of-systemd.patch + +------------------------------------------------------------------- +Wed Oct 17 11:49:11 UTC 2012 - lchiquitto@suse.com + +- rpm spec: don't try to build with udisks support on old versions + of the distribution + +------------------------------------------------------------------- +Wed Oct 17 11:16:44 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20121016.bz2: update 5.0.7 upstream + patches to 20121016, fixing some bugs: + * add timeout option description to man page + * fix null map entry order handling + * make description of default MOUNT_WAIT setting clear + * configure.in: allow cross compilation + * README: update mailing list subscription info + +------------------------------------------------------------------- +Wed Oct 17 09:07:35 UTC 2012 - fcrozat@suse.com + +- autofs-systemd-path.patch: handle new location of systemd + +------------------------------------------------------------------- +Thu Sep 20 12:48:28 UTC 2012 - werner@suse.de + +- Make it possible to use tmpfs based parents for autofs mount points + +------------------------------------------------------------------- +Mon Sep 17 15:33:20 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-upstream-patches-20120911.bz2: update 5.0.7 upstream + patches to 20120911, fixing some bugs: + * fix nobind sun escaped map entries + * fix use cache entry after free in lookup_prune_one_cache() + * fix ipv6 proximity calculation + * fix parse buffer initialization + * fix typo in automount(8) +- remove patches that are now upstream: + * autofs-5.0.7-fix-parse-buffer-initialization.patch + * autofs-5.0.7-fix-use-devid-after-free.patch + +------------------------------------------------------------------- +Tue Aug 28 17:55:46 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-fix-use-devid-after-free.patch: fix use cache entry + after free in lookup_prune_one_cache() (bnc#774241) + +------------------------------------------------------------------- +Tue Aug 28 17:54:24 UTC 2012 - lchiquitto@suse.com + +- autofs-5.0.7-fix-parse-buffer-initialization.patch: fix parse + buffer initialization to avoid corruption in the map file name + string (bnc#777709) + +------------------------------------------------------------------- +Thu Aug 23 08:45:49 UTC 2012 - werner@suse.de + +- Udisk: Check for unknown key word `eavesdrop' for dbus matching + rules and if not supported retry without +- Udisk: Do not crash if map file is not found + +------------------------------------------------------------------- +Fri Aug 17 12:28:53 UTC 2012 - werner@suse.de + +- First initial udisks support, that is listen over dbus the udisks + daemon and the events for USB and optical devices. Also ask at + startup the udisks daemon for all devices and its properties as + well as manage the removals and plugins of devices. + TODO: + + With parsing the map configuration file apply the rules + to the map entry, like special options for file systems types + and/or devices. Also make keys unique, that is compare with + existing keys and add an counter or similar. + + Also with parsing the map configuration file apply the rules + to the key of map entry, like using more than one dict entry + for the key. + + Security management: who is allowed to access the devices? + + How to trigger sync and unmount before any timeout? + + What is about UTF-8 and Latin to UTF-8? + +------------------------------------------------------------------- +Sun Jul 29 23:38:32 UTC 2012 - lchiquitto@suse.com + +- adjust the NetworkManager dispatcher script to check if the + AutoFS service is enabled in SysV or systemd (bnc#773440) + +------------------------------------------------------------------- +Wed Jul 25 23:46:20 UTC 2012 - lchiquitto@suse.com + +- update to version 5.0.7: + * check negative cache much earlier + * dont use pthread_rwlock_tryrdlock() + * mount_nfs.so to honor explicit NFSv4 requests + * mount_nfs.so fix port=0 option behavior v3 + * documentation fix some typos and misleading comments + +------------------------------------------------------------------- +Fri Jul 20 19:07:22 UTC 2012 - lchiquitto@suse.com + +- add reload action to systemd service file (bnc#772487) + +------------------------------------------------------------------- +Thu Jul 19 22:43:42 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20120716, fixing some bugs: + * fix systemd argument passing + * fix get_nfs_info() can incorrectly fail + * fix offset directory removal + +------------------------------------------------------------------- +Tue Jul 3 00:36:26 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20120629, fixing some bugs: + * check if /etc/mtab is a link to /proc/self/mounts + * fix nfs4 contacts portmap + * fix sss map age not updated + * fix remount deadlock (bnc#733479) + * fix umount recovery of busy direct mount (bnc#734924) + * fix offset mount point directory removal + * remove move mount code and configure option + * fix remount of multi mount + * fix device ioctl alloc path check + * refactor hosts lookup module + * remove cache update from parse_mount() + * add function to delete offset cache entry + * allow update of multi mount offset entries + * add hup signal handling to hosts map +- remove patches that are now upstream: + * autofs-5.0.6-fix-remount-deadlock.patch + * autofs-5.0.6-fix-umount-recovery-of-busy-direct-mount.patch + +------------------------------------------------------------------- +Tue May 29 17:12:43 UTC 2012 - lchiquitto@suse.com + +- fix umount recovery of busy direct mounts (bnc#734924) +- fix remount deadlock that can happen on a restart when there are + nested direct mounts busy (bnc#733479) + +------------------------------------------------------------------- +Mon May 28 21:12:46 UTC 2012 - lchiquitto@suse.com + +- revert "fix libtirpc name clash": auth_put() is not yet available + in our version of tirpc + +------------------------------------------------------------------- +Sat May 26 12:08:26 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20120525, fixing some bugs: + * fix sss wildcard match + * fix dlopen() error handling in sss module + * fix configure string length tests + * report "map not read" when debug logging + * duplicate parent options for included maps (bnc#753693) + * update ->timeout() function to not return timeout + * move timeout to map_source + * fix kernel verion check of version components + * dont retry ldap connect if not required + * fix initialization in rpc create_client() + * fix libtirpc name clash +- remove patches that are now upstream: + * autofs-5.0.6-duplicate-parent-options-for-included-maps.patch + +------------------------------------------------------------------- +Wed Apr 25 09:54:31 UTC 2012 - lchiquitto@suse.com + +- duplicate parent options for included maps (bnc#753693) + +------------------------------------------------------------------- +Mon Apr 2 17:50:35 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20120402, fixing some bugs: + * use strtok_r() in linux_version_code() + * improve UDP RPC timeout handling + * allow MOUNT_WAIT to override probe + * fix rework error return handling in rpc code + * fix typo in libtirpc file name + * fix function to check mount.nfs version + * fix segmentation fault in get_query_dn() (bnc#752044) +- remove patches that are now upstream: + * autofs-5.0.6-fix-libtirpc-name-typo.patch + +------------------------------------------------------------------- +Wed Feb 29 13:00:01 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20120228, fixing some bugs and + implementing new features (bnc#749098): + * fix improve mount location error reporting + * fix fix wait for master source mutex + * add sss lookup module + * teach automount about sss source + * fix init script usage message + * ignore duplicate exports in auto.net + * add kernel version check function + * add function to check mount.nfs version + * reinstate singleton mount probe + * rework error return handling in rpc code + * catch EHOSTUNREACH and bail out early + * systemd support fixes + * check scandir() return value (bnc#748588) + * allow for kernel packet size change (in kernel 3.3.0+) + * fix function to check mount.nfs version +- get-upstream-patches: make it work again after kernel.org FTP + server reorganization + +------------------------------------------------------------------- +Thu Feb 2 22:18:53 UTC 2012 - lchiquitto@suse.com + +- fix segfault caused by an use after free in st_queue_handler() + (bnc#727392) + +------------------------------------------------------------------- +Thu Feb 2 13:09:26 UTC 2012 - lchiquitto@suse.com + +- comment out /etc/auto.master.d from the shipped auto.master file + +------------------------------------------------------------------- +Thu Feb 2 12:55:51 UTC 2012 - lchiquitto@suse.com + +- configure with --disable-mount-move only when systemd is enabled + +------------------------------------------------------------------- +Fri Jan 27 18:05:45 UTC 2012 - lchiquitto@suse.com + +- rpm spec: simplify some commands in the install section and + use more rpm macros (from Cristian Rodriguez) + +------------------------------------------------------------------- +Mon Jan 23 16:24:31 UTC 2012 - lchiquitto@suse.com + +- enable systemd support by default on openSUSE 12.2 (bnc#741879): + * enable disable-mount-move and with-systemd configure options + * install systemd service file + +------------------------------------------------------------------- +Mon Jan 23 12:56:56 UTC 2012 - lchiquitto@suse.com + +- disable "--as-needed" to make sure automount will be linked + against libtirpc (bnc#742846) + +------------------------------------------------------------------- +Thu Jan 19 20:40:34 UTC 2012 - lchiquitto@suse.com + +- fix typo in libtirpc file name +- rpm spec: use the %configure macro + +------------------------------------------------------------------- +Tue Jan 17 12:44:26 UTC 2012 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20111210, fixing some bugs and + implementing new features (bnc#741878): + * add systemd unit support (not enabled yet) + * add disable move mount configure option + * implement 'dir' map type + * improve mount location error reporting + * fix rpc build error + * fix ipv6 configure check + * fix ipv6 rpc calls + * fix ipv6 name lookup check + * fix map source check in file lookup + * fix submount shutdown race + * fix wait for master source mutex + * fix not bind mounting local filesystem + * fix LDAP result leaks on error paths + * fix result null check in read_one_map() + * fix dumpmaps not reading maps + * fix paged query more results check + +------------------------------------------------------------------- +Tue Dec 20 11:28:00 UTC 2011 - coolo@suse.com + +- add autoconf as buildrequire to avoid implicit dependency + +------------------------------------------------------------------- +Wed Nov 16 19:51:44 UTC 2011 - lchiquitto@suse.com + +- fix initialization of LDAP results (bnc#730245) + +------------------------------------------------------------------- +Wed Oct 19 16:00:47 UTC 2011 - lchiquitto@suse.com + +- init script: remove SUSE-specific actions that systemd doesn't + support (force-expire and force-stop) (bnc#725199) + +------------------------------------------------------------------- +Sat Sep 17 13:43:52 UTC 2011 - jengelh@medozas.de + +- rpm spec: remove redundant tags/sections +- rpm spec: use %_smp_mflags for parallel build + +------------------------------------------------------------------- +Wed Sep 14 18:51:32 UTC 2011 - lchiquitto@suse.com + +- fix LDAP result leaks on error paths +- fix result null check in read_one_map() (bnc#707715) +- fix paged query more results check + +------------------------------------------------------------------- +Mon Jul 4 11:35:36 UTC 2011 - lchiquitto@suse.com + +- update 5.0.6 upstream patches to 20110703, removing one patch + that is now upstream: + * autofs-5.0.6-fix-ipv6-name-for-lookup-fix.patch + +------------------------------------------------------------------- +Fri Jul 1 13:40:05 UTC 2011 - lchiquitto@suse.com + +- fix an error in the recent ipv6 name for lookup patch + +------------------------------------------------------------------- +Tue Jun 28 23:42:30 UTC 2011 - lchiquitto@suse.com + +- update to version 5.0.6 (bnc#702791): + * add nobind option + * add base64 password encode + * fix ipv6 name for lookup + * fix libtirpc ipv6 check + * dont bind nfs mount if nobind is set +- remove patches that are now upstream: + * autofs-5.0.5-fix-null-cache-deadlock.patch + +------------------------------------------------------------------- +Tue Jun 14 17:21:19 UTC 2011 - lchiquitto@suse.com + +- rpm spec: install the rcautofs(8) man page as a symbolic link + to autofs(8) +- rpm spec: restart the automount daemon after updates +- init script: update Free Software Foundation address + +------------------------------------------------------------------- +Tue Jun 14 12:01:17 UTC 2011 - lchiquitto@suse.com + +- fix null cache deadlock (bnc#696596) + +------------------------------------------------------------------- +Tue Jun 14 11:54:02 UTC 2011 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20110613 (bnc#699767): + * remove master_mutex_unlock() leftover + * fix sanity checks for brackets in server name + * fix lsb service name in init script + * fix map source check in file lookup + * fix simple bind without SASL support + * fix sasl bind host name selection + +------------------------------------------------------------------- +Tue Jun 14 09:36:35 UTC 2011 - aj@suse.de + +- build against libtirpc since glibc's rpc code is deprecated + +------------------------------------------------------------------- +Fri May 27 20:53:03 UTC 2011 - lchiquitto@suse.com + +- modify the NetworkManager dispatcher script to prevent it from + restarting AutoFS when the network goes down (bnc#693402) + +------------------------------------------------------------------- +Fri May 27 20:13:52 UTC 2011 - lchiquitto@suse.com + +- init script: remove references to the obsolete autofs.ko (v3) + kernel module (bnc#696708) +- init script: don't wait one second if the misc device is already + available (bnc#696708) + +------------------------------------------------------------------- +Mon May 23 17:44:54 UTC 2011 - lchiquitto@suse.com + +- documentation: add the following (commented out) options to + the default sysconfig file (bnc#695487, bnc#691617): + * DEFAULT_NEGATIVE_TIMEOUT + * DEFAULT_MOUNT_WAIT and DEFAULT_UMOUNT_WAIT + * MOUNT_NFS_DEFAULT_PROTOCOL + * LDAP_URI, LDAP_TIMEOUT, LDAP_NETWORK_TIMEOUT and SEARCH_BASE + +------------------------------------------------------------------- +Mon May 9 16:46:48 UTC 2011 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20110427 (bnc#692104): + * fix paged ldap map read + * fix next task list update + * fix stale map read + * fix null cache clean + * automount(8) man page correction + * fix out of order locking in readmap + * include ip address in debug logging + * mount using address for DNS round robin host names + * reset negative status on cache prune +- remove patches that are now upstream: + * autofs-5.0.5-fix-next-task-list-update.patch + * autofs-5.0.5-fix-stale-map-read.patch + * autofs-5.0.5-fix-out-of-order-locking-in-readmap.patch + +------------------------------------------------------------------- +Mon Apr 4 21:04:35 UTC 2011 - lchiquitto@suse.com + +- init script: use misc device (/dev/autofs) by default, unless it + is explicitly disabled in sysconfig (bnc#684997) + +------------------------------------------------------------------- +Mon Apr 4 20:49:38 UTC 2011 - lchiquitto@suse.com + +- fix out of order locking in readmap (bnc#667967) + +------------------------------------------------------------------- +Mon Apr 4 20:40:04 UTC 2011 - lchiquitto@suse.com + +- add upstream fixes for the "non-expiring mounts" problem and + put the "fix direct map not updating on reread" patch back in + (bnc#677143) + +------------------------------------------------------------------- +Tue Mar 29 17:47:28 UTC 2011 - lchiquitto@suse.com + +- ship init script as a source file and not as a patch against the + upstream sample + +------------------------------------------------------------------- +Tue Mar 29 14:54:08 UTC 2011 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20110318, fixing one bug: + * replace GPLv3 code (bnc#682268) + +------------------------------------------------------------------- +Thu Mar 24 21:04:16 UTC 2011 - lchiquitto@suse.com + +- revert "fix direct map not updating on reread" due to expiration + problems (bnc#677143) + +------------------------------------------------------------------- +Thu Mar 3 14:11:32 UTC 2011 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20110302 (bnc#676690): + * use weight only for server selection + * fix isspace() wild card substitution + * auto adjust ldap page size + * fix prune cache valid check + * fix mountd vers retry + * fix expire race + +------------------------------------------------------------------- +Tue Feb 22 13:51:47 UTC 2011 - lchiquitto@suse.com + +- init script: remove "gssd" from Should-Start/Stop lists, there + is no service with this name (bnc#626516) + +------------------------------------------------------------------- +Mon Feb 21 15:01:21 UTC 2011 - lchiquitto@suse.com + +- when ghosting is enabled, don't create mount points for cached + entries that don't have a valid mapent (bnc#658734) + +------------------------------------------------------------------- +Fri Oct 29 13:08:52 UTC 2010 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20101021 (bnc#650177): + * remove ERR_remove_state() openssl call + * always read file maps mount lookup map read fix + * fix direct map not updating on reread + * fix add simple bind auth + * fix submount shutdown wait + * add external bind method + * add dump maps option + +------------------------------------------------------------------- +Thu Aug 19 12:15:44 UTC 2010 - lchiquitto@suse.com + +- add MAP_HASH_TABLE_SIZE option to sysconfig + +------------------------------------------------------------------- +Thu Aug 12 13:31:29 UTC 2010 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20100810 (bnc#630736): + * remove extra read master map call + * fix "fix cache_init() on source re-read" + * fix error handing in do_mount_indirect() + * expire thread use pending mutex + * link against krb5 library by default + * make "verbose" mode a little less verbose (bnc#630719) +- merge patches autofs-5.0.2-use_local_cflags.patch and + autofs-5.0.5-as_needed.patch into autofs-suse-build.patch +- remove autofs-5.0.4-link_kerberos.patch (now upstream) + +------------------------------------------------------------------- +Mon May 24 13:02:40 UTC 2010 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20100524 (bnc#608284): + * add support to LDAP simple bind authentication + * fix master map source server unavailable handling + * add autofs_ldap_auth.conf man page + * fix random selection for host on different network + * don't hold lock for simple mounts + * fix remount locking + * fix wildcard map entry match (bnc#585201) + * fix parse_sun() module init + * don't check null cache on expire + * fix null cache race + * fix cache_init() on source re-read + * mapent becomes negative during lookup + * check each dc server + * fix negative cache included map lookup + * remove state machine timed wait + +------------------------------------------------------------------- +Mon May 10 23:26:47 UTC 2010 - lchiquitto@suse.com + +- init script: improve stop routine to avoid problems on restart + (bnc#604497) + +------------------------------------------------------------------- +Wed Mar 31 18:02:13 UTC 2010 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20100326: + * fix reconnect get base dn + * add missing sasl mutex callbacks + * fix get query dn failure + * fix ampersand escape in auto.smb + * add locality as valid ldap master map attribute + * add locality as valid ldap master map attribute fix + +------------------------------------------------------------------- +Wed Feb 24 16:50:02 CET 2010 - mszeredi@suse.cz + +- add "network-remotefs" to Should-Start: and Should-Stop: in the + init script (bnc#522224) + +------------------------------------------------------------------- +Wed Feb 10 10:37:15 UTC 2010 - lchiquitto@suse.com + +- remove configure to make sure it will be recreated by autoconf. + fixes a build problem that sometimes prevented lookup_ldap.so to + be linked against krb5 (bnc#572934, bnc#578655) + +------------------------------------------------------------------- +Thu Feb 4 22:48:22 UTC 2010 - lchiquitto@suse.com + +- update 5.0.5 upstream patches to 20100201: + * check for path mount location in generic module + * don't fail mount on access fail + * fix rpc fail on large export list + * fix memory leak on reload + * don't connect at ldap lookup module init + * fix random selection option + * fix disable timeout + * fix strdup() return value check +- include README file about active restart feature (bnc#565151) + +------------------------------------------------------------------- +Wed Dec 23 11:56:57 UTC 2009 - lchiquitto@suse.com + +- fix build on releases that do not support ext4 + +------------------------------------------------------------------- +Wed Dec 16 14:03:27 UTC 2009 - lchiquitto@suse.com + +- add new sysconfig parameter USE_MISC_DEVICE and enable it by + default (bnc#565151) +- update initscript bringing it closer to what we have upstream: + * remove the deprecated force-stop logic and handle it like a + regular stop + * remove force-reload from usage and handle it like a regular + reload + +------------------------------------------------------------------- +Fri Nov 27 11:59:44 UTC 2009 - lchiquitto@suse.com + +- update to version 5.0.5. lots of bug fixes including: + * fix nested submount expire deadlock + * fix negative caching for non-existent map keys + * make hash table scale to thousands of entries + * fix uri list locking (again) + * add nfs mount protocol default configuration option + * fix bad token declaration in master map parser + * fix double free in expire_proc() + * fix file map lookup when reading included or nsswitch sources + * fix memory leak reading master map + * fix st_remove_tasks() locking + * dont umount existing direct mount on master re-read + * fix incorrect shutdown introduced by library relaod fixes + * fix not releasing resources when using submounts + * fix double free in sasl_bind() + * fix map type info parse error + * fix an RPC fd leak + * fix pthread push order in expire_proc_direct() + * fix libxml2 non-thread-safe calls + * fix direct map cache locking + * fix dont umount existing direct mount on reread. +- update 5.0.5 upstream patches to 20091124: + * add mount wait parameter + * don't use master_lex_destroy() to clear parse buffer + * fix backwards #ifndef INET6 + * fix ext4 fsck at mount + * fix included map read fail handling + * fix libxml2 workaround configure + * fix pidof init script usage + * fix stale initialization for file map instance + * fix timeout in connect_nb() + * make documentation for set-log-priority clearer + * refactor ldap sasl bind + * special case cifs escapes. + +------------------------------------------------------------------- +Fri Jun 19 07:08:43 CEST 2009 - cmorve69@yahoo.es + +- fixed build with --as-needed + +------------------------------------------------------------------- +Thu May 14 12:21:09 CEST 2009 - werner@suse.de + +- Add nfsserver to should start/stop in rc script (bnc#467906) + +------------------------------------------------------------------- +Thu Apr 9 16:10:27 CEST 2009 - werner@suse.de + +- make sure that submounts are not busy anymore (bnc#467906) + +------------------------------------------------------------------- +Thu Feb 12 12:40:06 CET 2009 - mkoenig@suse.de + +- add script to fetch upstream patches + +------------------------------------------------------------------- +Wed Feb 4 15:31:19 CET 2009 - mkoenig@suse.de + +- update to version 5.0.4 (just version bump, since all 5.0.3 + upstream patches had been already applied) +- update 5.0.4 upstream patches to 20090122: + * fix dumb libxml2 check + * fix nested submount expire deadlock. + * fix negative caching for non-existent map keys. + * use CLOEXEC flag. + * fix select(2) fd limit. + * make hash table scale to thousands of entries (Paul Wankadia, + Valerie Aurora Henson). + * clear the quoted flag after each character from program map input. +- remove patch + autofs-5.0.1-mount_xdr_no_strict_aliasing.patch + +------------------------------------------------------------------- +Tue Jan 27 18:14:48 CET 2009 - kukuk@suse.de + +- Add aaa_base to PreReq. + +------------------------------------------------------------------- +Fri Jan 23 15:49:14 CET 2009 - coolo@suse.de + +- don't rely on huge perl script to check if autofs is active + +------------------------------------------------------------------- +Thu Jan 22 11:42:35 CET 2009 - mkoenig@suse.de + +- apply all 5.0.3 upstream patches which include a couple + critical bugfixes: +- fix segfault due to empty hostlist [bnc#466167] +- fixes for submount shutdown +- use /dev/urandom +- fix problems if /etc/mtab points to /proc/mounts +- dynamically allocate interface config buffer +- fix percent hack +- handle zero length nis key update +- fix file handle being left open following a multi-mount non-fatal + mount fail +- fix case where an incorrect mount point path was being used when + mounting a multi-mount component +- Fix incorrect match of map type as a host name +- fix map out of order map re-read on hup signal. +- fix nisplus error return check and use after free error. +- fix rootless direct multi-mount expire. +- wait submount expire thread completion +- add missing uris list locking +- fix master map lexer eval order +- fix bad alloca usage + +------------------------------------------------------------------- +Thu Jan 8 14:33:41 CET 2009 - mkoenig@suse.de + +- fix segfault on HUP [bnc#458336] + +------------------------------------------------------------------- +Fri Oct 24 18:06:29 CEST 2008 - mkoenig@suse.de + +- fix syntax error in init script [bnc#435505] + +------------------------------------------------------------------- +Fri Aug 15 16:22:49 CEST 2008 - mkoenig@suse.de + +- build with --enable-ignore-busy +- add init script action force-expire to force the expire + of mounted filesystems +- add init script action force-stop for forced shutdown with + lazy umount of busy filesystems +- use force-stop on shutdown +- Don't kill all processes on busy filesystems anymore, + as we do a lazy umount, this might not be needed and + reduces shutdown overhead + +------------------------------------------------------------------- +Mon Aug 11 14:28:40 CEST 2008 - mkoenig@suse.de + +- update upstream patches 20080806 +- remove patch + autofs-5.0.3-allow_rootfs_nonlocal.patch + +------------------------------------------------------------------- +Thu Jun 26 16:59:17 CEST 2008 - mkoenig@suse.de + +- update upstream patches 20080528 +- allow rootfs to be non-local [bnc#399944] +- remove patch + autofs-5.0.3-aclocal_pthread.patch + +------------------------------------------------------------------- +Fri May 16 16:31:01 CEST 2008 - mkoenig@suse.de + +- more shutdown improvements to minimize the risk of mounted + leftovers in the shutdown process + differentiate between direct/indirect mounts + enforce lazy umount since USR2 seems not to work currently + +------------------------------------------------------------------- +Mon Apr 21 17:10:26 CEST 2008 - mkoenig@suse.de + +- improve shutdown in init script + +------------------------------------------------------------------- +Wed Jan 30 09:23:58 CET 2008 - mkoenig@suse.de + +- link LDAP lookup module with krb5 if build with SASL [bnc#356599] + +------------------------------------------------------------------- +Thu Jan 17 15:41:30 CET 2008 - mkoenig@suse.de + +- update to version 5.0.3 + * quell annoying "cannot open mount module" message. + * fix for improve handling of server not available. + * use mount option "nodev" for "-hosts" map unless "dev" is + explicily specified. + * add LDAP paged query handling to deal with query size restrictions + * add additional case for "mark map instances stale so they aren't + "cleaned" during updates". + * fix race during sub-mount shutdown. + * fix add SEARCH_BASE configuration option. + * update kernel patches. +- update upstream patches (20080117) + * correct configure test for ldapr page control functions. + * catch "-xfn" map type and issue "no supported" message. +- fix configure check +- add krb5-devel and libxml2-devel to BuildRequires + +------------------------------------------------------------------- +Mon Dec 17 12:38:25 CET 2007 - mkoenig@suse.de + +- update upstream patches + * fix off-by-one error for lookup of map keys exactly + 255 characters long + * improve handling of server not available + * fix LDAP_URI server selection + * add authentication option for using an external credential cache + * expand support for the "%" hack + * fix to quoting for exports gathered by hosts map + * use mount option "nosuid" for "-hosts" map unless "suid" is + explicily specified + * second attempt fixing quoting for exports gathered by hosts map +- merged autofs-5.0.2-size_fix.patch + +------------------------------------------------------------------- +Tue Nov 20 17:16:31 CET 2007 - mkoenig@suse.de + +- fix buffer overflow [#341626] + +------------------------------------------------------------------- +Thu Nov 15 17:06:21 CET 2007 - dmueller@suse.de + +- add recommends on nfs-client + +------------------------------------------------------------------- +Wed Nov 14 18:37:39 CET 2007 - mkoenig@suse.de + +- fix version + +------------------------------------------------------------------- +Fri Nov 9 13:11:07 CET 2007 - mkoenig@suse.de + +- update upstream patches which include several bugfixes. +- fix build of debuginfo package, in which the info for the + daemon has been missing + +------------------------------------------------------------------- +Thu Oct 18 12:02:15 CEST 2007 - mkoenig@suse.de + +- add $portmap to ShouldStart [#331615] +- fix problem with nested mounts [#128083] + +------------------------------------------------------------------- +Wed Sep 19 15:34:46 CEST 2007 - mkoenig@suse.de + +- fix last change [#309123] + +------------------------------------------------------------------- +Mon Sep 17 16:58:35 CEST 2007 - mkoenig@suse.de + +- kill processes which keep filesystem busy on shutdown [#309123] + +------------------------------------------------------------------- +Wed Jul 25 12:33:33 CEST 2007 - mkoenig@suse.de + +- add BuildRequires e2fsprogs + and mention modules to be build explicitly in %files + +------------------------------------------------------------------- +Thu Jul 19 11:03:43 CEST 2007 - mkoenig@suse.de + +- new sysconfig parameters LOCAL_OPTIONS and APPEND_OPTIONS + support for default mount options to optionally are appended + to master map options or replace them. +- enable LFS support to avoid problems with mount expires + +------------------------------------------------------------------- +Thu Jul 5 12:24:23 CEST 2007 - mkoenig@suse.de + +- update to version 5.0.2: + * bugfix release +- new upstream patches + autofs-5.0.2-add-krb5-include.patch + autofs-5.0.2-bad-proto-init.patch + autofs-5.0.2-add-missing-multi-support.patch + autofs-5.0.2-add-multi-nsswitch-lookup.patch +- removed patch (merged upstream) + autofs-5.0.1-fix_contained_check.patch + +------------------------------------------------------------------- +Thu Apr 26 17:21:12 CEST 2007 - mkoenig@suse.de + +- update to version 5.0.1: + * autofs5 is a major rewrite + * many new features to be more compliant with industry standard: + + improved direct mount map support + + '+' map inclusion + + added nsswitch map source support + + rewrote multi-mount map code + + added LDAP encryption and authentication support + + improved shutdown and restart + + a "hosts" map module has been added +- add gssd dependencies in init script [#249779] + +------------------------------------------------------------------- +Tue Mar 6 12:12:02 CET 2007 - mkoenig@suse.de + +- Fix last upstream patch which introduced a problem for + filesystems defined in fstab by LABEL or UUID [#244945] +- Fix killing of processes on stop [#249770] + +------------------------------------------------------------------- +Wed Jan 31 15:38:19 CET 2007 - mkoenig@suse.de + +- add upstream patch autofs-4.1.4-dont_create_remote_dirs.patch + Checks first for the directory to create in order to avoid + problems with different mkdir behaviour, resolves [#229607] + +------------------------------------------------------------------- +Mon Jan 29 16:59:17 CET 2007 - mkoenig@suse.de + +- remove the introduced -multi option, because this issue has + been fixed upstream in a different way. + add autofs-4.1.4-multi_parse_fix.patch, resolves [#232855] + +------------------------------------------------------------------- +Thu Nov 30 17:47:30 CET 2006 - mkoenig@suse.de + +- add NetworkManager dispatcher script [#173990] +- fix possible buffer overflow + +------------------------------------------------------------------- +Wed Oct 4 16:35:36 CEST 2006 - jeffm@suse.com + +- Fixed nfs mount connect retry fallback (195924) +- Fixed e2fsck error handling (196057) + +------------------------------------------------------------------- +Tue Sep 12 15:08:04 CEST 2006 - schwab@suse.de + +- Clean up init script. + +------------------------------------------------------------------- +Tue Sep 12 14:41:06 CEST 2006 - ro@suse.de + +- fix typo in comment for previous change + +------------------------------------------------------------------- +Tue Sep 12 14:35:38 CEST 2006 - ro@suse.de + +- add previous defaults to newly added variable names in rcscript + +------------------------------------------------------------------- +Thu Sep 7 21:26:00 CEST 2006 - jeffm@suse.com + +- Added -multi option to enable consistent mount + behavior when using auto.net (118902) + +------------------------------------------------------------------- +Tue Aug 29 15:22:32 CEST 2006 - jeffm@suse.com + +- Fixed --timeout= handling (117672) +- Fixed forced expiry handling (SIGHUP vs SIGUSR1) (177068) + +------------------------------------------------------------------- +Wed Aug 23 20:20:45 CEST 2006 - jeffm@suse.com + +- Added configurable locking patch (178308) + +------------------------------------------------------------------- +Fri May 26 19:23:45 CEST 2006 - schwab@suse.de + +- Fix broken makefile. + +------------------------------------------------------------------- +Sat May 20 15:52:56 CEST 2006 - schwab@suse.de + +- Don't strip binaries. + +------------------------------------------------------------------- +Wed May 17 18:47:56 CEST 2006 - seife@suse.de + +- Add README.NetworkManager [#175935] + +------------------------------------------------------------------- +Tue Feb 28 15:16:04 CET 2006 - cthiel@suse.de + +- fix post script + +------------------------------------------------------------------- +Wed Feb 1 17:38:29 CET 2006 - rhafer@suse.de + +- Support for ':' in ldap mapentries [#117297] + +------------------------------------------------------------------- +Wed Jan 25 21:34:32 CET 2006 - mls@suse.de + +- converted neededforbuild to BuildRequires + +------------------------------------------------------------------- +Wed Nov 23 10:34:14 CET 2005 - varkoly@suse.de + +- Add -fno-strict-aliasing to the CFLAGS + +------------------------------------------------------------------- +Mon Nov 14 08:46:14 CET 2005 - varkoly@suse.de + +- Bugfix: bad example ldif. + +------------------------------------------------------------------- +Mon Sep 26 01:25:24 CEST 2005 - ro@suse.de + +- added LDAP_DEPRECATED to compile flags + +------------------------------------------------------------------- +Thu Sep 1 11:07:45 CEST 2005 - choeger@suse.de + +- Bugfix ID#112779 - autofs uses /etc/openldap/ldap.conf instead of + /etc/ldap.conf + +------------------------------------------------------------------- +Thu Aug 25 16:56:06 CEST 2005 - kukuk@suse.de + +- Add ldap to Should-Start [#112984] + +------------------------------------------------------------------- +Thu Aug 11 11:49:17 CEST 2005 - mmj@suse.de + +- make sure autofs is enabled after an update [#102944] +- don't support upgrading from <= SuSE Linux 7.3 anymore + +------------------------------------------------------------------- +Sat Jul 23 16:52:26 CEST 2005 - trenn@suse.de + +- move /usr/lib64/autofs/autofs-ldap-auto-master to /usr/lib/autofs + on x86_64 systems + +------------------------------------------------------------------- +Fri Jun 17 09:22:04 CEST 2005 - kukuk@suse.de + +- Rename from autofs4 to autofs + +------------------------------------------------------------------- +Tue Jun 14 10:31:49 CEST 2005 - kukuk@suse.de + +- Remove broken "singnal-race" patch [#90521] + +------------------------------------------------------------------- +Mon May 23 00:12:23 CEST 2005 - ro@suse.de + +- update to 4.1.4, remove upstream patches + +------------------------------------------------------------------- +Sun May 15 13:24:29 CEST 2005 - aj@suse.de + +- Initialize variables. + +------------------------------------------------------------------- +Wed Apr 27 14:03:24 CEST 2005 - meissner@suse.de + +- use RPM_OPT_FLAGS + +------------------------------------------------------------------- +Thu Apr 7 14:37:43 CEST 2005 - kukuk@suse.de + +- Remove autofs-4.1.0-loop.patch, it is wrong. + +------------------------------------------------------------------- +Fri Mar 04 15:00:24 CET 2005 - arvin@suse.de + +- use our good old init script (bug #67311) + +------------------------------------------------------------------- +Fri Mar 04 14:41:20 CET 2005 - arvin@suse.de + +- fixed syntax of sysconfig.autofs (bug #70883) + +------------------------------------------------------------------- +Fri Feb 25 22:17:10 CET 2005 - mmj@suse.de + +- LSB says return value for not running service is 7 [#65817] + +------------------------------------------------------------------- +Thu Dec 9 18:28:44 CET 2004 - ihno@suse.de + +- Update to version 4.1.3 plus patches + +------------------------------------------------------------------- +Tue Jun 22 14:22:12 CEST 2004 - ro@suse.de + +- remove nfslock dependency from startscript + +------------------------------------------------------------------- +Mon Apr 19 10:42:14 CEST 2004 - arvin@suse.de + +- make AutoBuild happy + +------------------------------------------------------------------- +Fri Oct 31 15:05:44 CET 2003 - arvin@suse.de + +- build rpm as non-root user + +------------------------------------------------------------------- +Fri Oct 24 12:19:47 CEST 2003 - arvin@suse.de + +- updated to version 4.0.0 + +------------------------------------------------------------------- +Wed Oct 22 12:20:10 CEST 2003 - arvin@suse.de + +- fixed truncation of LDAP search DN after whitespace (bug #31847) + +------------------------------------------------------------------- +Mon Aug 18 12:54:32 CEST 2003 - arvin@suse.de + +- added activation metadata (bug #28838) + +------------------------------------------------------------------- +Mon Jul 28 20:39:06 CEST 2003 - arvin@suse.de + +- added documentation about syntax of auto.master file + +------------------------------------------------------------------- +Wed Apr 23 15:59:16 CEST 2003 - arvin@suse.de + +- adapted option for sort in auto.net to new coreutils + +------------------------------------------------------------------- +Mon Apr 14 14:41:13 CEST 2003 - arvin@suse.de + +- faster shutdown of service autofs (bug #25790) + +------------------------------------------------------------------- +Fri Apr 11 17:22:03 CEST 2003 - arvin@suse.de + +- fixed handling of certain yp maps (bug #26274) + +------------------------------------------------------------------- +Wed Feb 05 15:12:00 CET 2003 - arvin@suse.de + +- set syslogmask back to not include debug messages + +------------------------------------------------------------------- +Tue Jan 21 17:18:34 CET 2003 - mc@suse.de + +- add a patch to support ldap v3 + +------------------------------------------------------------------- +Mon Jan 20 15:56:28 CET 2003 - arvin@suse.de + +- strip autofs-ldap-auto-master tool + +------------------------------------------------------------------- +Mon Jan 20 15:28:05 CET 2003 - mc@suse.de + +- add better ldap support +- add ldap schema patch to support the nis schema with ldap +- add the Linux autofs.schema +- add a README about autofs and ldap + +------------------------------------------------------------------- +Thu Dec 19 20:26:23 CET 2002 - arvin@suse.de + +- added sysconfig metadata (bug #22615) +- better description in start script for runlevel editor + (bug #21894) +- nicer output of init script +- start: check if daemon runs and export skipped if not configured + +------------------------------------------------------------------- +Mon Sep 02 11:41:55 CEST 2002 - arvin@suse.de + +- remove lock file during stop even if no daemon is running + (bug #18699) + +------------------------------------------------------------------- +Tue Aug 27 17:39:10 CEST 2002 - arvin@suse.de + +- commented auto.misc entry in auto.master (bug #18434) + +------------------------------------------------------------------- +Mon Aug 26 10:53:56 CEST 2002 - arvin@suse.de + +- include special dirs in package + +------------------------------------------------------------------- +Fri Aug 23 11:04:01 CEST 2002 - arvin@suse.de + +- honor RPM_OPT_FLAGS +- moved plugins to %{_libdir}/autofs + +------------------------------------------------------------------- +Wed Aug 7 17:32:51 CEST 2002 - ro@suse.de + +- added Should-Start nfslock in rcscript (#17425) + +------------------------------------------------------------------- +Thu Aug 01 12:45:59 CEST 2002 - arvin@suse.de + +- added requires and prerequires + +------------------------------------------------------------------- +Mon Jul 22 10:57:51 CEST 2002 - sf@suse.de + +- updated auto_fs.h to actual version of kernel + +------------------------------------------------------------------- +Thu Jul 18 11:10:43 CEST 2002 - arvin@suse.de + +- moved ypbind and keyserv to Should-Start in init script + (bug #17064) + +------------------------------------------------------------------- +Mon Feb 25 14:12:18 CET 2002 - arvin@suse.de + +- added option expire to init script (unmount all currently + not used mounts) + +------------------------------------------------------------------- +Sat Feb 16 23:45:52 CET 2002 - arvin@suse.de + +- fixed start/stop message + +------------------------------------------------------------------- +Fri Feb 15 16:39:18 CET 2002 - arvin@suse.de + +- simplify remove_and_set call + +------------------------------------------------------------------- +Fri Feb 15 13:58:35 CET 2002 - arvin@suse.de + +- better examples in /etc/auto.misc + +------------------------------------------------------------------- +Fri Feb 01 16:20:08 CET 2002 - arvin@suse.de + +- fixed restart and force-reload to stop and start the service + (bug #13019) + +------------------------------------------------------------------- +Wed Jan 23 12:01:53 CET 2002 - arvin@suse.de + +- don't use default value of yes for removal of USE_NIS_FOR_AUTOFS + +------------------------------------------------------------------- +Sat Jan 19 21:03:19 CET 2002 - arvin@suse.de + +- read mount types to query from /etc/nsswitch.conf + +------------------------------------------------------------------- +Wed Jan 16 16:02:57 CET 2002 - arvin@suse.de + +- compile ldap lookup + +------------------------------------------------------------------- +Wed Dec 12 17:16:38 CET 2001 - ro@suse.de + +- moved rc.config.d -> sysconfig + +------------------------------------------------------------------- +Mon Dec 03 11:07:59 CET 2001 - arvin@suse.de + +- source /etc/rc.status in init script + +------------------------------------------------------------------- +Fri Nov 23 11:32:54 CET 2001 - ro@suse.de + +- correct (and simplify) insserv macro call + +------------------------------------------------------------------- +Wed Nov 21 15:03:16 CET 2001 - arvin@suse.de + +- removed rc-variable START_AUTOFS + +------------------------------------------------------------------- +Sat Nov 17 15:24:04 CET 2001 - arvin@suse.de + +- Added keyserv to Required-Start (bug #12233) + +------------------------------------------------------------------- +Thu Sep 6 18:33:03 CEST 2001 - kukuk@suse.de + +- Use $network, $syslog and add $remote_fs [Bug #9908] + +------------------------------------------------------------------- +Wed Sep 5 18:48:46 CEST 2001 - bjacke@suse.de + +- correct name of autosf.rc.config + +------------------------------------------------------------------- +Fri Aug 31 19:14:30 CEST 2001 - arvin@suse.de + +- ignore direct maps (bug #9978) + +------------------------------------------------------------------- +Mon Jul 30 14:49:50 CEST 2001 - arvin@suse.de + +- read /etc/rc.config.d/autofs.rc.config in init script + +------------------------------------------------------------------- +Mon Jul 30 14:08:32 CEST 2001 - arvin@suse.de + +- create /etc/rc.config.d/autofs.rc.config (bug #9471) + +------------------------------------------------------------------- +Mon Jul 23 12:54:21 CEST 2001 - arvin@suse.de + +- LSB compliant init script (bug #8973) +- files and executable maps for nis and nisplus (bug #8984) + +------------------------------------------------------------------- +Wed May 16 19:00:08 CEST 2001 - arvin@suse.de + +- fixed compile warnings on ia64 + +------------------------------------------------------------------- +Mon Apr 30 15:23:06 CEST 2001 - arvin@suse.de + +- unset PS_PERSONALITY and CMD_ENV in init script (fix for + bug #7436) + +------------------------------------------------------------------- +Sun Apr 22 15:52:34 CEST 2001 - arvin@suse.de + +- update to autofs 4.0.0pre10 + +------------------------------------------------------------------- +Wed Apr 18 14:24:40 CEST 2001 - arvin@suse.de + +- increased blocksize to 8k in auto.net + +------------------------------------------------------------------- +Tue Apr 17 12:54:30 CEST 2001 - arvin@suse.de + +- remove old provides + +------------------------------------------------------------------- +Tue Apr 17 11:42:33 CEST 2001 - arvin@suse.de + +- renamed package to autofs4 (no provides or obsoletes, since + autofs version 3 will be used by default) + +------------------------------------------------------------------- +Mon Apr 09 16:07:00 CEST 2001 - arvin@suse.de + +- fixed restart function in init script + +------------------------------------------------------------------- +Fri Mar 9 14:41:43 CET 2001 - arvin@suse.de + +- added note in /etc/auto.master (bug #6660) +- use test -x instead of test -e in init script + +------------------------------------------------------------------- +Thu Mar 1 01:16:37 CET 2001 - ro@suse.de + +- fixed neededforbuild + +------------------------------------------------------------------- +Tue Feb 13 12:03:55 CET 2001 - arvin@suse.de + +- fixed killing of processes using autofs during shutdown + +------------------------------------------------------------------- +Fri Jan 12 18:55:54 CET 2001 - arvin@suse.de + +- changed start point in init script (fix for bug #5622) + +------------------------------------------------------------------- +Tue Jan 2 12:01:45 CET 2001 - arvin@suse.de + +- clear mountoptions in loop for reading auto.master in init script + +------------------------------------------------------------------- +Tue Nov 28 11:22:45 CET 2000 - arvin@suse.de + +- kill processes using automounted filesystems when going + into runlevel 0 or 6 + +------------------------------------------------------------------- +Mon Nov 27 12:09:59 CET 2000 - arvin@suse.de + +- moved init script from /sbin/init.d to /etc/init.d + +------------------------------------------------------------------- +Wed Nov 22 17:08:00 CET 2000 - arvin@suse.de + +- use insserv in post-install for creating init.d scripts +- fixed parsing of "--timeout" option in /etc/auto.master, + partly fix for bug #4356 + +------------------------------------------------------------------- +Wed Nov 8 18:49:30 CET 2000 - arvin@suse.de + +- turned off debug messages to syslogd + +------------------------------------------------------------------- +Thu Nov 2 19:34:55 CET 2000 - arvin@suse.de + +- added option nonstrict in auto.net + +------------------------------------------------------------------- +Thu Nov 2 11:20:44 CET 2000 - arvin@suse.de + +- new version 4.0.0pre9 + +------------------------------------------------------------------- +Tue Oct 24 11:30:35 CEST 2000 - arvin@suse.de + +- new version 4.0.0pre8 + +------------------------------------------------------------------- +Tue Oct 24 00:48:51 CEST 2000 - bk@suse.de + +- remove the annoying dequote debug message(filled the logs without errors) + +------------------------------------------------------------------- +Mon Oct 16 01:31:00 CEST 2000 - ro@suse.de + +- showmount does no longer have the k-prefix + +------------------------------------------------------------------- +Fri Oct 6 10:45:45 CEST 2000 - schwab@suse.de + +- Avoid OPEN_MAX. + +------------------------------------------------------------------- +Wed Sep 27 17:24:21 CEST 2000 - arvin@suse.de + +- even more improved auto.net + +------------------------------------------------------------------- +Tue Sep 26 15:13:29 CEST 2000 - arvin@suse.de + +- improved auto.net +- changed to bz2 source archive + +------------------------------------------------------------------- +Thu Sep 21 12:21:17 CEST 2000 - arvin@suse.de + +- fixed rcautofs (some lines in status were truncated) + +------------------------------------------------------------------- +Tue Sep 19 18:59:19 CEST 2000 - arvin@suse.de + +- fixed bug #3842 (wrong option to mount; was actually random data) + +------------------------------------------------------------------- +Tue Aug 22 23:31:04 CEST 2000 - ro@suse.de + +- changed neededforbuild: knfsd -> nfsutils + +------------------------------------------------------------------- +Thu Jul 6 10:23:46 CEST 2000 - kukuk@suse.de + +- Fix path to showmount in /etc/auto.net + +------------------------------------------------------------------- +Mon May 8 13:48:19 CEST 2000 - rolf@suse.de + +- new version 4.0.0pre7 +- fix bug in rcautofs [BUG#2737] + +------------------------------------------------------------------- +Sat Feb 26 18:10:57 CET 2000 - kukuk@suse.de + +- Add patch from beta list for multiple entries + +------------------------------------------------------------------- +Tue Feb 15 16:22:20 CET 2000 - kukuk@suse.de + +- Include own showmount +- Update to autofs 4.0.0pre6 + +------------------------------------------------------------------- +Sun Jan 30 17:43:21 CET 2000 - kukuk@suse.de + +- Update to autofs 4.0.0pre2 +- Add rc.config variable for autofs options (like --timeout) +- Add NIS+ support to /sbin/init.d/autofs +- Mark /etc/auto.* files as %config(noreplace) +- Add /etc/auto.net (needs new autofs kernel module) + +------------------------------------------------------------------- +Fri Nov 5 16:07:02 MET 1999 - rolf@suse.de + +- added flag to switch NIS usage for maps [BUG#1074] + +------------------------------------------------------------------- +Mon Oct 25 23:29:41 CEST 1999 - ro@suse.de + +- specfile-fix: no need for %dir /usr/lib/autofs, if that whole tree + is packed + +------------------------------------------------------------------- +Mon Oct 25 15:55:37 MEST 1999 - rolf@suse.de + +- status now tells whether process is running [BUG#732] + +------------------------------------------------------------------- +Sat Oct 23 17:05:46 MEST 1999 - kukuk@suse.de + +- Fix problems with new samba 2.0.x versions [BUG#361] +- Fix typos and loop problem + +------------------------------------------------------------------- +Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de + +- ran old prepare_spec on spec file to switch to new prepare_spec. + +------------------------------------------------------------------- +Tue Jun 22 15:52:03 MEST 1999 - kukuk@suse.de + +- added lookup_nisplus.so, mount_autofs.so, mount_ext2.so + +------------------------------------------------------------------- +Wed Dec 9 11:41:24 MET 1998 - rolf@suse.de + +- added /usr/sbin/rcautofs + +------------------------------------------------------------------- +Fri Nov 27 14:08:54 MET 1998 - rolf@suse.de + +- mount timeout added in init script + +------------------------------------------------------------------- +Tue Nov 24 12:40:58 MET 1998 - rolf@suse.de + +- new version 3.1.3 +- modified init script +- unset localoptions + +------------------------------------------------------------------- +Sat Sep 19 19:24:21 MEST 1998 - ro@suse.de + +- define _GNU_SOURCE where getopt_long is used + +------------------------------------------------------------------- +Fri Apr 17 09:43:06 MEST 1998 - rolf@suse.de + +- set localoptions to rsize=8192,wsize=8192 + cleaned up /etc/auto.misc + +------------------------------------------------------------------- +Mon Apr 6 14:38:41 MEST 1998 - ro@suse.de + +- update to 3.1.0 + +------------------------------------------------------------------- +Mon Mar 2 13:21:56 MET 1998 - ro@suse.de + +- marked startscript and files in etc as config + +------------------------------------------------------------------- +Mon Feb 9 16:18:06 MET 1998 - rolf@suse.de + +- fixed startup script in /sbin/init.d/ for restart + +------------------------------------------------------------------- +Wed Nov 12 11:17:08 MET 1997 - rolf@suse.de + +- minor big fix + +------------------------------------------------------------------- +Thu Oct 16 20:16:31 MEST 1997 - rolf@suse.de + +- new version autofs-0.3.14 + +------------------------------------------------------------------- +Thu Sep 11 11:18:43 MEST 1997 - rolf@suse.de + +- made package from autofs-0.3.9 diff --git a/autofs.keyring b/autofs.keyring new file mode 100644 index 0000000..2fb69cc --- /dev/null +++ b/autofs.keyring @@ -0,0 +1,169 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - http://gpgtools.org + +mQINBE6c/ycBEADdYbAI5BKjE+yw+dOE+xucCEYiGyRhOI9JiZLUBh+PDz8cDnNx +cCspH44oE7oTH0XPn9f7Zh0TkXWA8G6BZVCNifG7mM9K8Ecp3NheQYCk488ucSV/ +dz6DJ8BqX4psd4TIgpcs2iDQlg5CmuXDhc5z1ztNubv8hElSlFX/4l/U18OfrdTb +bcjF/fivBkzkVobtltiL+msNbDq5S0K2KOxRxuXGaDShvfbz6DnajoVLEkNgEnGp +SLxQNlJXdQBTE509MA30Q2aGk6oqHBQvzxjVyOu+WLGPSj7hF8SdYOjizVKIARGJ +zDy8qT4v/TLdVqPa2d0rx7DFvBRzOqYQL13/ZviekuGbj3XvFibVt2ecS87WCJ/n +lQxCa0KjGy0eb3i4XObtcU23fnd0ieZsQs4uDhZgzYB8LNudWXx9/Q0qsWfvZw7h +EdPdPRBmwRmt2O1fbfk5CQN1EtNgS372PbOjQHaIV6n+QQP2ELIa3X5ZRnyaXyzw +aCt6ETUHTslEaR9nOG6N3sIohIwlIywGK6WQmRBPyz5X1oF2Ld9E0crlaZYFPMRH +hQtFxdycIBpTlc59g7uIXzwRx65HJcyBflj72YoTzwchN6Wf2rKq9xmtkV2Eihwo +8WH3XkL9cjVKjg8rKRmqIMSRCpqFBWJpT1FzecQ8EMV0fk18Q5MLj441yQARAQAB +tBtJYW4gS2VudCA8aWtlbnRAcmVkaGF0LmNvbT6IRgQQEQIABgUCTp47fgAKCRB5 +Zmbs1L7piRwSAJwOCiNFPdL/gWUg4GeRfKgmWHnNLgCaA0TOMRefp7OUu07HvZRg +vpSm1sOJAhwEEAECAAYFAk7KccAACgkQAA5oQRlWghXvMA/+MRuFQX8USjReIXM7 +1VpqlH3RVrrYNxd/OuF/2Hk1GHen6nsCkgqbqkysPjD6Vv6j8b3mLd3o4JIkOpjg +MzTafiC5ngwf2LYQMQqf7xjmAzcgnz5tJyQCtTj8ct9BpxUVFAHTKmuDpa3m0Nqr +EifEuwcYWqB8aVsYd4TxNizS6crWhubZUxLe/HPweOoxXrzTKwg+J7D1q0RYOGjI +TuxGoScRTGR8YU3ApDyN4p+ak75y1ALV8twg1VVTXQjBNEWL74MaO/EkUE55N25r +oYZXu55s9f4uny8hzBUXEBYyoRJAdUp0ZqgDQp0kCPjcwneRgUOlpPQPBd7BRS1/ +ljtg0700+Gun7C+MsahXB4qj2/tmrEF1BsD/JgPJT7l20KJDQgR/wThgRVE5i855 +So9db9XPpc3MgXt9Jj6XuqICAzbvtLoNqhTo+cycoD3lXxGkRIXfdf/MWeUD6r4j +6aZRw4i240wLaKnJMUDsoBwWn0FV396SV4db+9d7ZQetQYIHjuNjzuEWP1Ng7adU +CGq8MieQEIXbcX/W5fWjmy94MI38PGe83oFGpHc68FXJCNGuehNwMFlRqLo1uixy +E3X8160qkEYaWsqQ9jCqFyMijF6MrUOKu4CWCs264cPxAdhyuKzmHr/Q2ViZrUoe +TQYcBGG/uG9QheyZKT+bw7VmkRWJAhwEEAECAAYFAk7OJEQACgkQ+7dXa6fLC2vn ++Q//agUlZMaXO7rp18SF6Qqp0P6IQRtKniiXu4x6sFopJbC/o2ZUBVfxMYEpVQ7I +yIR58rVP5i8zPoVsHmn2zrmlggyIi2muDy66da7N5SFPBbqf5YLuMnI1dO5bn1Ri +pice2DeuSpsMQDGqJOyouhhHrlqGVS3W6NzYRmTU5/kqgK0rgNh0n5O9IqARU8T9 +HvzzB89fp0wcEoLP6pbgiOwSiWQd3Ux89m+S8IWK/iJvkqqvsD/r0F+W/+Qi1QHl +RFiwQtNCOYfyoRl3iqfH9t+oHCJUvv+t2VN5hAh2X5GYM97Os8gBbNASOLeksGEi +gJL2Z8OsUgJQhXB/5pBTlkgAS/kKbgZUzbA2Zj/uqmjreslHCbhVflbdyRzBV65g +M1uLzIu46YfmVTg+m9L3KpRQgM7pBKp8dvFsf73R4v7t47nyzic8R/bBk/BcaFUw +lbFqOMLPItQiF7eFy3/GpTci5DceNvGc5jBqEHWQ5gztgSGYVq6V1DdFuRgFaLR6 +XR6OZO5QcVRsufPj2/zDdZcLz0yAOzElq+UHuiAUIthjkN3Ip7fuJScOH27TJGFy +V9Ob1QDnmZ5Us1mtGQvrs7Y6NUCXml3Dm3hWRzwHyC9Dq0J9Q+fGOiRZaJqUavLI +LMKFVsSI5PTt/ZrDv81z1eFgMqhHAmTFbqJo09qt7Y649aqJAhwEEAECAAYFAk7c +3tsACgkQmvsdaBoSUXcrlhAAlAMBI7rsTWPjUi8Y5uZNps5oYaSt2NI/pnKnL3Hr +Ype6OvDT2LKCF0U9dlKQOiel2BJKe7s3Q0rRE4FoMWCbZ3tESnhno2r8NGyx3O+V +GSQMCIMll9/1fakbmP29oYNz/li5fjbE7vvNfzxbwcfG2u6jD+9hm79qvUtq7ATY +/05+7qi/cJDhPa8gTyZbiGptlV0hjNA7HXHlbi8eAPCxPmyrGhv64hA8HsV5XR9o +1S2mla5YIQvHbhoMxBJuwwTiTnjSA0xA7q9ulx28HmM3YQ0r0gKuJtfvccx/ThHs +6SjvQ+qAYrANYoD9Q77yCXNT/tC45F46BJAM66Y4WL9qrZFh/gItisv6Qz+gKUvO +4aRTuLYE/W1MYQJOhioMowZPuLn4p0/xKbYk7phtU9l8Difn8cKTkV6MRnxRjH8D +57/+jI5tjKjkDtLP4bhoudUhfH8jfBxforTAOOaRtZQHLeHV9idnrl0INtp4zDIs +GwP1XRTNmf15MDatRAVtHyD6CCK0UK9G0Y4R3IRohe2uC43t8DMkf4Fv+v/W2bmm +ebOuotzuuRxwZJb5DBphrpSITrA7NpCDPQvA+HHCaezx21fqUUQbcbJuoJ7VTxa6 +hwpMrPHitb1IUHpch5SnguTeWT+kWh4w+3VuBOokqXSzsgF3F8xVpmK3jaGP4HG1 +KXGJAhwEEwEIAAYFAk7KfskACgkQf9n8ywAL7u6Fow/5AWA1PXBAJXqTxrKPkOS4 +BF3WQwsx0CWn4KPD8ZVweEssUdQNrFhNR+MSQteDZjBXeinvCAGlhQ81KP7kAwTD +1MkESGitw0dbtFnF05903b2al3WvCbEdZctcRw/EO/PfiDtsB0sc78X4RC2ZlY0B +X75tCSqM0IguEFdvAa1K6aDwLoNueiGG/LFAHLGRQQigOrV5oz8GVr0qpymLmLIO +BFG6ixm+UVebC0N3ThiYhc72YtUCby0Nc4eR92hdWmUuXHlYVnPvupmvDKirojS9 +jK0rPrRRie0WiGaHCDxrxvyCd7FRnrpNfnzrjVNtVH8Xwf56UgPfevF/3GBoBQ4w +wapfZ6gv2N2t0zB97o7EnbjRf8Gakj2MVIa7HPBiOXxz0Qyb9t7UPz3EHd3EMvXZ +t2EFjTDlOLK7vYRtRfmBEQJgQQrubMhyxJz4b920dX47P1mlpO2KuBR5/XL3S2QJ +AsS45mG9ZMVNm9yUrZ1GofvLkFkoa2UKdH5mnpmtUAF0GpuLck+IvFWjo5SNtcIf +vZRVUpHv0SAK9DrJ3iTFRAWqG6HtmHf62DCuLdkMKasXByDdLOaGUw16H5vCPqlk +966rIEcJeD2fzFY2RabuhjFUiptLApysySpr6DD7JWuWzc/6OpMBReo1syQpVTs3 +UVS4YXNsZUKX1NoZqdNh8zSJAjgEEwECACIFAk6eM44CGwMGCwkIBwMCBhUIAgkK +CwQWAgMBAh4BAheAAAoJEOdnc4D1T9ipMWwP/1FJJWjVYZekg0QOBixULBQ9Gx2T +QewOp1DW/BViOMb7uYxrlsnvE7TDyqw5yQz6dfb8/b9dPn68qhDecW9bsu72e9i1 +43Cd4shTlkZfORiZjX70196jr2LiI6L11uSoVhDGeikSdfRtNWyEwAx2iLstwi7F +ccslNE4cWIIH2v0dxDYSpcfMaLmT9a7fxdoMLW58nwIz0GxQs/2OMykn/VISt25w +repmBiacWu6oqQrpIYh3jyvMQYTBtdalUDDJqf+WaUO3+sNFRRysLGcCvEnNuWC3 +CeTTqU74XTUhf4cmAOyk+seA3MkPyzjVFufLipoYcCnjUavsMKBXQ8SCVdDxYxZw +S8/FOhB8J2fN8w6gC5uK0ZKAzTj2WhJdxGe+hjf7zdyOcxMl5idbOOFu5gIm0Y5Q +4mXz4q5vfjRlhQKvcqBc2HBTlI6xKAP/nxCAH4VzR5J9fhqxrWfcoREyUFHLMBuJ +GCRWxN7ZQoTYYPl6uTRVbQMfr/tEck2IWsqsqPZsV63zhGLWVufBxg88RD+YHiGC +duhcKica8UluTK4aYLt8YadkGKgy812X+zSubS6D7yZELNA+Ge1yesyJOZsbpojd +FLAdwVkBa1xXkDhHBK0zUFE08obrnrEUeQDxAhIiN9pctG0nvqyBwTLGFoE5oRXJ +btNXcHlEYcUxl8BitBtJYW4gS2VudCA8cmF2ZW5AdGhlbWF3Lm5ldD6IRgQQEQIA +BgUCTp47fgAKCRB5Zmbs1L7pieO0AJwO3QVlW5x1ez0CdbUihvntlsLcmACfQiDh ++rSvdVp/yFKapGRAkKYqOcSJAhwEEAECAAYFAk7KccAACgkQAA5oQRlWghVNsw/+ +KsO9cgYtkmq3UsAG//5DMUobRBP4+RspN9rPzByMo31vT44u9KqYbCeLsyG5UGge +RaJROoELa+yDy7omlS48RYM+kmcp4jgPmksX33Hcsr3nItd350p1PtvCc6QyHl/I +hdq7xlmgonSbPzJm5H2OEMW8LkGiB3IhWWKJkAAUM7qRiP52nxg1iD6+7FkJpQN7 +ZJszLHSHBSKFCYlfILXDCUnCB3Zd5PAKBSVsgASjjvpIf7DRoTaz4jnyWV7sgfaa +vjLorTsTDcLamMQLYYZoajVSfs7FE2cju6eCO+HJc43VoGZbyAhplPizfiW7vMTB +CmEUQ5rRbm8BTItxpRyHsT9KVmZ1JLmkEEkHTIKnlRklmwhj7QVgOoDPI1Q5kuIB +gm6kqPT2tj/rVilawCDsNQeJV9aRcUhDeMRLJEnH2TfkHbu3gQm7P2c2n3hInP0b +DCsE4pvafEg8R6GltBPVzLQhgzfcbUzeCFJZF35Z6DjbuxrTz2FeLAXLux6nU/sJ +As7RJPNxj5B3ikvkoiUCcRXmZY2xeV5qd19pDH93IaXzRzZcAMIrYuHZV6V91txx +TgC94p66NUI7rxkfMOxdEP6b382fH4okrZKh+BzMTAYPjQDF89pO8z7gUEZcVtTx +E/SLWK6fDZO4HP1Pd2FqNYFdEtiLaQMAnaGKJE+OA5mJAhwEEAECAAYFAk7OJEQA +CgkQ+7dXa6fLC2sTMxAAhHt8+LFa6UbW2Rh/1AJ6KMkt7QncEoOVLUCv98mQQpwp +3X2xoyrp8YuBqSHTAK1OI8PAWq5f+7XMwIoiibXdvDscPlhg8cN14NSGwqWPyxbG +0iUwIl07/3IKhd6UJPOJdx46qMGck5Awa6q4znzfqlq3Q+niWhsPYpSlNXdx71TM +UiwXIzoacgM6sB7Q/mUv6rlZil0OXwT4tv5fbtPCkTjswSi1P+pw75mM7Ime0LJO +D0IzugEuWXxW3ZXhF0BN6J/igEXK/NWNGhDFsmfKj1vF1abxnLegPpQb91DnZCSr +aXM7rJhmZwXomAjpY/ELUxUa+63Df1hv1Z71dkPHt00+4P5lTOnEcF3qFseq2jg+ +jcW6zr4OTVQDCOhSm4Le5IND8J4odZs3JOv9BTqNFjsRz4Gs7zHiVLBMJhRQKNzP +qNs0iOb0s2Q89qWC6b8mEo4b2CzE6r60FUWr3oqv1Ws4qRyh2oP482KicK9bG1uG +J3bvwXsIk6nLB9tu9rH39l/ocaAVX3oSQzvhFPAvfTIg72ZUzsSuip4T8xju0stG +16N2QCsTYJI//mfkqK1cBDzAOiMweOWkNkgM6WnWiKtpVhwFr1tSaI243XgTJqcz +8YAA63aHdDYP80V+pm/StWQDnyArI4sqrQ57SIrm/98VQ1KFbR3kNlJyvJ1jYGyJ +AhwEEAECAAYFAk7c3tsACgkQmvsdaBoSUXdajA//TQA5lJ2Ui6Y6EK4+GdRYVLJ4 +xD9oOwFW0arY+lLIsEft/vINnNXjz7tftUOiFWKT+roLaKhrI79pj+95vmvH6q66 +qiV/ThtoYbQIqyTF8DeLguL/bDYMMNqdwDsV4mnIvYGYCjgfGSEibRhHrpTZwwnX +Vbn9m+U2N4szVvwaYHtrmN4W9gR6fReV09gHu1rjE6xJmmnMRFS1K+pgqLaJgMHz +3+6Ws2nERFxhdCJO12xp2McTep7hYs/WyRbKaa3tTS5s+/1lK79iRTSnx8OINt+6 +rvuAN9c8azAe7ETSizQAFb6IbCrfMDwky4Zb3Ia9OKptkfSOJ/bCiFmd4eoy8o77 +7qYeW2q5zl1AKhnejQ274OGG2icpaIO+QEoCJkpCqyShz1rAArskDaen6e+7tnvO +KOBaC1/LbghjUjT7WlLL1j1/43sYLtpduim7lSPxnusZmlkLG2Dlc0AEj4u1oUQJ +51P2ApA2QuvgI4VAdQuHb5/X+RAibC11IgX868Yki85cjUbTwzak3bhVvysSLyGq +X+8tCRq5S25HOmI4R0JTxCaSyo1UHtla1r5gr+MGckeNdlP0bIzF+Y+P4sod8RzX +XLvmsNGUs18VzBVPau7M1UoBUQk3EgcjiocLR1kRFxFog1yQf1+IHOeAR6T627wN +jeEFzKbbsMzE6OlI+V6JAhwEEwEIAAYFAk7KfskACgkQf9n8ywAL7u70NQ//WjKT +GChScS1mfXgXs5L3EalHGosFG2eyqLidbtEdjqOte1+7szcMisujFDj6WuN0V/JM +oifijxeGCKgPYYHO80EUDPPamxHsznGiyyyf5A71pn1wYtBI2Lugd0VGD4Te+wxw +Wa5qggHAObJzII1bQGpySZ+izRtUkZUabNx31dJr79QYaxgObE+4aGFv5KenabNj +UI4uul+3M1vTn2iJ5Yh8H8x36OgO1YWzgEVfQdU8m39vX1Iw3n+bK+TnGimCG+AO +o9QuFHoUq5U2E2ypK0Rw1NrHJwSECocoHivRu2bitVLA5KVEzyZ/UNXpld7Z3wLQ +NrSJ+Otd/lUeHclSvG4eX6gbzfElWViT8FFdE7XREYIGJawcMibdTOOEfdTHsain +njz+QOQ95TTo3gq26tj7BrMWGPx2DSbeNlRQZFYfm1ccXWM6o4bCl6wGlL40Quy9 +e8bZb/XEXhrgEUcEpcG7nHTrrBBI3r/HgJ9nBEZj7I+srUhAW1CUiOVgX+GyDL0W +Geq3VXN4iOkcN6u0dzHRjnkQsb/RsB25D2MCnNDg/tiFb8Xi/qCqSxSB5iQE4aKo +jTYp7mE6j4KSjY/sqoy5hIuKSp8VewpRm+nEyeImKrq4E9zM4AG0cNOdxZ3awGue +z0efE7XhFjdU1P8cjXmt2qU6iz/vCZa12qq67U+JAjgEEwECACIFAk6c/ycCGwMG +CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOdnc4D1T9ip70UP/jf9cHTOEcus +5JuZcAUHAhOhS6dJZkhDCEez4E7w6G3UmZ8P9/txlC/g65fEB2kV4HMAoRBLo9NV +EqtA3bYG9hZs8dhxJGOk0G6KW87+x2GfzbW3A6gbZYj2kEZluhD+ojKLT6urc344 +vUFiqLk2Kxl4bIY7U85HPCm85Q2a/4LZMAyw2UvF3T2YqnqBmmePnGfsCey/RTRt +64rmhIqAyypDuVqeFOaXvplHI1g/f4Ol+j8X5DQVawnRadll/jJn6maN++KXiErm +j7JWHB0wSZeFhD/z2ZlZmImPdDEa7nzCfdLcjSE0OAcptdG/MZgrIUW6Oz6frQm8 +mZdo79LnCqFLkIlg9xOHgqQn90InDh5JK2Vg0/y8BU/2wHDOQ7SFAl7TR7ARuLAJ +P4vAUT705OEl2Y2mMvc8QgCvFOUZxOUe2KRdm124aPw24DSofKSuSunC6JRtEgBf +UlkoZ1RPySrGkNljNGhpYFB9s1YbHJhwltt8mHaroh1FMIPKsawlNAiTDatLDxfc +BWKVum6tTjJnYn4KkMLtdpr+lV5iTm9aAzJaETDeBEKQWNs+4pIbVhi0G9ahLMsU +m6TM1CptARS1dtqXqSTWTTKABYQyPwQ36wUIKXhlgqS6Vgt+kcuCpUYPv/Cv7KEj +KNPTMo+jrP7M08CHv4j95xhJgpwZQaraiQI7BBMBAgAlAhsDBgsJCAcDAgYVCAIJ +CgsEFgIDAQIeAQIXgAUCTp4znAIZAQAKCRDnZ3OA9U/YqYa2EACxytyea488uKj4 +iydBBPXiZMlda6rc3LeQIfabui0pKsYEAnzdzZijqI/k6W1xmoINvKkxo5BbyUpa +TWO8wI/nwNdVFQsREYEATiXD624GnmGbmhOEk/sP4pznWrTWUZzVhroKr3s/NEBr +sRUUJdbbTGpMu1cYMDU13BTYwpVt4n3Q++YB5a1NFWVFC2tWtFFYqdKzXO5hVCsY +RFJPvDYaMEWVJNJ7dSVMHs5ciGD8rGje06FXmBOFtFYKVnM5gLR7ZERiAIMC+wwj +TSemvh+dBRLMosZsq/6TLjbMFm69/ndjIidSGK3mS4ZBnzavZxv/mCv9C0NvzpCL +M/Gzq5GC08PFsM3089kV1dTdjbbDCgfwDzHLrqHZEiOW884MrtXA6xi8+N32hRZg +fcQJio4m0S5OgoW5q2YbgmC9J5/kZC9N+ozC8ORdcYrtpbRICtv4DSYZtvYgYb0n +FCjqlJ2z8A0jGdjYqTKo+18t4Y8NQkrRMt6Ql6fP5rmgfCkZ3/dlb4zu/VRJbNvS +rl+q899m3ATOKsbFZ3DqsoIUhOvR96uEmOxG4XSH2nFEhFFfpv6WSuYJySJep9UY +ertDBV1rbb7tI/SRJfdgMo/LvCf7WLxTKWoN503gtyPmqz0iqXlg19PKIrKxKdGM +Nea/uo2z42Tc+y762Gdn2twJuikZ9LkCDQROnP8nARAA2c3G/PF5UoqKGKBLd77h +pGKEpM+6aLV/OuDEjRnpHpNXMFK13lHR1JcOc8D6AuB+SRew/Ku5WKHpQWCfjH9L +3S8yS22xLTefr/rNlBG5A5Z1EEtckaNS8cjYSYl7EFa+1lQP3PKnA1lGF+6v+ApI +O+1DuJf3hwljZx7uxpLyi1RIEYyjyq6CBJ4yNBzCt3+gAQ0XqHO+NUReV196sJgo +CmcdAJC4zm1xN1u+vXbWzW1pltJYBSnuncZWK5WW6tuQLm4XLtqk3UP6JMerkONf +r0A8YGLaHLE/whtbtD6W7THiJt5lUEV5owxSoygMfVjl/wR6ZO1RLbDUFBKdZWaO +oR+43qOZngmBc4CG13bDAPU46cz6YlivRnrWw+SoZwyHeADTK1jzbhgv7jxw47RC +cn9HMJJ7ERS4S+PzSSr6gLol0Oe8eqsa5LropwUN0vUUdyWO0e3N66qVsmk7jTRj +5CK0Tcnj5Mv2U4EzAOaH/FoqMs9OlzYa+phucU/jB87SgEHXVd8RcvX9ya77XelL +xW0D8Buy7/v1M7WObzwM6e2iRs9qQ229EAQvbtZqxyAgeGsD5Y2v5Y5/rriG/DsN +40svksefFRRCu3LSDlC3Zpx1zBRIoZzmTtzZTWuqvl2TiuydNDXustCAQGjUzPsT +BfiUXOxsemwoREvb8TMjG18AEQEAAYkCHwQYAQIACQUCTpz/JwIbDAAKCRDnZ3OA +9U/YqYX+EACbkdY1ciy0pAQzjwmt3o7xKqeB+UFKIJdQEpBG6DIlnECUHS2h+sxz +ckjJ7DeoP1FYbr4gDQcbVtgxXwDT4snaMfOQnR+9YC5HDhNSeyehZ8YI6XNQ6uZM +YYpgUqmtoZbClLdzC124xGC+Tk0ldkbTT9OCsJRkv8THzcEH9jtmiaAuJkrODnmc +LByRVRfKylw7y/zczAp8rFgsI1SA4RwQSDgt5nnGLV62rL/Z5e+y4H38smgAEGc+ +8mXL5/Kbo/Yx/Yfpqy9NlvoHfkoehq76OSpOJ4M30/xbbHFRr/cxVsX8qEB0croZ +NEjrKEzWDfFyFoaLKfRlYsg7RBV5q4Yms8+1x3N9rvqPflroKUwWZLWKTkcS1cH/ +YdT2OwjwzV+BGiDuuKMsvTt/4boTkzhoWp1b6pWB8hGAhWO6SH2kjYYGbNmldKD9 +d11ejxm+cYq+WofjVvYEJP6G572OUwFbYE4wLXubWfnKAkgZDlNcTIluU3e0MJDZ +rVyh8hBencQgDCtShyKsawWmTtuzxA0h2iDx3j4u8uCiqvQvVPJOVeXRQNJqh/7L +fUsOrRW6j5Ko77zCxEwz1cTs4p6VNlQRoXHuMLn0iKFSzo0J2yKNRSKloA8duHh7 +9t+Zpzbhh6xvhGqSIe4P+uytLgM8Kde3slGJROQTHMEZWhzLik4peg== +=2l3J +-----END PGP PUBLIC KEY BLOCK----- diff --git a/autofs.schema b/autofs.schema new file mode 100644 index 0000000..663c50e --- /dev/null +++ b/autofs.schema @@ -0,0 +1,24 @@ +# Depends upon core.schema and cosine.schema + +# OID Base is 1.3.6.1.4.1.2312.4 +# +# Attribute types are under 1.3.6.1.4.1.2312.4.1 +# Object classes are under 1.3.6.1.4.1.2312.4.2 +# Syntaxes are under 1.3.6.1.4.1.2312.4.3 + +# Attribute Type Definitions + +attributetype ( 1.3.6.1.1.1.1.25 NAME 'automountInformation' + DESC 'Information used by the autofs automounter' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +objectclass ( 1.3.6.1.1.1.1.13 NAME 'automount' SUP top STRUCTURAL + DESC 'An entry in an automounter map' + MUST ( cn $ automountInformation $ objectclass ) + MAY ( description ) ) + +objectclass ( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' SUP top STRUCTURAL + DESC 'An group of related automount objects' + MUST ( ou ) ) + diff --git a/autofs.spec b/autofs.spec new file mode 100644 index 0000000..eb147fd --- /dev/null +++ b/autofs.spec @@ -0,0 +1,187 @@ +# +# spec file for package autofs +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +#Compat macro for new _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} + %define _fillupdir %{_localstatedir}/adm/fillup-templates +%endif +%if 0%{?suse_version} >= 1230 +%define with_udisks 1 +%else +%define with_udisks 0 +%endif +%if 0%{?suse_version} >= 1230 +%define with_sssd 1 +%else +%define with_sssd 0 +%endif +Name: autofs +Version: 5.1.9 +Release: 0 +Summary: A Kernel-Based Automounter +License: GPL-2.0-or-later +Group: System/Daemons +URL: https://www.kernel.org/pub/linux/daemons/autofs/v5/ +Source: https://www.kernel.org/pub/linux/daemons/autofs/v5/%{name}-%{version}.tar.xz +Source1: sysconfig.autofs +Source3: autofs.schema +Source4: README.SUSE.ldap +Source5: README.SUSE +Source7: NetworkManager-autofs +Source8: get-upstream-patches +Source9: https://www.kernel.org/pub/linux/daemons/autofs/v5/%{name}-%{version}.tar.sign +Source10: autofs.keyring +Source42: org.freedesktop.AutoMount.conf +# PATCH-FIX-OPENSUSE autofs-suse-auto_master_default.patch +Patch100: autofs-5.1.1-suse-auto_master_default.patch +# PATCH-FIX-OPENSUSE autofs-debuginfo-fix.patch +Patch101: autofs-5.1.1-debuginfo-fix.patch +# PATCH-EXTEND-OPENSUSE autofs-dbus-udisks-monitor.patch +Patch102: autofs-5.1.1-dbus-udisks-monitor.patch +# PATCH-FIX-OPENSUSE autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch [bsc#955477] +Patch104: autofs-use-libldap_r-instead-of-libldap-for-thread-safety.patch +# bsc#1175238 - Use /usr/etc/nsswitch.conf if /etc/nsswitch.conf is not available +Patch106: autofs-nsswitch-usr-etc.patch +# bsc#1207881 - Obsolete and incorrect manual page details for autofs(8) +Patch108: autofs-suse-manpage-remove-initdir.patch +# bsc#1221682 - GCC 14: autofs package fails +Patch109: autofs-5.1.9-fix-ldap_parse_page_control-check.patch +Patch110: autofs-5.1.9-Fix-incompatible-function-pointer-types.patch +BuildRequires: autoconf +BuildRequires: bison +BuildRequires: cyrus-sasl-devel +BuildRequires: dbus-1-devel +BuildRequires: e2fsprogs +BuildRequires: flex +BuildRequires: krb5-devel +BuildRequires: libopenssl-devel +BuildRequires: libtirpc-devel +BuildRequires: libxml2-devel +BuildRequires: module-init-tools +BuildRequires: nfs-client +BuildRequires: openldap2-devel +BuildRequires: pkgconfig +BuildRequires: systemd-rpm-macros +BuildRequires: xz +BuildRequires: pkgconfig(libsystemd) +Requires(pre): %fillup_prereq +Requires(pre): aaa_base +Recommends: nfs-client +%{?systemd_ordering} +%if %{with_sssd} +BuildRequires: sssd +%endif +%if %{with_udisks} +BuildRequires: pkgconfig(udisks2) +%endif + +%description +AutoFS is a kernel-based automounter for Linux. It automatically +mounts filesystems when you use them, and unmounts them later when +you are not using them. This can include network filesystems, CD-ROMs, +floppies, and so forth. + +%prep +%setup -q +cp %{SOURCE3} . +cp %{SOURCE4} . +cp %{SOURCE5} . +# +%patch -P 100 -p1 +%patch -P 101 -p1 +%patch -P 102 -p1 +%patch -P 104 -p1 +%patch -P 106 -p1 +%patch -P 108 -p1 +%patch -P 109 -p1 +%patch -P 110 -p1 + +%build +autoreconf -fiv + +SUSE_ASNEEDED=0 +%configure %{_target_cpu}-suse-linux \ + --libdir=%{_libdir} --mandir=%{_mandir} \ + --with-confdir=%{_sysconfdir}/sysconfig \ + --disable-mount-locking \ + --enable-forced-shutdown \ + --enable-ignore-busy \ + --with-systemd \ + --with-libtirpc \ + --with-hesiod=no \ + --with-sasl +%make_build all DONTSTRIP=1 LOCAL_CFLAGS="%{optflags} %(getconf LFS_CFLAGS)" \ + %{?_smp_mflags} + +%install +%make_install INSTALLROOT=%{buildroot} install_samples +install -d -m 755 %{buildroot}%{_sysconfdir}/auto.master.d +install -D -m 644 %{SOURCE1} %{buildroot}%{_fillupdir}/sysconfig.autofs +install -D -m 755 %{SOURCE7} %{buildroot}%{_prefix}/lib/NetworkManager/dispatcher.d/autofs +ln -s %{_mandir}/man8/autofs.8.gz %{buildroot}/%{_mandir}/man8/rcautofs.8.gz +ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcautofs +%if %{with_udisks} +install -D -m 644 %{SOURCE42} %{buildroot}%{_datadir}/dbus-1/system.d/org.freedesktop.AutoMount.conf +%endif +# will be installed by fillup scripts +rm -f %{buildroot}%{_sysconfdir}/sysconfig/autofs + +%pre +%service_add_pre %{name}.service + +%post +%service_add_post %{name}.service +%fillup_only + +%preun +%{stop_on_removal autofs} +%service_del_preun %{name}.service +%fillup_only + +%postun +%service_del_postun %{name}.service + +%files +%license COPYRIGHT +%{_fillupdir}/sysconfig.autofs +%config(noreplace) %{_sysconfdir}/autofs.conf +%config(noreplace) %{_sysconfdir}/auto.master +%config(noreplace) %{_sysconfdir}/auto.misc +%config(noreplace) %{_sysconfdir}/auto.net +%config(noreplace) %{_sysconfdir}/auto.smb +%config(noreplace) %{_sysconfdir}/autofs_ldap_auth.conf +%if %{with_udisks} +%{_datadir}/dbus-1/system.d/org.freedesktop.AutoMount.conf +%endif +%dir %{_sysconfdir}/auto.master.d +%dir %{_prefix}/lib/NetworkManager +%dir %{_prefix}/lib/NetworkManager/dispatcher.d +%attr(0755,root,root) %{_prefix}/lib/NetworkManager/dispatcher.d/autofs +%doc README README.changer README.ncpfs README.replicated-server +%doc README.smbfs README.v5.release autofs.schema README.active-restart +%doc README.SUSE README.SUSE.ldap +%dir %{_libdir}/autofs/ +%{_libdir}/libautofs.so +%{_libdir}/autofs/ +%{_mandir}/man5/* +%{_mandir}/man8/* +%{_sbindir}/automount +%{_sbindir}/rcautofs +%{_unitdir}/autofs.service + +%changelog diff --git a/get-upstream-patches b/get-upstream-patches new file mode 100644 index 0000000..85329f2 --- /dev/null +++ b/get-upstream-patches @@ -0,0 +1,57 @@ +#! /bin/bash +# +# get autofs upstream patched from +# http://www.kernel.org/pub/linux/daemons/autofs/v5/patches-$version/ +# and cat them in one bzipped file +# autofs-$LATEST_RELEASE-upstream-patches-$DATE +# where DATE is the date of the top patch in the series +# +# usage: get-upstream-patches + +LATEST_RELEASE="5.0.9" +NEXT_RELEASE="5.0.10" + +BASE=http://www.kernel.org/pub/linux/daemons/autofs/v5/patches-$NEXT_RELEASE/ +SERIES=patch_order-$LATEST_RELEASE +WGET_OPTS=-q +PATCHDIR=upstream-patches-$LATEST_RELEASE +CURRENT=$PWD +DELIMITER=$(mktemp) + +test -x /usr/bin/wget || { echo "wget is missing!"; exit 1; } +test -x /usr/bin/bzip2 || { echo "bzip2 is missing!"; exit 1; } +test -x /usr/bin/sed || { echo "sed is missing!"; exit 1; } + +test -d $PATCHDIR || mkdir $PATCHDIR +pushd $PATCHDIR > /dev/null 2>&1 +rm -f $SERIES + +echo "retrieving series file $SERIES" +wget $WGET_OPTS $BASE/$SERIES +sed -i '/^#/d' $SERIES + +while read patch +do + if test -r "$patch"; then + echo "$patch ...skipping" + else + echo "$patch ...retrieving" + wget $WGET_OPTS $BASE/$patch + fi +done < $SERIES + +LAST=$(sed -e "/^$/d" $SERIES | tail -n 1) +DATE=$(stat -c "%y" $LAST | cut -d' ' -f 1 | sed "s/-//g") + +echo > $DELIMITER +echo "----------" >> $DELIMITER +echo >> $DELIMITER + +cat $SERIES $DELIMITER $(cat $SERIES) > $CURRENT/autofs-$LATEST_RELEASE-upstream-patches-$DATE + +rm -f $DELIMITER + +bzip2 $CURRENT/autofs-$LATEST_RELEASE-upstream-patches-$DATE + +popd > /dev/null 2>&1 + diff --git a/org.freedesktop.AutoMount.conf b/org.freedesktop.AutoMount.conf new file mode 100644 index 0000000..75deb2a --- /dev/null +++ b/org.freedesktop.AutoMount.conf @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/sysconfig.autofs b/sysconfig.autofs new file mode 100644 index 0000000..5d3408f --- /dev/null +++ b/sysconfig.autofs @@ -0,0 +1,15 @@ +## Path: System/File systems/Autofs +## Description: Options that will be used when the daemon is started. +## Type: string +## Default: "" +## ServiceReload: autofs +# +OPTIONS="" + +## Description: Use AutoFS miscellaneous device (/dev/autofs). +## Type: string +## Default: "yes" +# +# Determine whether the AutoFS misc device (/dev/autofs) will be used +# for routing ioctl commands. Requires kernel support (2.6.28 and newer). +USE_MISC_DEVICE="yes"