[SCM] Samba Shared Repository - branch v3-2-stable updated - release-3-2-0pre3-206-gecd935a

Karolin Seeger kseeger at samba.org
Fri May 23 08:46:54 GMT 2008


The branch, v3-2-stable has been updated
       via  ecd935a4fada0737fe09ba20cb33b5304132e13b (commit)
       via  b5991e02c931a92d35ebc9ff8b204c564a0c759f (commit)
       via  53f6b604741d242b4ff72b854b36a8867314daad (commit)
       via  94b0b66214208f2cdb4e72b61bde96ac0e4a626f (commit)
       via  93c524f768420be923be174f90e8a678ea553d0e (commit)
       via  97de8071782d484c11d94105b7ab330f6c46ad6b (commit)
       via  6a494577b6cb3c86bd6f51df8edfd756420c44fc (commit)
       via  68199c5eee12137e668cd0d7c5ca8583b9f4e14c (commit)
       via  2917075f05337cc50e8a8045c2f110d43fd13782 (commit)
       via  47942cd703065da7df782ae6fa0ee6525bd79ef8 (commit)
       via  a051d6dcf69e0979ff922468b87fa1fb2d72608c (commit)
       via  4f257ef7d42cc935f7bd6c5fdefd15ddf4998880 (commit)
       via  ce0eaafb1e854d2a325079d7637e3b8f6469a8f0 (commit)
       via  1d85a69dc999a33ca76b3ffc119eb83765db2d87 (commit)
       via  2ace27aeb10f1ed73ea958b93aad8433b862c79c (commit)
       via  f1febbf015c2f0dd31d63d3b7ef406560f133883 (commit)
       via  004aba31ec9872e4a4e1fa3307016f521392e0eb (commit)
       via  33448c9881d06e4329fe5ae0e61ed24eada018c3 (commit)
       via  514760e800ee8fa0ae2f3817235f3bbd73218a5c (commit)
       via  9b00f12d108bb6f58dfc650523116c62a5f7b2f9 (commit)
       via  f2532ddb49a6efec1b2adff6dc93d6da039139e9 (commit)
       via  83a8025d4d1ad431acdd37cc9d41df3072d82ad7 (commit)
       via  89352f1735b468dec3ef945d56ebc7ba0108a4ce (commit)
       via  e3ba5cc280366d16e4b8d1e993a1a553a9894e70 (commit)
       via  80fb1d5ce63c6d68db797602a50ee5f70533a552 (commit)
       via  85e1fd46bc7b3e35301a884e230b6d0cb3f6af6e (commit)
       via  5e34183f88d30b8c1eb6ac56bf67e1eae4aadbf4 (commit)
       via  69b4cfe466ef2272cba338d51daa412712fd9dce (commit)
       via  8c108aeec90755f347c70a89acd2079d40de7cbc (commit)
       via  bfdef4999fc477ab47c08f1cc5af1fcb1378c710 (commit)
       via  e1d867aabe6d0aaab95eed86ac90120efe661485 (commit)
       via  e05739603e4c823d9947c102b92f4388cccf61f6 (commit)
       via  fcf1cbae0509baac710949afdb200750fc30b618 (commit)
       via  967caf4f9ce839af83b58e99afbcdc925dc233c0 (commit)
       via  28889f2d7e2e0ce326de6726f95253d06fa58c39 (commit)
       via  b6cc226d9ee22cf808e1575166dadb181f178f8c (commit)
       via  332317be5696ba5e8d1d07cd23878160a9bc91a6 (commit)
       via  2ebce34a3968e1081f47da1bb55c7b0b80a767f0 (commit)
       via  95a50f28bfd79353498824eb6d05337cdcdc6088 (commit)
       via  0e02ed6fdf65b3303c97e204adc65593ef2f986a (commit)
       via  e13a19b295ef0547f0a635b2125249e9e9141b8f (commit)
       via  ed38ba5432dce0e6a5edcd6188ef6401312011b9 (commit)
       via  a2c9139609b2e1873d6062489570ea9e1b27cc2a (commit)
       via  7f19c94df4b1d0e3e37617b2e220f8d97efb2509 (commit)
       via  8807bf744da5b2d9efdfe371e5eb5c6a31be728e (commit)
       via  fcf6a61ad440f90d198e1d30d50eb3b4f2df86e1 (commit)
       via  5587266df009382742802cf1e18dcdd8ce84e1b6 (commit)
       via  0fc9a2a5621dec2e41db4e442e89534d3f52aeb3 (commit)
       via  30c52fc957b496bfc2689195e1edd1f6b227d543 (commit)
       via  130e878f489d42c5ddf24575ebe65b888c1489e7 (commit)
       via  6dd9df73c51391458deca2965b500be4d8d40e71 (commit)
       via  1bc7c99f6b2090e9bb684925cbb260794b742ba1 (commit)
       via  35c2462e57d0ac05af517ab1d2bba8ae76a5521c (commit)
       via  475caf2526fed20f11c5015d0f8284a48e6fc778 (commit)
       via  ff62bd0c047dad21d52397b2afcf3aa448215ef9 (commit)
       via  acd493f627ee6536b7113d87d666a04e40bda906 (commit)
       via  1bf1c5e54f25cc37f7745f49d96bc5571ed10a4e (commit)
       via  b0bd47097be782645c74753ab3d4bf80e7e97198 (commit)
       via  b56c767b26278573e288b558a226c6bfe2c8b220 (commit)
       via  6b8a916a68725fbc788c8477678cb09dfe633307 (commit)
      from  227fb2af135ba3a86efc99e8a7dd400c45eb0e78 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-stable


- Log -----------------------------------------------------------------
commit ecd935a4fada0737fe09ba20cb33b5304132e13b
Author: Jeremy Allison <jra at samba.org>
Date:   Thu May 22 16:23:07 2008 -0700

    Remove MAX_SESS_ENTRIES and MAX_CONN_ENTRIES limits
    as they are no longer needed now we have IDL marshalling.
    Change the calculation of the 32-bit fileid we return
    to a Windows client. We can't just use the generation
    count as it starts at zero for every smbd - and this
    command must enumerate all files open across all smbds.
    We'd really like combination of process-id + dev + inode +
    generation count to be unique, but as we can't fit that
    into 32 bits just use 16 bits of pid + generation count.
    Jeremy.
    (cherry picked from commit edf73a97f674d4cb30f20b0cc3d6e6b43b4ca3eb)

