1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-23 20:23:50 +03:00
Commit Graph

435 Commits

Author SHA1 Message Date
Andrew Tridgell
cf6a46c3cb r5102: This is a major simplification of the logic for controlling top level
servers in smbd. The old code still contained a fairly bit of legacy
from the time when smbd was only handling SMB connection. The new code
gets rid of all of the smb_server specific code in smbd/, and creates
a much simpler infrastructures for new server code.

Major changes include:

 - simplified the process model code a lot.

 - got rid of the top level server and service structures
   completely. The top level context is now the event_context. This
   got rid of service.h and server.h completely (they were the most
   confusing parts of the old code)

 - added service_stream.[ch] for the helper functions that are
   specific to stream type services (services that handle streams, and
   use a logically separate process per connection)

 - got rid of the builtin idle_handler code in the service logic, as
   none of the servers were using it, and it can easily be handled by
   a server in future by adding its own timed_event to the event
   context.

 - fixed some major memory leaks in the rpc server code.

 - added registration of servers, rather than hard coding our list of
   possible servers. This allows for servers as modules in the future.

 - temporarily disabled the winbind code until I add the helper
   functions for that type of server

 - added error checking on service startup. If a configured server
   fails to startup then smbd doesn't startup.

 - cleaned up the command line handling in smbd, removing unused options
2007-10-10 13:09:22 -05:00
Andrew Bartlett
e5afc36093 r5090: Fix up the IDL for LogonGetDomainInfo in NETLOGON.
Andrew Bartlett
2007-10-10 13:09:21 -05:00
Andrew Tridgell
7607ddda3f r5080: patch from ronnie to make our samr IDL a little more consistent 2007-10-10 13:09:20 -05:00
Andrew Tridgell
ec32b22ed5 r5037: got rid of all of the TALLOC_DEPRECATED stuff. My apologies for the
large commit. I thought this was worthwhile to get done for
consistency.
2007-10-10 13:09:15 -05:00
Andrew Tridgell
f86521677d r5034: - added a type mapping function in pidl, so the type names in our IDL
files don't need to match the type names in the generated headers

- with this type mapping we no longer need definitions for the
  deprecated "int32", "uint8" etc form of types. We can now force
  everyone to use the standard types int32_t, uint8_t etc.

- fixed all the code that used the deprecated types

- converted the IDL types "int64" and "uint64" to "dlong" and
  "udlong". These are the 4 byte aligned 64 bit integers that
  Microsoft internally define as two 32 bit integers in a
  structure. After discussions with Ronnie Sahlberg we decided that
  calling these "int64" was confusing, as it implied a true 8 byte
  aligned type

- fixed all the cases where we incorrectly used things like
  "NTTIME_hyper" in our C code. The generated API now uses a NTTIME for
  those. The fact that it is hyper-aligned on the wire is not relevant
  to the API, and should remain just a IDL property
2007-10-10 13:09:15 -05:00
Andrew Tridgell
8c89551554 r4945: the te element isn't needed any more
In general, now that events are children of the structure they are
handling events for, the caller only needs to keep the event handle
around if it plans on changing the event flags later
2007-10-10 13:09:08 -05:00
Andrew Tridgell
7f981b9ed9 r4944: every event_add_*() caller was having to call talloc_steal() to take
control of the event, so instead build that into the function. If you
pass NULL as mem_ctx then it leaves it as a child of the events
structure.
2007-10-10 13:09:08 -05:00
Andrew Tridgell
a3c7417cfe r4943: Smplified the events handling code a lot. The first source of
complexity was that events didn't automatically cleanup
themselves. This was because the events code was written before we had
talloc destructors, so you needed to call event_remove_XX() to clean
the event out of the event lists from every piece of code that used
events. I have now added automatic event destructors, which in turn
allowed me to simplify a lot of the calling code.

The 2nd source of complexity was caused by the ref_count, which was
needed to cope with event handlers destroying events while handling
them, which meant the linked lists became invalid, so the ref_count ws
used to mark events for later destruction.

