cwrap

Stefan (metze) Metzmacher metze at samba.org
Sun Jan 26 03:15:58 MST 2014


Hi Andreas,

> you probably know that I'm working on improving socket_wrapper, nss_wrapper 
> and uid_wrapper so that they are preloadable. The advantage of having these 
> wrappers preloadable is that they work with any binary and also system 
> libraries (like openldap). We currently try to get them working with MIT KRB5, 
> but we hit some bugs in socket_wrapper we are investigating right now.
> 
> The wrappers are in a state that I would say they are stable enough to be used 
> inside of Samba. All wrappers have a test coverage above 75%. This should be 
> improved and we also need new features especially in socket_wrapper. So I 
> would like to switch to a push-only-with-peer-review model like we have in 
> Samba. This means I need people who are willing to do at least the review work 
> :)
> 
> I've created a TODO file in the repository of each wrapper if you want to 
> help!
> 
> I will give a talk about cwrap at FOSDEM:
> https://fosdem.org/2014/schedule/event/libc_wrapper_project/
> 
> Version 1.0.0 of the wrappers will be released that day. Packages will follow 
> the next days.
> 
> 
> A first version of the homepage is online at http://cwrap.org/. I will get 
> some professional help to improve it till FOSDEM :)
> 
> 
> If you want to help with the development or want to learn more about them, 
> each wrapper needs more test coverage :)
> 
> 
> I've started to integrate uid_wrapper in  Samba like it has been requested. I 
> just need a way to pass the path to the wrapper from waf to selftest.

https://git.samba.org/?p=asn/samba.git;a=commitdiff;h=2f8c2ccfa0a0486ef825de2b687986482f4797c1
Using just 'libuid_wrapper.so' works for the system provided version?

If so you can add this in lib/uid_wrapper/wscript

...
  if conf.CHECK_BUNDLED_SYSTEM('uid_wrapper', minversion=VERSION,
set_target=False):
      conf.DEFINE('USING_SYSTEM_UID_WRAPPER', 1)
      libuid_wrapper_so_path = 'libuid_wrapper.so'
  else:
      libuid_wrapper_so_path = 'bin/shared/private/libuid_wrapper.so'

  conf.DEFINE('LIBUID_WRAPPER_SO_PATH', libuid_wrapper_so_path)
...

Do we still nee conf.DEFINE('UID_WRAPPER', 1) ?

In selftest/wscript we need something like:

 os.environ['LIBUID_WRAPPER_SO_PATH'] = CONFIG_GET('LIBUID_WRAPPER_SO_PATH')

And then use $ENV{LIBUID_WRAPPER_SO_PATH} in selftest/selftest.pl.

> https://git.samba.org/?p=asn/samba.git;a=shortlog;h=refs/heads/cwrap

So Samba will pick up the system version of libuid_wrapper.so if the
version is
>= the internal version, otherwise we'll use our own one, correct?

So we can rely on having the features of our own copy, correct?

> Work in progress:
> Support for IP_PKTINFO for sendmsg/recvmsg
> http://git.cryptomilk.org/projects/socket_wrapper.git/log/?h=recvmsg_pktinfo

Can we get the fd-passing with inet/inet6 sockets implemented for 1.0.0?
I guess we need to handle it in recvmsg() similar to accept(),
we just need to check is it's already in our list, if so we just add
the additional fd to the entry.

metze


More information about the samba-technical mailing list