commit b5991e02c931a92d35ebc9ff8b204c564a0c759f
Author: Jeremy Allison <jra at samba.org>
Date:   Thu May 22 14:36:09 2008 -0700

    Arggh. Got the path/user the wrong way around. IDL is correct :-).
    Jeremy.
    (cherry picked from commit 40548ba51c93de1e2b8a29be07e2f53540f4e9d4)

commit 53f6b604741d242b4ff72b854b36a8867314daad
Author: Jeremy Allison <jra at samba.org>
Date:   Thu May 22 14:28:13 2008 -0700

    Fix 2 bugs with displaying open file state. Firstly
    the IDL is documented incorrectly in the MS-DOCS.
    Username and path need to be reversed (yes I will
    raise this with MS). Secondly, we need to check
    access_mask for the permissions, not share_access
    (share_access are the deny modes).
    Jeremy.
    (cherry picked from commit 35f8b3e7948230bd404078db28eed67bfd896bf7)

commit 94b0b66214208f2cdb4e72b61bde96ac0e4a626f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu May 22 17:15:32 2008 +0200

    build: autogenerate exports/libnetapi.syms
    
    metze
    (cherry picked from commit dc09e04d524dcc92a29da0864666fd4258a81b76)

commit 93c524f768420be923be174f90e8a678ea553d0e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu May 22 16:14:51 2008 +0200

    library-versions: use the same version for talloc and tdb as for the standalone builds
    
    metze
    (cherry picked from commit 79e90f6c5efe97d6671f4def8cc0ffd2f93f48e8)

commit 97de8071782d484c11d94105b7ab330f6c46ad6b
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 17:47:07 2008 +0200

    dsgetdcname: store client sitename for mailslot and cldap replies.
    
    Guenther
    (cherry picked from commit a01ed719c31998620927dc9b1664ba8e36bd9b21)

commit 6a494577b6cb3c86bd6f51df8edfd756420c44fc
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 17:00:31 2008 +0200

    net: Fix net lookup dsgetdcname, no need to pull site ourselves.
    
    Guenther
    (cherry picked from commit 954d0998c2c00140addb6ba3845e80ed91e4effc)

commit 68199c5eee12137e668cd0d7c5ca8583b9f4e14c
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 16:59:46 2008 +0200

    dsgetdcname: add site support.
    
    Guenther
    (cherry picked from commit e305368538eaa72e3008a5517db3708936924297)

commit 2917075f05337cc50e8a8045c2f110d43fd13782
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 16:41:18 2008 +0200

    dsgetdcname: check for invalid sitename/flag combinations.
    
    Guenther
    (cherry picked from commit 255e509474cae92802e90613ccaddb6627ee77cd)

commit 47942cd703065da7df782ae6fa0ee6525bd79ef8
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 16:38:32 2008 +0200

    libads/cldap: store client sitename also keyed by dns domain name.
    
    Guenther
    (cherry picked from commit 0388b2f0cc4d14b005c5b42f2c17ddcbc8bef12a)

commit a051d6dcf69e0979ff922468b87fa1fb2d72608c
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 14 09:42:23 2008 +0200

    dsgetdcname: In case we didn't get a mailslot reply, don't cache the nodestatus.
    
    Guenther
    (cherry picked from commit 12e47be02f93e2f41af5772f6a83568b3574d032)

commit 4f257ef7d42cc935f7bd6c5fdefd15ddf4998880
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 14 09:41:24 2008 +0200

    mailslot: Also pick domain name and pdc name from type 15 cldap reply.
    
    Guenther
    (cherry picked from commit 836877c4005ba081c0a4cc97726830d6dbd62d34)

commit ce0eaafb1e854d2a325079d7637e3b8f6469a8f0
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 9 17:56:04 2008 +0200

    dsgetdcname: add reminder that we need to support ipv6 here once we know how.
    
    Guenther
    (cherry picked from commit 4b3617bf505a835a6d4bb9b80c4ad837a2082dea)

commit 1d85a69dc999a33ca76b3ffc119eb83765db2d87
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 9 17:41:50 2008 +0200

    dsgetdcname: make use of nbt_cldap_netlogon_15.
    
    Guenther
    (cherry picked from commit 5b0eda98f3d127399770f7a037ad3277dbe23393)

commit 2ace27aeb10f1ed73ea958b93aad8433b862c79c
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 9 17:40:29 2008 +0200

    re-run make idl.
    
    Guenther
    (cherry picked from commit 5a216d2340bb06a8866718d1b4b07265006bd900)

commit f1febbf015c2f0dd31d63d3b7ef406560f133883
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 9 17:39:53 2008 +0200

    IDL: Fix nbt_cldap_netlogon union, removing the default member.
    
    Guenther
    (cherry picked from commit a56d7999a445f7157f85e5636f5b2c5e471a98e2)

commit 004aba31ec9872e4a4e1fa3307016f521392e0eb
Author: Günther Deschner <gd at samba.org>
Date:   Fri May 9 17:24:38 2008 +0200

    IDL: Add nbt_cldap_netlogon_15.
    
    Guenther
    (cherry picked from commit 5e91bd1d2bfe458c6f8b3696f99e0f75e43cbae8)

commit 33448c9881d06e4329fe5ae0e61ed24eada018c3
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 8 18:32:22 2008 +0200

    dsgetdcname: use existing messaging_context if possible.
    
    Guenther
    (cherry picked from commit 7889516a384c155a9045aad4409c041fddd0d98d)

commit 514760e800ee8fa0ae2f3817235f3bbd73218a5c
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 8 14:24:46 2008 +0200

    dsgetdcname: the forest name should never be empty.
    
    Guenther
    (cherry picked from commit 2c0a96f1e5fc065fdbeb5671cfa693009321dde8)