The new system is much simpler. I now have a ev->destruction_count,
which is incremented in all event destructors. The event dispatch code
checks for changes to this and handles it.
2007-10-10 13:09:08 -05:00
Andrew Tridgell
71cbe28734 r4758: - added async support to the session request code
- added async support to the negprot client code

- removed two unused parameters from smbcli_full_connection() code

- converted smbclient to use smbcli_full_connection() rather than
  reinventing everything itself
2007-10-10 13:08:50 -05:00
Andrew Tridgell
e9dff03f79 r4745: remove the distinguishedName attribute adds from samr. See the
discussion on samba-technical about this.
2007-10-10 13:08:49 -05:00
Stefan Metzmacher
d5fa02746c r4728: split up server_services into:
- stream_socket services
  the smb, ldap and rpc service which sets up a srtam socket end then
  waits for connections
and
- task services
  which this you can create a seperate task that do something
  (this is also going through the process_model subsystem
  so with -M standard a new process for this created
  with -M thread a new thread ...

I'll add datagram services later when we whave support for datagram sockets in lib/socket/

see the next commit as an example for service_task's

metze
2007-10-10 13:08:49 -05:00
Stefan Metzmacher
29bc75ba28 r4715: alwys add the distinguishedName attribute
the w2k3 dc join needs that

metze
2007-10-10 13:08:47 -05:00
Andrew Bartlett
175ae7599e r4713: Add initial support for QueryTrustedDomainInfo on LSA.
(more info levels to come)

Andrew Bartlett
2007-10-10 13:08:47 -05:00
Andrew Tridgell
20ab5bed34 r4712: slight tidy up in alter_context server 2007-10-10 13:08:47 -05:00
Stefan Metzmacher
d896ac603a r4707: w2k3 don't restict passwords on
netr_ServerPasswordSet and netr_ServerPasswordSet2

so we do now

I also add a torture test for this

metze
2007-10-10 13:08:46 -05:00
Andrew Bartlett
51e94fa26c r4703: Add support for EnumTrustDomain, and expand the testsuite.
Add my copyright to the SAMR server.

Andrew Bartlett
2007-10-10 13:08:45 -05:00
Stefan Metzmacher
7d8ba92da2 r4702: implment idl, torture test and server code for netr_ServerPasswordSet2()
metze
2007-10-10 13:08:45 -05:00
Andrew Bartlett
271c8faadf r4698: - Initial implementation of trusted domains in LSA.
- Use templates for Secrets and the new trusted domains

 - Auto-add modifiedTime, createdTime and objectGUID to records in the
   samdb layer.

Andrew Bartlett
2007-10-10 13:08:44 -05:00
Andrew Bartlett
be4cd59f33 r4695: Leave less memory handing around on long-term TALLOC_CTX.
Add lsa_Delete() support for secrets.

Andrew Bartlett
2007-10-10 13:08:44 -05:00
Andrew Bartlett
6a09a84320 r4694: 'fix' the behaviour for setting only the old, but not the new secret.
(The behaviour is a little odd, but we wanted bug-for-bug, right? :-)

Andrew Bartlett
2007-10-10 13:08:44 -05:00
Stefan Metzmacher
f0a0dbeb25 r4690: - add support for async rpc server replies
the backend should check for
(dce_call->state_flags & DCESRV_CALL_STATE_FLAG_MAY_ASYNC)
then it's allowed to reply async

then the backend should mark that call as async with
dce_call->state_flags |= DCESRV_CALL_STATE_FLAG_ASYNC;

later it has to manualy set r->out.result
and then send the reply by calling

status = dcesrv_reply(p->dce_call);

NOTE: that ncacn_np doesn't support async replies yet

- implement an async version of echo_TestSleep

- reenable the echo_TestSleep torture test
  (this need to be more strict when we have support for async ncacn_np)

metze
2007-10-10 13:08:43 -05:00
Andrew Bartlett
ded3303352 r4682: A LDB-based secrets implementation in Samba4.
This uses LDB (a local secrets.ldb and the global samdb) to fill out
the secrets from an LSA perspective.

Some small changes to come, but the bulk of the work is now done.

A re-provision is required after this change.

Andrew Bartlett
2007-10-10 13:08:42 -05:00
Andrew Bartlett
5569db0f94 r4680: Make more efficient use of memory in SAMR:
Avoid a strdup, use a talloc_reference
 Use the shortest term memory context possible

Andrew Bartlett
2007-10-10 13:08:42 -05:00
Andrew Tridgell
439cbb9ead r4663: fixed SPNEGO auth in the rpc server 2007-10-10 13:08:40 -05:00
Stefan Metzmacher
b6543a6e30 r4650: - make more use of bitmap and enum's
- move some structs out of misc.idl

metze
2007-10-10 13:08:39 -05:00
Stefan Metzmacher
7feface9b7 r4648: fix netr_ServerPasswordSet() bugs
metze
2007-10-10 13:08:39 -05:00
Stefan Metzmacher
1118a1b1bb r4647: - use talloc_zero() instead of ZERO_STRUCTP()
- fix uninitialized memory bug found by valgrind

metze
2007-10-10 13:08:38 -05:00
Andrew Tridgell
b6af57c868 r4642: added support for alter_context in the server for adding new interfaces to an existing pipe 2007-10-10 13:08:38 -05:00
Andrew Bartlett
c6fcb33a88 r4641: Push a few more details into the schannel ldb, and into the
credentials struct it maintains.

Clearly much of this will be replaced with some system to pass and
store the session_info, as that is the 'right way' to handle this.

Andrew Bartlett
2007-10-10 13:08:38 -05:00
Andrew Tridgell
fde042b3fc r4640: first stage in the server side support for multiple context_ids on one pipe
this stage does the following:

 - simplifies the dcerpc_handle handling, and all the callers of it

 - split out the context_id depenent state into a linked list of established contexts

 - fixed some talloc handling in several rpc servers that i noticed while doing the above
2007-10-10 13:08:38 -05:00
Stefan Metzmacher
c215372eb0 r4639: initialize all struct members!
tridge: sorry for making you such a pain...
        could you check if that fixes your bugs

metze
2007-10-10 13:08:37 -05:00
Stefan Metzmacher
3c0d16b823 r4620: - add interface functions to the auth subsystem so that callers doesn't need to
use function pointers anymore
- make the module init much easier
- a lot of cleanups

don't try to read the diff in auth/ better read the new files

it passes test_echo.sh and test_rpc.sh

abartlet: please fix spelling fixes

metze
2007-10-10 13:08:34 -05:00
Andrew Tridgell
dd1c54add8 r4618: - tidied up the alter_context client code a bit
- there is no alter_nak or alter_ack packet, its all done in an
  alter_response

- auto-allocated the contex_ids

- tried to fix up the dcom code to work again with
  alter_context. Jelmer, please take a look :)
