The branch, v4-3-stable has been updated
       via  8a42885 VERSION: Disable git snapshots for the 4.3.5 release.
       via  b35144d WHATSNEW: Add release notes for Samba 4.3.5.
       via  6c6599c ctdb-scripts: Drop use of "smbcontrol winbindd ip-dropped 
..."
       via  f8618dc lib/tsocket: workaround sockets not supporting FIONREAD
       via  6c1a5f0 param: Fix str_list_v3 to accept ; again
       via  11b89bd loadparm: Fix memory leak issue.
       via  4526ba6 s3: smbd: posix_acls: Fix check for setting u:g:o entry on 
a filesystem with no ACL support.
       via  ebb7d66 s3:smbd:open: Skip redundant call to file_set_dosmode when 
creating a new file.
       via  f1d0341 docs-xml: fix typo in smbspool_krb5_wrapper manpage.
       via  4c7f237 docs: Add smbspool_krb5_wrapper manpage
       via  9270b1d8 python:tests/core: add tests for arcfour_encrypt() and 
string_to_byte_array()
       via  6c44fab s4:scripting/devel: make use of the generic 
arcfour_encrypt() and string_to_byte_array() functions
       via  8acf14e python:samba/netcmd/domain: make use of the generic 
arcfour_encrypt() and string_to_byte_array() functions
       via  b950d91 python:samba/join.py: make use of the generic 
arcfour_encrypt() and string_to_byte_array() functions
       via  4e6d6c7 python:samba: add a generic arcfour_encrypt() helper 
function
       via  ffd18e1 python:samba: add a generic string_to_byte_array() helper 
function
       via  b422510 ctdb-common: Use documented names for protocol family in 
socket()
       via  9ca2add ctdb-common: Protocol argument must be in host order for 
socket() call
       via  3e600d6 s3: smbd: Fix timestamp rounding inside SMB2 create.
       via  830f003 smbd: show correct disk size for different quota and dfree 
block sizes
       via  67db303 s3:utils/smbget fix recursive download
       via  155d821 waf: Only build smb_krb5_wrapper if we have CUPS
       via  2b218c3 s3-client: Add a KRB5 wrapper for smbspool
       via  756b452 s3-parm: clean up defaults when removing global parameters
       via  54c0fce s4:torture: add SMB2 test for directory creation initial 
allocation size
       via  57654ee s3:smbd: Ignore initial allocation size for directory 
creation
       via  6d82bdd smbcacls: fix uninitialized variable
       via  2c72956 Revert "winbind: Retry after SESSION_EXPIRED error in 
ping-dc"
       via  52b5636 winbindd: Retry on expired session in cm_connect_netlogon
       via  dded902 winbindd: Retry on expired session in cm_connect_sam
       via  423120f winbindd: Retry on expired session in cm_connect_lsa
       via  a0f2f52 winbindd: Remove double retry from some ADS methods
       via  fa875e3 winbindd: Add retry also for ADS method calls
       via  39e6b5b winbindd: Reset connection for expired session before 
reconnecting
       via  40bc9b0 vfs_shadow_copy2: add a blackbox test suite
       via  0998c40 vfs_shadow_copy2: fix case where snapshots are outside the 
share
       via  a453c78 vfs_shadow_copy2: add shadow_copy2_do_convert()
       via  db70921 s3:smbd/oplock obey kernel oplock setting when releasing 