commit 9b00f12d108bb6f58dfc650523116c62a5f7b2f9
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 8 14:23:20 2008 +0200

    Use strip_hostname after dsgetdcname/getdcname calls.
    
    Guenther
    (cherry picked from commit 82cbb3269b2e764c9c2a2fbcbe9c29feae07fb62)

commit f2532ddb49a6efec1b2adff6dc93d6da039139e9
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 8 14:16:50 2008 +0200

    util: add strip_hostname() to strip of leading '\\'.
    
    Guenther
    (cherry picked from commit dbf96120d8b33e592bfd3e9df1777f1670e218be)

commit 83a8025d4d1ad431acdd37cc9d41df3072d82ad7
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 8 12:16:04 2008 +0200

    dsgetdcname: add map_dc_and_domain_names() for consolidating returned names.
    
    Guenther
    (cherry picked from commit eb7fee6e2a00326c03aa013058247e06279a4930)

commit 89352f1735b468dec3ef945d56ebc7ba0108a4ce
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:31:59 2008 +0200

    cldap: move out cldap object to fix the build.
    
    Guenther
    (cherry picked from commit 56be9c98d24e64bf855439df21766d30f448f407)

commit e3ba5cc280366d16e4b8d1e993a1a553a9894e70
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:25:05 2008 +0200

    dsgetdcname: fix gencache store for dsgetdcname().
    
    While storing always a type 29 reply structure in gencache, we are now able to
    deliver correct data according to return flags such as DS_RETURN_FLAT_NAME and
    DS_RETURN_DNS_NAME out of the cached data from gencache.
    
    Guenther
    (cherry picked from commit c67b6dc0ca866781043e443177d550e23b83ae36)

commit 80fb1d5ce63c6d68db797602a50ee5f70533a552
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:08:20 2008 +0200

    dsgetdcname: pure cosmetics.
    
    Guenther
    (cherry picked from commit 4b56c294e8ba045c84cab538b3d286e433d292ed)

commit 85e1fd46bc7b3e35301a884e230b6d0cb3f6af6e
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:06:23 2008 +0200

    dsgetdcname: simply call ourself with DS_FORCE_REDISCOVERY after cache expiry.
    
    Guenther
    (cherry picked from commit 847f258632f6d49a3fd45f466c5d3d8c6222ff85)

commit 5e34183f88d30b8c1eb6ac56bf67e1eae4aadbf4
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:04:10 2008 +0200

    dsgetdcname: be more paranoid about the existance of an ip_address.
    
    Guenther
    (cherry picked from commit d13fe66f3d9ba152e3e8197ee6682e175163a6cd)

commit 69b4cfe466ef2272cba338d51daa412712fd9dce
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:02:50 2008 +0200

    dsgetdcname: remove invalid assumption in discover_dc_dns().
    
    Guenther
    (cherry picked from commit f48b2e844b673e99c84cb24f3c3718352ab93ce5)

commit 8c108aeec90755f347c70a89acd2079d40de7cbc
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 18:57:43 2008 +0200

    dsgetdcname: mailslot replies are identical to the cldap ones, use cldap everywhere.
    
    Guenther
    (cherry picked from commit fe904ee77a7fec1674e9db660978c40c17897f77)

commit bfdef4999fc477ab47c08f1cc5af1fcb1378c710
Author: Volker Lendecke <vl at samba.org>
Date:   Mon May 5 17:24:17 2008 +0200

    Fix a C++ warning
    (cherry picked from commit e7a4027acf38bf5800d9d8ba477afb5daaf517ce)

commit e1d867aabe6d0aaab95eed86ac90120efe661485
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 18:55:45 2008 +0200

    dsgetdcname: wait a little longer for mailslot replies.
    
    Guenther
    (cherry picked from commit bc0d7a90dcc7bf702b24feb16abf4634ff178671)

commit e05739603e4c823d9947c102b92f4388cccf61f6
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 18:39:24 2008 +0200

    dsgetdcname: map additional flags to nt_version.
    
    Guenther
    (cherry picked from commit 1009123b8600e6ccebe180f4a2f87c217638fef8)

commit fcf1cbae0509baac710949afdb200750fc30b618
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 18:38:37 2008 +0200

    dsgetdcname: use make_dc_info_from_cldap_reply() for cldap replies.
    
    Guenther
    (cherry picked from commit a3e5b073f0474543ca74b40775ce1d7f80719c96)

commit 967caf4f9ce839af83b58e99afbcdc925dc233c0
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 18:36:03 2008 +0200

    dsgetdcname: add make_dc_info_from_cldap_reply().
    
    Guenther
    (cherry picked from commit 9db2e50a20caabaf90ce03203a066ddd7820d33a)

commit 28889f2d7e2e0ce326de6726f95253d06fa58c39
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 16:49:39 2008 +0200

    dsgetdcname: add get_cldap_reply_server_flags().
    
    Guenther
    (cherry picked from commit 3c05c56d4c0aac8106684cda3152c65299c63075)

commit b6cc226d9ee22cf808e1575166dadb181f178f8c
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 15:49:09 2008 +0200

    cldap: let ads_cldap_netlogon() return all possible cldap replies.
    
    Guenther
    (cherry picked from commit 6f9d5e1cc94bc90685b54c04622b8f3357bd2f69)

commit 332317be5696ba5e8d1d07cd23878160a9bc91a6
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 15:21:41 2008 +0200

    dsgetdcname: add pull_mailslot_cldap_reply().
    
    Guenther
    (cherry picked from commit 95fb01d8702342265f8837a368dc42f4a4d394d5)

commit 2ebce34a3968e1081f47da1bb55c7b0b80a767f0
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 14:38:35 2008 +0200

    dsgetdcname: add map_ds_flags_to_nt_version.
    
    Guenther
    (cherry picked from commit 1809ea22c31ee28e109f49701f91534177027165)

