[proof of concept] libwbclient.so
Gerald (Jerry) Carter
jerry at samba.org
Thu Sep 6 21:25:42 GMT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Gerald (Jerry) Carter wrote:
> Just an update...
>
> I've decoupled smbd from winbindd completely now. I'll push out
> a git branch once I clean up a few things. Probably tomorrow.
>
> I also played about with a libsambautil.so which has lib/replace
> and lib/talloc. Not using is currently, but at one point I
> thought I might. I'll include that in branch as well ven though
> it's a minor change.
New patch and doxygen files posted to
http://samba.org/~jerry/src/libwbclient/
I've pushed out a git branch "libwbclient-test" (based on
the 3.2.0 code) to
git://git.samba.org/jerry/samba-3-0.git
(The actual commits are from coffeedude at plainjoe.org which
is just another one of my email accounts)
One thing that did come up is the handy use of talloc().
I thought about this and even built the libsambautil.so
which included talloc for use by libwbclient. But in the
end, I felt like it was unfair to cross the API boundary
with TALLOC_CTX* and therefore require the calling
application to use talloc. I love talloc, but at least for
right now, I think it is better to stick with malloc().
This does mean that I've got to find a better way to manage
memory in wbcLookupRids(). And we take a bit of a hit having
to copy memory in winbind_lookup_rids(). Suggestions welcome.
Now to respond to past comments:
James Peach wrote:
> The SUCCESS/FAIL values of wbcStatus are OK, but if you
> are going to make wbcStatus more detailed I'd
> suggest renaming WBC_FAIL to WBC_UNKNOWN_ERROR or
> something.
Have not done this yet but am planning to.
> How about bundling lsa_SidType into struct domain_sid?
> That way callers will always know what type of SID they
> are dealing with when they pass it around.
This brings up a question of compatibility between the
libwbclient struct domain_sid and the Samba DOM_SID.
I don't want to require these to be binary compatible
as that would break the entire reason for using a DSO.
(metze had suggested consolidating on DOM_SID).
What I've done instead is to introduce a mapping layer in
lib/winbind_util.c (included in the patch) which preserves
the existing winbind_XX() semantics (from wb_client.c) used
by smbd. So for example, in winbind_lookup_name() I
convert the DOM_SID to a struct domain_sid before calling
wbcLookupName(). Currently this is just a memcpy() since
the structures are identical but as long as this mapping
layer is in place, then we could extend struct domain_sid
to include the wbcSidType without breaking smbd.
Comments?
> looks pretty good, a few comments:
> - hardcode MAXSUBAUTHS to avoid binary compatibility
> issues if you hit a preprocessor conflict
> - use the wbc prefix for the new structures and types
> - wbcErrorString() should return const char *
Still have not completely done these.
cheers, jerry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFG4HBWIR7qMdg1EfYRArL/AJ4+i7Nng6kIPwvaj62Ar9vrbnYwNwCgmkp3
/bynOZPZXLOUT+603cocDTI=
=/DNC
-----END PGP SIGNATURE-----
More information about the samba-technical
mailing list