oplocks
       via  43ade9a selftest: more dfree command and smbclient disk usage tests
       via  21d362e smbclient: query disk usage relative to current directory
       via  ae2a575 VERSION: Bump version up to 4.3.5...
      from  0c12970 VERSION: Disable git snapshots for the 4.3.4 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-3-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |   2 +-
 WHATSNEW.txt                                       |  91 ++++++-
 ctdb/common/system_aix.c                           |   4 +-
 ctdb/common/system_common.c                        |   2 +-
 ctdb/common/system_freebsd.c                       |   4 +-
 ctdb/common/system_gnu.c                           |   4 +-
 ctdb/common/system_kfreebsd.c                      |   4 +-
 ctdb/common/system_linux.c                         |  12 +-
 ctdb/config/events.d/11.natgw                      |   4 -
 ctdb/config/events.d/49.winbind                    |   7 -
 ctdb/tools/ctdb.c                                  |   4 +-
 ctdb/utils/smnotify/smnotify.c                     |   6 +-
 docs-xml/manpages/smbspool_krb5_wrapper.8.xml      |  64 +++++
 docs-xml/wscript_build                             |   1 +
 lib/tsocket/tsocket_bsd.c                          |  62 ++++-
 lib/util/util_strlist.c                            |  18 +-
 python/samba/__init__.py                           |  24 ++
 python/samba/join.py                               |  19 +-
 python/samba/netcmd/domain.py                      |  23 +-
 python/samba/tests/core.py                         |  16 ++
 selftest/target/Samba3.pm                          |  71 +++++
 source3/client/README.smbspool                     |  17 ++
 source3/client/client.c                            |   2 +-
 source3/client/smbspool_krb5_wrapper.c             | 210 +++++++++++++++
 source3/libsmb/cli_smb2_fnum.c                     |   5 +-
 source3/libsmb/cli_smb2_fnum.h                     |   1 +
 source3/libsmb/clifile.c                           |   5 +-
 source3/libsmb/proto.h                             |   3 +-
 source3/modules/vfs_shadow_copy2.c                 | 107 ++++++--
 source3/param/loadparm.c                           |  19 +-
 source3/script/tests/test_dfree_command.sh         |  17 +-
 source3/script/tests/test_shadow_copy.sh           | 290 +++++++++++++++++++++
 source3/selftest/tests.py                          |   1 +
 source3/smbd/dfree.c                               |   9 +-
 source3/smbd/open.c                                |  14 +-
 source3/smbd/oplock.c                              |   3 +-
 source3/smbd/posix_acls.c                          |  39 ++-
 source3/smbd/smb2_create.c                         |   8 +
 source3/torture/nbio.c                             |   2 +-
 source3/utils/smbcacls.c                           |   2 +-
 source3/utils/smbget.c                             |  15 +-
 source3/winbindd/winbindd_ads.c                    |  26 +-
 source3/winbindd/winbindd_cache.c                  |   4 +-
 source3/winbindd/winbindd_cm.c                     | 104 ++++++++
 source3/winbindd/winbindd_dual_srv.c               |   8 -
 source3/winbindd/winbindd_ndr.c                    |   3 +
 source3/winbindd/winbindd_proto.h                  |   4 +
 source3/winbindd/winbindd_reconnect.c              |  38 +--
 ...nbindd_reconnect.c => winbindd_reconnect_ads.c} | 249 ++++++++----------
 source3/wscript_build                              |   9 +
 source4/scripting/devel/createtrust                |  18 +-
 source4/torture/smb2/create.c                      |  64 +++++
 testprogs/blackbox/dfree.sh                        |   8 +-
 53 files changed, 1427 insertions(+), 319 deletions(-)
 create mode 100644 docs-xml/manpages/smbspool_krb5_wrapper.8.xml
 create mode 100644 source3/client/README.smbspool
 create mode 100644 source3/client/smbspool_krb5_wrapper.c
 create mode 100755 source3/script/tests/test_shadow_copy.sh
 copy source3/winbindd/{winbindd_reconnect.c => winbindd_reconnect_ads.c} (50%)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index ad5d0cb..1bdc118 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=3
-SAMBA_VERSION_RELEASE=4
+SAMBA_VERSION_RELEASE=5
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 4d03b61..add8af0 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,4 +1,91 @@
                    =============================