commit 95a50f28bfd79353498824eb6d05337cdcdc6088
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:01:46 2008 +0200

    gencache: add some const.
    
    Guenther
    (cherry picked from commit ec9f8c4cf67c82f4665ed51e4fd0181f5f147ea0)

commit 0e02ed6fdf65b3303c97e204adc65593ef2f986a
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:01:29 2008 +0200

    re-run make idl.
    
    Guenther
    (cherry picked from commit 4c0805220821719ad1db1590457ab66a577d26a7)

commit e13a19b295ef0547f0a635b2125249e9e9141b8f
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 21:01:09 2008 +0200

    IDL: make nbt_cldap_netlogon_29 public.
    
    Guenther
    (cherry picked from commit 7159cce8055d0197cfc1a9daa08d2370527ea3bc)

commit ed38ba5432dce0e6a5edcd6188ef6401312011b9
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 14:11:27 2008 +0200

    re-run make idl.
    
    Guenther
    (cherry picked from commit 4bef77a4566590b3e20470f538f20848ed49f264)

commit a2c9139609b2e1873d6062489570ea9e1b27cc2a
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 14:10:34 2008 +0200

    IDL: add missing case 14 and 15 to nbt_cldap_netlogon union.
    
    Guenther
    (cherry picked from commit 9fcda4627b1c1d2836b6cbd1141f4e843ecab115)

commit 7f19c94df4b1d0e3e37617b2e220f8d97efb2509
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 7 14:09:41 2008 +0200

    dsgetdcname: remove invalid assumptions when using DNS for the DC query.
    
    Guenther
    (cherry picked from commit a81818ae54159755df441cc6421e5b272035f412)

commit 8807bf744da5b2d9efdfe371e5eb5c6a31be728e
Author: Günther Deschner <gd at samba.org>
Date:   Mon May 5 18:04:41 2008 +0200

    mailslot/cldap: use nt_version bits in queries.
    
    Guenther
    (cherry picked from commit b261f063125f8454d8f4e8f6b6f8aa5bc393ea34)

commit fcf6a61ad440f90d198e1d30d50eb3b4f2df86e1
Author: Günther Deschner <gd at samba.org>
Date:   Mon May 5 17:22:49 2008 +0200

    dsgetdcname: use correct dc name for name cache store.
    
    Guenther
    (cherry picked from commit ce1556d0fb993b78f02ac4cc4f8a45ab7a0b5397)

commit 5587266df009382742802cf1e18dcdd8ce84e1b6
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 16:03:58 2008 +0200

    re-run make idl.
    
    Guenther
    (cherry picked from commit 14327b11baa18f185e747a321e75abe581d153d2)

commit 0fc9a2a5621dec2e41db4e442e89534d3f52aeb3
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 16:02:23 2008 +0200

    build: fix make everything.
    
    Guenther
    (cherry picked from commit d2cd011f4379ed2972c8e4c96f6757961fdceaee)

commit 30c52fc957b496bfc2689195e1edd1f6b227d543
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 15:49:20 2008 +0200

    IDL: add nbt_cldap_netlogon_29 which includes the next_closest_site.
    
    Guenther
    (cherry picked from commit 909c9ae7ecbaa1bcc38d5c9ebc10fc5fb9a7bf59)

commit 130e878f489d42c5ddf24575ebe65b888c1489e7
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 15:19:32 2008 +0200

    IDL: use nbt_netlogon_command in cldap replies.
    
    Guenther
    (cherry picked from commit bc92507fb425ae56568c72298b9d7e964ae372d0)

commit 6dd9df73c51391458deca2965b500be4d8d40e71
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:58:49 2008 +0200

    build: fix some build dependencies.
    
    Guenther
    (cherry picked from commit 067a6931a23631dfb902fb4a180f3c44a5455d51)

commit 1bc7c99f6b2090e9bb684925cbb260794b742ba1
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:58:28 2008 +0200

    Re-run make idl.
    
    Guenther
    (cherry picked from commit 08b5758e00597a4828044c4d4ac97be0741b0cf2)

commit 35c2462e57d0ac05af517ab1d2bba8ae76a5521c
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 01:10:13 2008 +0200

    IDL: use nbt_dc_sock_addr.
    
    Guenther
    (cherry picked from commit 5a46f34fa364dfb20d7de93164b56d08dc4fb427)

commit 475caf2526fed20f11c5015d0f8284a48e6fc778
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:56:31 2008 +0200

    IDL: move some netlogon DS flags to NBT where they actually showup first.
    
    Guenther
    (cherry picked from commit 163f17f84bc602f9944153854e42cf643c5c4768)

commit ff62bd0c047dad21d52397b2afcf3aa448215ef9
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:35:57 2008 +0200

    IDL: use samr_AcctFlags in nbt_ntlogon_sam_logon.
    
    Guenther
    (cherry picked from commit 5f5658b3dc6407ca05368f657dc3296425844434)

commit acd493f627ee6536b7113d87d666a04e40bda906
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 30 00:34:43 2008 +0200

    IDL: add nbt_netlogon_version.
    
    Guenther
    (cherry picked from commit 5963bbea82bf0c11158bd1db00710c3157299bcc)

commit 1bf1c5e54f25cc37f7745f49d96bc5571ed10a4e
Author: Günther Deschner <gd at samba.org>
Date:   Thu Apr 24 21:53:55 2008 +0200

    mailslot/dsgetdcname: do what XP does and request nt_version 11.
    
    This allows dsgetdcname to query for a flat, non-dns domain name and
    come back with all information about the DC (site names, guid, forest,
    etc.) based on a mailslot reply. The version 11 request is downgraded
    to version 1 in case we do a query against NT4.
    
    Guenther
    (cherry picked from commit d8b2ff3c8769e8da9c21dec483e6edb7aa2d00f3)

commit b0bd47097be782645c74753ab3d4bf80e7e97198
Author: Günther Deschner <gd at samba.org>
Date:   Thu Apr 24 21:37:42 2008 +0200

    mailslot: allow to give back struct nbt_ntlogon_packet.
    
    Guenther
    (cherry picked from commit 2b178dcae608ecc05f62593a7a0c2a127b8b7ca2)