2007-10-10 13:08:34 -05:00
Andrew Tridgell
4004c69937 r4616: the first phase in the addition of proper support for
dcerpc_alter_context and multiple context_ids in the dcerpc client
library.

This stage does the following:

 - split "struct dcerpc_pipe" into two parts, the main part being "struct dcerpc_connection", which
   contains all the parts not dependent on the context, and "struct dcerpc_pipe" which has
   the context dependent part. This is similar to the layering in libcli_*() for SMB

 - disable the current dcerpc_alter code. I've used a #warning until i
   get the 2nd phase finished. I don't know how portable #warning is, but
   it won't be long before I add full alter context support anyway, so it won't last long

 - cleanup the allocation of dcerpc_pipe structures. The previous code
   was quite awkward.
2007-10-10 13:08:34 -05:00
Andrew Tridgell
6e7754abd0 r4591: - converted the other _p talloc functions to not need _p
- added #if TALLOC_DEPRECATED around the _p functions

- fixes the code that broke from the above

while doing this I fixed quite a number of places that were
incorrectly using the non type-safe talloc functions to use the type
safe ones. Some were even doing multiplies for array allocation, which
is potentially unsafe.
2007-10-10 13:08:30 -05:00
Andrew Tridgell
09edc31f3b r4563: fixed lsa_EnumAccounts() server side to return all accounts that have privileges, as
volker discovered
2007-10-10 13:08:28 -05:00
Stefan Metzmacher
2a859fbc90 r4558: more use of bitmaps and enums
metze
2007-10-10 13:08:27 -05:00
Andrew Tridgell
89b74b5354 r4549: got rid of a lot more uses of plain talloc(), instead using
talloc_size() or talloc_array_p() where appropriate.