+                   Release Notes for Samba 4.3.5
+                         February 23, 2016
+                   =============================
+
+
+This is the latest stable release of Samba 4.3.
+
+
+Changes since 4.3.4:
+--------------------
+
+o  Jeremy Allison <[email protected]>
+   * BUG 10489: s3: smbd: posix_acls: Fix check for setting u:g:o entry on a
+     filesystem with no ACL support.
+   * BUG 11703: s3: smbd: Fix timestamp rounding inside SMB2 create.
+
+o  Christian Ambach <[email protected]>
+   * BUG 6482: s3:utils/smbget: Fix recursive download.
+   * BUG 11400: s3:smbd/oplock: Obey kernel oplock setting when releasing
+     oplocks.
+
+o  Alexander Bokovoy <[email protected]>
+   * BUG 11693: s3-parm: Clean up defaults when removing global parameters.
+
+o  Ralph Boehme <[email protected]>
+   * BUG 11684: s3:smbd: Ignore initial allocation size for directory creation.
+   * BUG 11714: lib/tsocket: Work around sockets not supporting FIONREAD.
+
+o  Amitay Isaacs <[email protected]>
+   * BUG 11705: ctdb: Remove error messages after kernel security update
+     (CVE-2015-8543).
+
+o  Volker Lendecke <[email protected]>
+   * BUG 11732: param: Fix str_list_v3 to accept ";" again.
+
+o  Stefan Metzmacher <[email protected]>
+   * BUG 11699: Use M2Crypto.RC4.RC4 on platforms without Crypto.Cipher.ARC4.
+
+o  Jose A. Rivera <[email protected]>
+   * BUG 11727: s3:smbd:open: Skip redundant call to file_set_dosmode when
+     creating a new file.
+
+o  Christof Schmitt <[email protected]>
+   * BUG 11670: winbindd: Handle expired sessions correctly.
+
+o  Andreas Schneider <[email protected]>
+   * BUG 11690: s3-client: Add a KRB5 wrapper for smbspool.
+
+o  Uri Simchoni <[email protected]>
+   * BUG 11580: vfs_shadow_copy2: Fix case where snapshots are outside the
+     share.
+   * BUG 11662: smbclient: Query disk usage relative to current directory.
+   * BUG 11681: smbd: Show correct disk size for different quota and dfree 
block
+     sizes.
+   * BUG 11682: smbcacls: Fix uninitialized variable.
+
+o  Martin Schwenke <[email protected]>
+   * BUG 11719: ctdb-scripts: Drop use of "smbcontrol winbindd ip-dropped ...".
+
+o  Hemanth Thummala <[email protected]>
+   * BUG 11708: loadparm: Fix memory leak issue.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Older release notes to follow:
+------------------------------
+
+                   =============================
                    Release Notes for Samba 4.3.4
                          January 12, 2016
                    =============================
@@ -68,8 +155,8 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Older release notes to follow:
-------------------------------
+----------------------------------------------------------------------
+
 
                    =============================
                    Release Notes for Samba 4.3.3
diff --git a/ctdb/common/system_aix.c b/ctdb/common/system_aix.c
index 41f61ae..2637442 100644
--- a/ctdb/common/system_aix.c
+++ b/ctdb/common/system_aix.c
@@ -44,7 +44,7 @@ int ctdb_sys_open_sending_socket(void)
        int s, ret;
        uint32_t one = 1;
 
-       s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+       s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
        if (s == -1) {
                DEBUG(DEBUG_CRIT,(" failed to open raw socket (%s)\n",
                         strerror(errno)));
@@ -121,7 +121,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
 
 
 
-       s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+       s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
        if (s == -1) {
                DEBUG(DEBUG_CRIT,(" failed to open raw socket (%s)\n",
                         strerror(errno)));
diff --git a/ctdb/common/system_common.c b/ctdb/common/system_common.c
index 899f3b5..3e30a6c 100644
--- a/ctdb/common/system_common.c
+++ b/ctdb/common/system_common.c
@@ -85,7 +85,7 @@ char *ctdb_sys_find_ifname(ctdb_sock_addr *addr)
        struct ifconf ifc;
        char *ptr;
 
-       s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+       s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
        if (s == -1) {
                DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket 
(%s)\n",
                         strerror(errno)));
diff --git a/ctdb/common/system_freebsd.c b/ctdb/common/system_freebsd.c
index 9597a7a..02f7cce 100644
--- a/ctdb/common/system_freebsd.c
+++ b/ctdb/common/system_freebsd.c
@@ -158,7 +158,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip4pkt.tcp.th_sum   = tcp_checksum((uint16_t *)&ip4pkt.tcp, 
sizeof(ip4pkt.tcp), &ip4pkt.ip);
 
                /* open a raw socket to send this segment from */
-               s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+               s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket (%s)\n",
                                 strerror(errno)));
@@ -208,7 +208,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip6pkt.tcp.th_win   = htons(1234);
                ip6pkt.tcp.th_sum   = tcp_checksum6((uint16_t *)&ip6pkt.tcp, 
sizeof(ip6pkt.tcp), &ip6pkt.ip6);
 