commit b56c767b26278573e288b558a226c6bfe2c8b220
Author: Günther Deschner <gd at samba.org>
Date:   Thu Apr 24 21:29:48 2008 +0200

    mailslot: make sure we are looking at the correct reply structure.
    
    Guenther
    (cherry picked from commit c6ce07fdf57c8b63ba6d72b622be261723cb55e3)

commit 6b8a916a68725fbc788c8477678cb09dfe633307
Author: Günther Deschner <gd at samba.org>
Date:   Thu Apr 24 21:28:03 2008 +0200

    mailslot: allow to define nt_version in send_getdc_request().
    
    Guenther
    (cherry picked from commit ce3728191b23badfd5eb92701e4cebf84273b61e)

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile.in                  |   48 ++-
 source/exports/libnetapi.syms       |    3 -
 source/lib/gencache.c               |    2 +-
 source/lib/netapi/getdc.c           |    1 +
 source/lib/netapi/joindomain.c      |   23 +-
 source/lib/util.c                   |   19 +
 source/libads/cldap.c               |  152 ++++++-
 source/libads/ldap.c                |    3 +-
 source/libnet/libnet_join.c         |   12 +-
 source/library-versions.in          |    4 +-
 source/librpc/gen_ndr/libnet_join.h |    2 +
 source/librpc/gen_ndr/nbt.h         |   88 +++-
 source/librpc/gen_ndr/ndr_nbt.c     |  894 ++++++++++++++++++++++++++++++-----
 source/librpc/gen_ndr/ndr_nbt.h     |    8 +
 source/librpc/gen_ndr/netlogon.h    |    6 +-
 source/librpc/idl/libnet_join.idl   |    2 +
 source/librpc/idl/nbt.idl           |  155 +++++--
 source/librpc/idl/netlogon.idl      |    6 +-
 source/libsmb/clidgram.c            |   96 ++++-
 source/libsmb/dsgetdcname.c         |  793 +++++++++++++++++++++++++-------
 source/rpc_server/srv_srvsvc_nt.c   |   31 +-
 source/rpc_server/srv_wkssvc_nt.c   |    2 +
 source/utils/net_ads.c              |    4 +-
 source/utils/net_lookup.c           |   16 +-
 source/winbindd/winbindd_cm.c       |   16 +-
 source/winbindd/winbindd_locator.c  |   10 +-
 26 files changed, 1950 insertions(+), 446 deletions(-)
 delete mode 100644 source/exports/libnetapi.syms


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index 71b2018..0430de2 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -160,6 +160,8 @@ LIBWBCLIENT=@LIBWBCLIENT_SHARED@
 LIBNETAPI_SHARED_TARGET=@LIBNETAPI_SHARED_TARGET@
 LIBNETAPI_STATIC_TARGET=@LIBNETAPI_STATIC_TARGET@
 LIBNETAPI=$(LIBNETAPI_STATIC_TARGET) @LIBNETAPI_SHARED@
+LIBNETAPI_SYMS=$(srcdir)/exports/libnetapi.syms
+LIBNETAPI_HEADERS=$(srcdir)/lib/netapi/netapi.h
 
 FLAGS1 = $(CFLAGS) @FLAGS1@ @SAMBA_CPPFLAGS@ $(CPPFLAGS)
 FLAGS2 =
@@ -386,7 +388,7 @@ LIBADS_OBJ = libads/ldap.o libads/ldap_printer.o \
 	     libads/krb5_setpw.o libads/ldap_user.o \
 	     libads/ads_struct.o libads/kerberos_keytab.o \
              libads/disp_sec.o libads/ads_utils.o libads/ldap_utils.o \
-	     libads/cldap.o libads/ldap_schema.o libads/util.o libads/ndr.o
+	     libads/ldap_schema.o libads/util.o libads/ndr.o
 
 LIBADS_SERVER_OBJ = libads/kerberos_verify.o libads/authdata.o \
 		    librpc/ndr/ndr_krb5pac.o \
@@ -421,6 +423,8 @@ LIBSMB_OBJ0 = \
 LIBSAMBA_OBJ = $(LIBSMB_OBJ0) \
 	       $(LIBSMB_ERR_OBJ)
 
+CLDAP_OBJ = libads/cldap.o
+
 LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
 	     libsmb/clikrb5.o libsmb/clispnego.o libsmb/asn1.o \
 	     libsmb/clirap.o libsmb/clierror.o libsmb/climessage.o \
@@ -432,7 +436,8 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
 	     libsmb/smb_seal.o libsmb/async_smb.o \
 	     $(LIBSAMBA_OBJ) \
 	     $(LIBNMB_OBJ) \
-	     $(LIBNBT_OBJ)
+	     $(LIBNBT_OBJ) \
+	     $(CLDAP_OBJ)
 
 RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o
 
@@ -711,7 +716,8 @@ NMBD_OBJ1 = nmbd/asyncdns.o nmbd/nmbd.o nmbd/nmbd_become_dmb.o \
             nmbd/nmbd_workgroupdb.o nmbd/nmbd_synclists.o smbd/connection.o
 
 NMBD_OBJ = $(NMBD_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
-           $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ)
+           $(PROFILE_OBJ) $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) \
+	   librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 SWAT_OBJ1 = web/cgi.o web/diagnose.o web/startstop.o web/statuspage.o \
            web/swat.o web/neg_lang.o
@@ -890,7 +896,8 @@ NET_OBJ = $(NET_OBJ1) \
 	  $(PRIVILEGES_BASIC_OBJ)
 
 CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
-	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ)
+	  $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) $(POPT_LIB_OBJ) \
+	  librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 CIFS_MOUNT_OBJ = client/mount.cifs.o
 
@@ -905,24 +912,29 @@ SMBTORTURE_OBJ1 = torture/torture.o torture/nbio.o torture/scanner.o torture/uta
 		torture/denytest.o torture/mangle_test.o
 
 SMBTORTURE_OBJ = $(SMBTORTURE_OBJ1) $(PARAM_OBJ) \