also fixed a memory leak in pvfs_copy_file() (failed to free a memory
context)
2007-10-10 13:08:25 -05:00
Andrew Tridgell
f9e0aa1ab1 r4520: added a enum test function to the echo pipe 2007-10-10 13:08:17 -05:00
Stefan Metzmacher
09727d3d4a r4508: - simplify the code and allocate only in one place
- the ZERO_STRUCT(r->out) is useless and wrong if we would have a [ref,out] parameter
  also note the r->out is already initialized by the pidl generated code

metze
2007-10-10 13:08:16 -05:00
Andrew Bartlett
4b52409e38 r4499: Almost make our Samba4 server pass the RPC-SAMLOGON torture test.
I just need to fix a couple of NTLMv2 issues before we can fully pass,
and put this in test_rpc.sh, as a 'should pass' test.

Andrew Bartlett
2007-10-10 13:08:15 -05:00
Andrew Tridgell
202470326d r4490: when implementing one rpc server call in terms of another call, you
must zero r.out before making the 2nd call if the 2nd call has any
non-ref out parameters. This is needed for the case where the 2nd call
fails, and the 1st call would then fill in its out fields based on
uninitialised memory.
2007-10-10 13:08:12 -05:00
Andrew Tridgell
d79cc8b901 r4487: fixed the use of ldb_msg_add_*() in the samr password backend 2007-10-10 13:08:11 -05:00
Stefan Metzmacher
7ab9de14af r4485: remove unused TODO comment we already handle the DS_ROLE_STANDALONE_SERVER case
correct

metze
2007-10-10 13:08:11 -05:00
Stefan Metzmacher
7fe9550375 r4484: - use the nTMixedDomain attribute to check if our domain is mixed mode or not
metze
2007-10-10 13:08:11 -05:00
Stefan Metzmacher
e6d1136497 r4483: - rename same structs, enums and uninons of the dssetup pipe
to match the style we are using in other pipes

- first fillin local vars and only set the out parameter on success

- for the server code only to the samdb lookup when it's needed

NOTE: the DsRoleGetPrimaryDomainInformation() code with DS_ROLE_MEMBER_SERVER
      is not tested yet, does someone has a w2k3 member server to test with?

metze
2007-10-10 13:08:11 -05:00
Andrew Tridgell
1a4713bfd0 r4475: fixed smbd to work with the small changes in the ldb API (the most important
change was in the ldb_msg_add_*() routines, which now use the msg as a context,
and thus it needs to be a talloc ptr)
2007-10-10 13:07:55 -05:00
Andrew Tridgell
6566dc2805 r4461: finished the remaining information levels in the DSSETUP pipe. The pipe is now complete!
The only glitch is that I am returning DS_ROLE_MEMBER_SERVER when I
should be returning DS_ROLE_PRIMARY_DC. This is needed for the moment
or ACL editing doesn't work from w2k3. Once we have some more ADS
calls we should be able to fix this.
2007-10-10 13:07:53 -05:00
Jelmer Vernooij
02340bb6ee r4458: Create ncalrpc directory with 0755 rather then 0700 so non-root users
can use ncalrpc as well.
2007-10-10 13:07:52 -05:00
Andrew Tridgell
27a8b270bd r4453: use lp_server_role(), which currently returns 3, for the dssetup
role. The value '5', which is what my w2k3 DC returns, doesn't
work. I'm not sure why this is.

with this change the GUI ACL editor from w2k3 works properly, with
either server role in the HKLM registry.
2007-10-10 13:07:52 -05:00