-               s = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW);
+               s = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT, (__location__ " Failed to open 
sending socket\n"));
                        return -1;
diff --git a/ctdb/common/system_gnu.c b/ctdb/common/system_gnu.c
index 2ab1399..1e0ae4c 100644
--- a/ctdb/common/system_gnu.c
+++ b/ctdb/common/system_gnu.c
@@ -156,7 +156,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip4pkt.tcp.check    = tcp_checksum((uint16_t *)&ip4pkt.tcp, 
sizeof(ip4pkt.tcp), &ip4pkt.ip);
 
                /* open a raw socket to send this segment from */
-               s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+               s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket (%s)\n",
                                 strerror(errno)));
@@ -203,7 +203,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip6pkt.tcp.window   = htons(1234);
                ip6pkt.tcp.check    = tcp_checksum6((uint16_t *)&ip6pkt.tcp, 
sizeof(ip6pkt.tcp), &ip6pkt.ip6);
 
-               s = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW);
+               s = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT, (__location__ " Failed to open 
sending socket\n"));
                        return -1;
diff --git a/ctdb/common/system_kfreebsd.c b/ctdb/common/system_kfreebsd.c
index 41aa4d6..7cb6d92 100644
--- a/ctdb/common/system_kfreebsd.c
+++ b/ctdb/common/system_kfreebsd.c
@@ -156,7 +156,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip4pkt.tcp.check    = tcp_checksum((uint16_t *)&ip4pkt.tcp, 
sizeof(ip4pkt.tcp), &ip4pkt.ip);
 
                /* open a raw socket to send this segment from */
-               s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+               s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket (%s)\n",
                                 strerror(errno)));
@@ -203,7 +203,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip6pkt.tcp.window   = htons(1234);
                ip6pkt.tcp.check    = tcp_checksum6((uint16_t *)&ip6pkt.tcp, 
sizeof(ip6pkt.tcp), &ip6pkt.ip6);
 
-               s = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW);
+               s = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT, (__location__ " Failed to open 
sending socket\n"));
                        return -1;
diff --git a/ctdb/common/system_linux.c b/ctdb/common/system_linux.c
index fdb8d12..2e58853 100644
--- a/ctdb/common/system_linux.c
+++ b/ctdb/common/system_linux.c
@@ -93,7 +93,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const char 
*iface)
 
        switch (addr->ip.sin_family) {
        case AF_INET:
-               s = socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_ARP));
+               s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
                if (s == -1){
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket\n"));
                        return -1;
@@ -187,7 +187,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const 
char *iface)
                close(s);
                break;
        case AF_INET6:
-               s = socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_ARP));
+               s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
                if (s == -1){
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket\n"));
                        return -1;
@@ -357,7 +357,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip4pkt.tcp.check    = tcp_checksum((uint16_t *)&ip4pkt.tcp, 
sizeof(ip4pkt.tcp), &ip4pkt.ip);
 
                /* open a raw socket to send this segment from */
-               s = socket(AF_INET, SOCK_RAW, htons(IPPROTO_RAW));
+               s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket (%s)\n",
                                 strerror(errno)));
@@ -406,7 +406,7 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
                ip6pkt.tcp.window   = htons(1234);
                ip6pkt.tcp.check    = tcp_checksum6((uint16_t *)&ip6pkt.tcp, 
sizeof(ip6pkt.tcp), &ip6pkt.ip6);
 