-	$(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ)
+	$(LIBSMB_OBJ) $(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) \
+	librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 MASKTEST_OBJ = torture/masktest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
-                 $(LIB_NONSMBD_OBJ)
+                 $(LIB_NONSMBD_OBJ) \
+		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 MSGTEST_OBJ = torture/msgtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
-                 $(LIB_NONSMBD_OBJ)
+                 $(LIB_NONSMBD_OBJ) \
+		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 LOCKTEST_OBJ = torture/locktest.o $(PARAM_OBJ) $(LOCKING_OBJ) $(KRBCLIENT_OBJ) \
-               $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ)
+               $(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) \
+               librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 NSSTEST_OBJ = torture/nsstest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
-                 $(LIB_NONSMBD_OBJ)
+                 $(LIB_NONSMBD_OBJ) \
+		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 PDBTEST_OBJ = torture/pdbtest.o $(PARAM_OBJ) $(LIBSMB_OBJ) $(KRBCLIENT_OBJ) \
 		$(LIB_NONSMBD_OBJ) $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(GROUPDB_OBJ) \
-		$(SMBLDAP_OBJ) $(POPT_LIB_OBJ) $(LDB_OBJ)
-
+		$(SMBLDAP_OBJ) $(POPT_LIB_OBJ) $(LDB_OBJ) \
+		librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OBJ)
 
@@ -931,7 +943,8 @@ SMBICONV_OBJ = $(PARAM_OBJ) torture/smbiconv.o $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ
 LOG2PCAP_OBJ = utils/log2pcaphex.o
 
 LOCKTEST2_OBJ = torture/locktest2.o $(PARAM_OBJ) $(LOCKING_OBJ) $(LIBSMB_OBJ) \
-		$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ)
+		$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) \
+		librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 SMBCACLS_OBJ = utils/smbcacls.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
 		$(KRBCLIENT_OBJ) $(LIB_NONSMBD_OBJ) $(RPC_PARSE_OBJ) \
@@ -972,7 +985,8 @@ NDRDUMP_OBJ = librpc/tools/ndrdump.o \
 DEBUG2HTML_OBJ = utils/debug2html.o utils/debugparse.o
 
 SMBFILTER_OBJ = utils/smbfilter.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
-                 $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ)
+                 $(LIB_NONSMBD_OBJ) $(KRBCLIENT_OBJ) \
+		 librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
 	    $(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(LIBSMB_OBJ) \
@@ -995,7 +1009,8 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) $(LIBNDR_GEN_OBJ) \
 	    $(PRIVILEGES_BASIC_OBJ)
 
 WINBIND_WINS_NSS_OBJ = nsswitch/wins.o $(PARAM_OBJ) \
-	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ)
+	$(LIBSMB_OBJ) $(LIB_NONSMBD_OBJ) $(NSSWINS_OBJ) $(KRBCLIENT_OBJ) \
+	librpc/gen_ndr/ndr_samr.o librpc/gen_ndr/ndr_lsa.o
 
 PAM_SMBPASS_OBJ_0 = pam_smbpass/pam_smb_auth.o pam_smbpass/pam_smb_passwd.o \
 		pam_smbpass/pam_smb_acct.o pam_smbpass/support.o
@@ -1608,7 +1623,10 @@ bin/libaddns.a: $(BINARY_PREREQS) $(LIBADDNS_OBJ)
 	@echo Linking non-shared library $@
 	@-$(AR) -rc $@ $(LIBADDNS_OBJ)
 
-$(LIBNETAPI_SHARED_TARGET): $(BINARY_PREREQS) $(LIBNETAPI_OBJ) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
+$(LIBNETAPI_SYMS): $(LIBNETAPI_HEADERS)
+	@$(MKSYMS_SH) $(AWK) $@ $(LIBNETAPI_HEADERS)
+
+$(LIBNETAPI_SHARED_TARGET): $(BINARY_PREREQS) $(LIBNETAPI_OBJ) $(LIBNETAPI_SYMS) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
 	@echo Linking shared library $@
 	@$(SHLD_DSO) $(LIBNETAPI_OBJ) \
 		@LIBTALLOC_LIBS@ @LIBTDB_LIBS@ @LIBWBCLIENT_SHARED@ $(LIBS) \
diff --git a/source/exports/libnetapi.syms b/source/exports/libnetapi.syms
deleted file mode 100644
index eb34bfc..0000000
--- a/source/exports/libnetapi.syms
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	global: *;
-};
diff --git a/source/lib/gencache.c b/source/lib/gencache.c
index 6131269..b773f83 100644
--- a/source/lib/gencache.c
+++ b/source/lib/gencache.c
@@ -324,7 +324,7 @@ bool gencache_get_data_blob(const char *keystr, DATA_BLOB *blob, bool *expired)
  * @retval false on failure
  **/
 