-               s = socket(PF_INET6, SOCK_RAW, IPPROTO_RAW);
+               s = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
                if (s == -1) {
                        DEBUG(DEBUG_CRIT, (__location__ " Failed to open 
sending socket\n"));
                        return -1;
@@ -447,7 +447,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void 
**private_data)
        int s;
 
        /* Open a socket to capture all traffic */
-       s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+       s = socket(AF_PACKET, SOCK_RAW, ETH_P_ALL);
        if (s == -1) {
                DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
                return -1;
@@ -568,7 +568,7 @@ bool ctdb_sys_check_iface_exists(const char *iface)
        int s;
        struct ifreq ifr;
 
-       s = socket(PF_PACKET, SOCK_RAW, 0);
+       s = socket(AF_PACKET, SOCK_RAW, 0);
        if (s == -1){
                /* We dont know if the interface exists, so assume yes */
                DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
diff --git a/ctdb/config/events.d/11.natgw b/ctdb/config/events.d/11.natgw
index 54e6cd9..29339f4 100755
--- a/ctdb/config/events.d/11.natgw
+++ b/ctdb/config/events.d/11.natgw
@@ -149,10 +149,6 @@ natgw_set_slave ()
        _net="${_net_gw%@*}"
        ip route add "$_net" via "$_natgwip" metric 10
     done
-
-    # Make sure winbindd does not stay bound to this address if we are
-    # no longer NATGW master
-    smbcontrol winbindd ip-dropped $CTDB_NATGW_PUBLIC_IP >/dev/null 2>&1
 }
 
 natgw_ensure_master ()
diff --git a/ctdb/config/events.d/49.winbind b/ctdb/config/events.d/49.winbind
index dee3c90..a1ea787 100755
--- a/ctdb/config/events.d/49.winbind
+++ b/ctdb/config/events.d/49.winbind
@@ -55,13 +55,6 @@ case "$1" in
        ctdb_check_command wbinfo -p
        ;;
 
-     takeip|releaseip)
-       iface=$2
-       ip=$3
-       maskbits=$4
-
-       smbcontrol winbindd ip-dropped $ip >/dev/null 2>/dev/null
-       ;;
     *)
        ctdb_standard_event_handler "$@"
        ;;
diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c
index c6da621..c5689c2 100644
--- a/ctdb/tools/ctdb.c
+++ b/ctdb/tools/ctdb.c
@@ -4496,7 +4496,7 @@ static int control_chktcpport(struct ctdb_context *ctdb, 
int argc, const char **
 
        port = atoi(argv[0]);
 
-       s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+       s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (s == -1) {
                printf("Failed to open local socket\n");
                return errno;
@@ -4508,7 +4508,7 @@ static int control_chktcpport(struct ctdb_context *ctdb, 
int argc, const char **
        }
 
        bzero(&sin, sizeof(sin));
-       sin.sin_family = PF_INET;
+       sin.sin_family = AF_INET;
        sin.sin_port   = htons(port);
        ret = bind(s, (struct sockaddr *)&sin, sizeof(sin));
        close(s);
diff --git a/ctdb/utils/smnotify/smnotify.c b/ctdb/utils/smnotify/smnotify.c
index d7fd546..d5c5a4c 100644
--- a/ctdb/utils/smnotify/smnotify.c
+++ b/ctdb/utils/smnotify/smnotify.c
@@ -43,14 +43,14 @@ static int create_socket(const char *addr, int port)
        int s;
         struct sockaddr_in sock_in;
 
-       s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+       s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        if (s == -1) {
                printf("Failed to open local socket\n");
                exit(10);
        }
 
        bzero(&sock_in, sizeof(sock_in));
-       sock_in.sin_family = PF_INET;
+       sock_in.sin_family = AF_INET;
        sock_in.sin_port   = htons(port);
        inet_aton(addr, &sock_in.sin_addr);
        if (bind(s, (struct sockaddr *)&sock_in, sizeof(sock_in)) == -1) {
@@ -124,7 +124,7 @@ int main(int argc, const char *argv[])
 
        /* Setup a sockaddr_in for the client we want to notify */
        bzero(&sock_cl, sizeof(sock_cl));
-       sock_cl.sin_family = PF_INET;
+       sock_cl.sin_family = AF_INET;
        sock_cl.sin_port   = htons(clientport);
        inet_aton(client, &sock_cl.sin_addr);
 
diff --git a/docs-xml/manpages/smbspool_krb5_wrapper.8.xml 
b/docs-xml/manpages/smbspool_krb5_wrapper.8.xml
new file mode 100644
index 0000000..f9966e7
--- /dev/null
+++ b/docs-xml/manpages/smbspool_krb5_wrapper.8.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant 
V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc";>
+<refentry id="smbspool.8">
+
+<refmeta>
+       <refentrytitle>smbspool_krb5_wrapper</refentrytitle>
+       <manvolnum>8</manvolnum>
+       <refmiscinfo class="source">Samba</refmiscinfo>
+       <refmiscinfo class="manual">System Administration tools</refmiscinfo>
+       <refmiscinfo class="version">4.4</refmiscinfo>
+</refmeta>
+
+
+<refnamediv>
+       <refname>smbspool_krb5_wrapper</refname>
+       <refpurpose>This is a CUPS printing backend which calls 
smbspool</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+       <cmdsynopsis>
+               <command>smbspool_krb5_wrapper</command>
+               <arg choice="req">job</arg>
+               <arg choice="req">user</arg>
+               <arg choice="req">title</arg>
+               <arg choice="req">copies</arg>
+               <arg choice="req">options</arg>
+               <arg choice="opt">filename</arg>
+       </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+       <title>DESCRIPTION</title>
+
+       <para>This tool is part of the 
<citerefentry><refentrytitle>samba</refentrytitle>
+       <manvolnum>7</manvolnum></citerefentry> suite.</para>
+
+       <para>smbspool_krb5_wrapper is a tool that can be used to print using
+               Kerberos credentials. To get this working smbspool_krb5_wrapper
+               needs to be the smb backend of CUPS. It needs to be owned by
+               root and the permissions for the binary need to be 0700. Once
+               smbspool_krb5_wrapper switched to the user trying to print it
+               executes smbspool. It should not be called by a user.</para>
+
+</refsect1>
+
+<refsect1>
+       <title>SEE ALSO</title>
+       <para><citerefentry><refentrytitle>smbspool</refentrytitle>
+               <manvolnum>8</manvolnum></citerefentry>.</para>
+</refsect1>
+
+<refsect1>
+       <title>AUTHOR</title>
+
+       <para>The original Samba software and related utilities
+       were created by Andrew Tridgell. Samba is now developed
+       by the Samba Team as an Open Source project similar
+       to the way the Linux kernel is developed.</para>
+
+       <para>The smbspool_krb5_wrapper manpage was written by Andreas
+               Schneider.</para>
+</refsect1>
+
+</refentry>
diff --git a/docs-xml/wscript_build b/docs-xml/wscript_build
index 5c42a31..8cdd2dd 100644
--- a/docs-xml/wscript_build
+++ b/docs-xml/wscript_build
@@ -38,6 +38,7 @@ manpages='''
          manpages/smbpasswd.5
          manpages/smbpasswd.8
          manpages/smbspool.8
+         manpages/smbspool_krb5_wrapper.8
          manpages/smbstatus.1
          manpages/smbta-util.8
          manpages/smbtar.1
diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c
index 8203755..0756fb3 100644
--- a/lib/tsocket/tsocket_bsd.c
+++ b/lib/tsocket/tsocket_bsd.c
@@ -132,6 +132,43 @@ static int tsocket_bsd_common_prepare_fd(int fd, bool 
high_fd)
        return -1;
 }
 
+#ifdef HAVE_LINUX_RTNETLINK_H
+/**
+ * Get the amount of pending bytes from a netlink socket
+ *
+ * For some reason netlink sockets don't support querying the amount of pending
+ * data via ioctl with FIONREAD, which is what we use in tsocket_bsd_pending()
+ * below.
+ *
+ * We know we are on Linux as we're using netlink, which means we have a 
working
+ * MSG_TRUNC flag to recvmsg() as well, so we use that together with MSG_PEEK.
+ **/
+static ssize_t tsocket_bsd_netlink_pending(int fd)
+{
+       struct iovec iov;
+       struct msghdr msg;
+       char buf[1];
+
+       iov = (struct iovec) {
+               .iov_base = buf,
+               .iov_len = sizeof(buf)
+       };
+
+       msg = (struct msghdr) {
+               .msg_iov = &iov,
+               .msg_iovlen = 1
+       };
+
+       return recvmsg(fd, &msg, MSG_PEEK | MSG_TRUNC);
+}
+#else
+static ssize_t tsocket_bsd_netlink_pending(int fd)
+{
+       errno = ENOSYS;
+       return -1;
+}
+#endif
+
 static ssize_t tsocket_bsd_pending(int fd)
 {
        int ret, error;
@@ -640,6 +677,7 @@ struct tdgram_bsd {
        void *event_ptr;
        struct tevent_fd *fde;
        bool optimize_recvfrom;
+       bool netlink;
 


-- 
Samba Shared Repository

Reply via email to