-bool gencache_set_data_blob(const char *keystr, DATA_BLOB *blob, time_t timeout)
+bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob, time_t timeout)
 {
 	bool ret = False;
 	int tdb_ret;
diff --git a/source/lib/netapi/getdc.c b/source/lib/netapi/getdc.c
index 38aaf0e..c1d021b 100644
--- a/source/lib/netapi/getdc.c
+++ b/source/lib/netapi/getdc.c
@@ -118,6 +118,7 @@ WERROR DsGetDcName_l(struct libnetapi_ctx *ctx,
 	NTSTATUS status;
 
 	status = dsgetdcname(ctx,
+			     NULL,
 			     r->in.domain_name,
 			     r->in.domain_guid,
 			     r->in.site_name,
diff --git a/source/lib/netapi/joindomain.c b/source/lib/netapi/joindomain.c
index 74ed8f2..66f7cfb 100644
--- a/source/lib/netapi/joindomain.c
+++ b/source/lib/netapi/joindomain.c
@@ -47,18 +47,20 @@ WERROR NetJoinDomain_l(struct libnetapi_ctx *mem_ctx,
 	if (r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE) {
 		NTSTATUS status;
 		struct netr_DsRGetDCNameInfo *info = NULL;
+		const char *dc = NULL;
 		uint32_t flags = DS_DIRECTORY_SERVICE_REQUIRED |
 				 DS_WRITABLE_REQUIRED |
 				 DS_RETURN_DNS_NAME;
-		status = dsgetdcname(mem_ctx, r->in.domain,
+		status = dsgetdcname(mem_ctx, NULL, r->in.domain,
 				     NULL, NULL, flags, &info);
 		if (!NT_STATUS_IS_OK(status)) {
 			libnetapi_set_error_string(mem_ctx,
 				"%s", get_friendly_nt_error_msg(status));
 			return ntstatus_to_werror(status);
 		}
-		j->in.dc_name = talloc_strdup(mem_ctx,
-					      info->dc_unc);
+
+		dc = strip_hostname(info->dc_unc);
+		j->in.dc_name = talloc_strdup(mem_ctx, dc);
 		W_ERROR_HAVE_NO_MEMORY(j->in.dc_name);
 	}
 
@@ -174,10 +176,11 @@ WERROR NetUnjoinDomain_l(struct libnetapi_ctx *mem_ctx,
 	} else {
 		NTSTATUS status;
 		struct netr_DsRGetDCNameInfo *info = NULL;
+		const char *dc = NULL;
 		uint32_t flags = DS_DIRECTORY_SERVICE_REQUIRED |
 				 DS_WRITABLE_REQUIRED |
 				 DS_RETURN_DNS_NAME;
-		status = dsgetdcname(mem_ctx, domain,
+		status = dsgetdcname(mem_ctx, NULL, domain,
 				     NULL, NULL, flags, &info);
 		if (!NT_STATUS_IS_OK(status)) {
 			libnetapi_set_error_string(mem_ctx,
@@ -186,8 +189,9 @@ WERROR NetUnjoinDomain_l(struct libnetapi_ctx *mem_ctx,
 				get_friendly_nt_error_msg(status));
 			return ntstatus_to_werror(status);
 		}
-		u->in.dc_name = talloc_strdup(mem_ctx,
-					      info->dc_unc);
+
+		dc = strip_hostname(info->dc_unc);
+		u->in.dc_name = talloc_strdup(mem_ctx, dc);
 		W_ERROR_HAVE_NO_MEMORY(u->in.dc_name);
 
 		u->in.domain_name = domain;
@@ -352,10 +356,11 @@ WERROR NetGetJoinableOUs_l(struct libnetapi_ctx *ctx,
 	ADS_STATUS ads_status;
 	ADS_STRUCT *ads = NULL;
 	struct netr_DsRGetDCNameInfo *info = NULL;
+	const char *dc = NULL;
 	uint32_t flags = DS_DIRECTORY_SERVICE_REQUIRED |
 			 DS_RETURN_DNS_NAME;
 
-	status = dsgetdcname(ctx, r->in.domain,
+	status = dsgetdcname(ctx, NULL, r->in.domain,
 			     NULL, NULL, flags, &info);
 	if (!NT_STATUS_IS_OK(status)) {
 		libnetapi_set_error_string(ctx, "%s",
@@ -363,7 +368,9 @@ WERROR NetGetJoinableOUs_l(struct libnetapi_ctx *ctx,
 		return ntstatus_to_werror(status);
 	}
 
-	ads = ads_init(r->in.domain, r->in.domain, info->dc_unc);
+	dc = strip_hostname(info->dc_unc);
+
+	ads = ads_init(r->in.domain, r->in.domain, dc);
 	if (!ads) {
 		return WERR_GENERAL_FAILURE;
 	}
diff --git a/source/lib/util.c b/source/lib/util.c
index 5f95bcc..0a32f0f 100644
--- a/source/lib/util.c
+++ b/source/lib/util.c
@@ -3453,3 +3453,22 @@ bool is_valid_policy_hnd(const POLICY_HND *hnd)
 	return (memcmp(&tmp, hnd, sizeof(tmp)) != 0);
 }
 
+/****************************************************************
+ strip off leading '\\' from a hostname
+****************************************************************/
+
+const char *strip_hostname(const char *s)
+{
+	if (!s) {
+		return NULL;
+	}
+
+	if (strlen_m(s) < 3) {
+		return s;
+	}
+
+	if (s[0] == '\\') s++;
+	if (s[0] == '\\') s++;
+
+	return s;
+}
diff --git a/source/libads/cldap.c b/source/libads/cldap.c
index be084c9..efe13cc 100644
--- a/source/libads/cldap.c
+++ b/source/libads/cldap.c
@@ -3,6 +3,7 @@
    net ads cldap functions 
    Copyright (C) 2001 Andrew Tridgell (tridge at samba.org)
    Copyright (C) 2003 Jim McDonough (jmcd at us.ibm.com)
+   Copyright (C) 2008 Guenther Deschner (gd at samba.org)
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -118,7 +119,8 @@ static void gotalarm_sig(void)
 */
 static int recv_cldap_netlogon(TALLOC_CTX *mem_ctx,
 			       int sock,
-			       struct nbt_cldap_netlogon_5 *reply)
+			       uint32_t *nt_version,
+			       union nbt_cldap_netlogon **reply)
 {
 	int ret;
 	ASN1_DATA data;
@@ -129,8 +131,7 @@ static int recv_cldap_netlogon(TALLOC_CTX *mem_ctx,
 	int i1;
 	/* half the time of a regular ldap timeout, not less than 3 seconds. */
 	unsigned int al_secs = MAX(3,lp_ldap_timeout()/2);
-	union nbt_cldap_netlogon p;
-	enum ndr_err_code ndr_err;
+	union nbt_cldap_netlogon *r = NULL;
 
 	blob = data_blob(NULL, 8192);
 	if (blob.data == NULL) {
@@ -184,16 +185,23 @@ static int recv_cldap_netlogon(TALLOC_CTX *mem_ctx,
 		return -1;
 	}
 
-	ndr_err = ndr_pull_union_blob_all(&os3, mem_ctx, &p, 5,
-		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
-	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+	r = TALLOC_ZERO_P(mem_ctx, union nbt_cldap_netlogon);
+	if (!r) {
+		errno = ENOMEM;
+		data_blob_free(&os1);
+		data_blob_free(&os2);
+		data_blob_free(&os3);
+		data_blob_free(&blob);
 		return -1;
 	}
 
-	*reply = p.logon5;
-
-	if (DEBUGLEVEL >= 10) {
-		NDR_PRINT_UNION_DEBUG(nbt_cldap_netlogon, 5, &p);
+	if (!pull_mailslot_cldap_reply(mem_ctx, &os3, r, nt_version)) {
+		data_blob_free(&os1);
+		data_blob_free(&os2);
+		data_blob_free(&os3);
+		data_blob_free(&blob);
+		TALLOC_FREE(r);
+		return -1;
 	}
 
 	data_blob_free(&os1);
@@ -203,6 +211,12 @@ static int recv_cldap_netlogon(TALLOC_CTX *mem_ctx,
 	
 	asn1_free(&data);
 
+	if (reply) {
+		*reply = r;
+	} else {
+		TALLOC_FREE(r);
+	}
+
 	return 0;
 }
 
@@ -213,7 +227,8 @@ static int recv_cldap_netlogon(TALLOC_CTX *mem_ctx,
 bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
 			const char *server,
 			const char *realm,
-			struct nbt_cldap_netlogon_5 *reply)
+			uint32_t *nt_version,
+			union nbt_cldap_netlogon **reply)
 {
 	int sock;
 	int ret;
@@ -225,12 +240,12 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
 		return False;
 	}
 
-	ret = send_cldap_netlogon(sock, realm, global_myname(), 6);
+	ret = send_cldap_netlogon(sock, realm, global_myname(), *nt_version);
 	if (ret != 0) {
 		close(sock);
 		return False;
 	}
-	ret = recv_cldap_netlogon(mem_ctx, sock, reply);
+	ret = recv_cldap_netlogon(mem_ctx, sock, nt_version, reply);
 	close(sock);
 
 	if (ret == -1) {
@@ -239,3 +254,114 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
 
 	return True;
 }
+
+/*******************************************************************
+  do a cldap netlogon query.  Always 389/udp
+*******************************************************************/
+
+bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx,
+			  const char *server,
+			  const char *realm,
+			  struct nbt_cldap_netlogon_5 *reply5)
+{
+	uint32_t nt_version = NETLOGON_VERSION_5 | NETLOGON_VERSION_5EX;
+	union nbt_cldap_netlogon *reply = NULL;
+	bool ret;
+
+	ret = ads_cldap_netlogon(mem_ctx, server, realm, &nt_version, &reply);
+	if (!ret) {
+		return false;
+	}
+
+	if (nt_version != (NETLOGON_VERSION_5 | NETLOGON_VERSION_5EX)) {
+		return false;
+	}
+
+	*reply5 = reply->logon5;
+
+	return true;
+}
+
+/****************************************************************
+****************************************************************/
+
+bool pull_mailslot_cldap_reply(TALLOC_CTX *mem_ctx,
+			       const DATA_BLOB *blob,
+			       union nbt_cldap_netlogon *r,
+			       uint32_t *nt_version)
+{
+	enum ndr_err_code ndr_err;
+	uint32_t nt_version_query = ((*nt_version) & 0x0000001f);
+	uint16_t command = 0;
+
+	ndr_err = ndr_pull_struct_blob(blob, mem_ctx, &command,
+			(ndr_pull_flags_fn_t)ndr_pull_uint16);
+	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		return false;
+	}
+
+	switch (command) {
+		case 0x13: /* 19 */
+		case 0x15: /* 21 */
+		case 0x17: /* 23 */
+			 break;
+		default:
+			DEBUG(1,("got unexpected command: %d (0x%08x)\n",
+				command, command));
+			return false;
+	}
+
+	ndr_err = ndr_pull_union_blob_all(blob, mem_ctx, r, nt_version_query,
+		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+	if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		goto done;
+	}
+
+	/* when the caller requested just those nt_version bits that the server
+	 * was able to reply to, we are fine and all done. otherwise we need to
+	 * assume downgraded replies which are painfully parsed here - gd */
+
+	if (nt_version_query & NETLOGON_VERSION_WITH_CLOSEST_SITE) {
+		nt_version_query &= ~NETLOGON_VERSION_WITH_CLOSEST_SITE;
+	}
+	ndr_err = ndr_pull_union_blob_all(blob, mem_ctx, r, nt_version_query,
+		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+	if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		goto done;
+	}
+	if (nt_version_query & NETLOGON_VERSION_5EX_WITH_IP) {
+		nt_version_query &= ~NETLOGON_VERSION_5EX_WITH_IP;
+	}
+	ndr_err = ndr_pull_union_blob_all(blob, mem_ctx, r, nt_version_query,
+		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+	if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		goto done;
+	}
+	if (nt_version_query & NETLOGON_VERSION_5EX) {
+		nt_version_query &= ~NETLOGON_VERSION_5EX;
+	}
+	ndr_err = ndr_pull_union_blob_all(blob, mem_ctx, r, nt_version_query,
+		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+	if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		goto done;
+	}
+	if (nt_version_query & NETLOGON_VERSION_5) {
+		nt_version_query &= ~NETLOGON_VERSION_5;
+	}
+	ndr_err = ndr_pull_union_blob_all(blob, mem_ctx, r, nt_version_query,
+		       (ndr_pull_flags_fn_t)ndr_pull_nbt_cldap_netlogon);
+	if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+		goto done;
+	}
+
+	return false;
+
+ done:
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_UNION_DEBUG(nbt_cldap_netlogon, nt_version_query, r);
+	}
+
+	*nt_version = nt_version_query;
+
+	return true;
+}
diff --git a/source/libads/ldap.c b/source/libads/ldap.c
index 181da9e..063645f 100644
--- a/source/libads/ldap.c
+++ b/source/libads/ldap.c
@@ -199,7 +199,7 @@ bool ads_try_connect(ADS_STRUCT *ads, const char *server )
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list