1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-14 01:57:53 +03:00

47 Commits

Author SHA1 Message Date
Andrew Tridgell
b7fefe76a2 r7483: ensure we try reading from a socket if epoll says we can, and don't
just do the write. This is needed because the write could return
-1/EAGAIN for dgram sockets, if the socket buffer is nearly full. The
epoll loop then goes on forever.

This was causing some failures in 'make test'
2007-10-10 13:17:58 -05:00
Volker Lendecke
29f7e430ac r7436: As far as I see it, these are the last two "real" ones for Samba4 on AIX to
build. The remaining patch (not now) is to convert the javascript stuff not to
use // style comments.

Volker
2007-10-10 13:17:53 -05:00
Andrew Tridgell
2a9efbdae6 r7229: use socket_pending() to get rid of the max packet size limits in the
nbt and dgram layers
2007-10-10 13:17:29 -05:00
Andrew Tridgell
a3f64357af r6692: used idr_get_new_random() in the nbt client library 2007-10-10 13:16:35 -05:00
Andrew Tridgell
f4d07d7d3b r6338: ADS style GETDC response now works well enough that WinXP can join
Samba4 without Samba3 nmbd
2007-10-10 13:11:33 -05:00
Andrew Tridgell
1ea4ed4ad1 r6331: added IDL and test suite for the ADS style response to a datagram netlogon query.
Note that this response is almost identical to the CLDAP netlogon
response, so adding that will now be quite easy.
2007-10-10 13:11:32 -05:00
Andrew Tridgell
6e2feef125 r5405: try to use NBT name pointers when a netbios name is repeated in a NBT
packet. This allows much longer names to fit within the limits of NBT
name packets (rfc1002.txt also says this should be done, although
Samba3 never generates them).

The main reason for doing this is it means that our NBT name pointer
decoding code is tested with the smbtorture tests
2007-10-10 13:10:42 -05:00
Andrew Tridgell
dd3d4ded21 r5404: allow spaces in the string representation of nbt names 2007-10-10 13:10:42 -05:00
Andrew Tridgell
76c49851b9 r5398: fixed encoding of *SMBSERVER name (thanks to Karl Melcher for spotting this) 2007-10-10 13:09:51 -05:00
Andrew Tridgell
666cc65d10 r5396: fixed parsing of NBT type 0xc0 compressed name pointers 2007-10-10 13:09:51 -05:00
Andrew Tridgell
8dc2a028d3 r5392: added "secure" WINS server processing. Send a WACK on name
registrations from anyone who isn't a current owner, then query the
owner addresses to see if they still want it.
2007-10-10 13:09:50 -05:00
Andrew Tridgell
75766603e3 r5391: cope with w2k3 getting the timeout wrong in wack replies 2007-10-10 13:09:50 -05:00
Andrew Tridgell
b13cea5b2b r5382: another place where we need to uppercase the called name for port 139 connects 2007-10-10 13:09:49 -05:00
Andrew Tridgell
9aa3313b3f r5358: - added initial WINS server code. It passes most of the NBT-WINS test, but doesn't yet
do secure server WACK responses

- added a ldap_string_to_time() function, for converting a LDAP
  formatted time to a time_t
2007-10-10 13:09:45 -05:00
Andrew Tridgell
e467715c63 r5356: fixed the hex coding for nbt names 2007-10-10 13:09:45 -05:00
Andrew Tridgell
aac3090e35 r5352: added a function nbt_name_string() that formats a nbt_name structure
as a human readable string. The format is designed to be able to be
used as the DN for the WINS database as well, while coping with
arbitrary bytes in the name (except nul bytes)
2007-10-10 13:09:45 -05:00
Andrew Tridgell
80a95d5688 r5328: - allow case sensitive nbt name lookups
- added --case-sensitive option to nmblookup

 - added case sensitivity tests to the NBT-WINS test
2007-10-10 13:09:42 -05:00
Andrew Tridgell
8e5d3a74d3 r5326: removed the charset conversion from the nbtname code, so we no longer
convert from/to DOS strings in NBT names. This will allow us to
support all foreign names as a WINS server, as long as they don't
contain a 0 byte.
2007-10-10 13:09:41 -05:00
Andrew Tridgell
6d775f1216 r5325: - expanded the NBT-WINS test to include scopes
- fixed the bugs that the new test found
2007-10-10 13:09:41 -05:00
Andrew Tridgell
80ffcc650c r5322: removed a whole bunch of #include lines that minimal_includes.pl
thinks are not needed. Now to see how this fares on the build farm :)
2007-10-10 13:09:41 -05:00
Andrew Tridgell
b902ea546d r5304: removed lib/socket/socket.h from includes.h 2007-10-10 13:09:39 -05:00
Andrew Tridgell
bb1ab11d8e r5294: - added a separate NBT-WINS test for WINS operations (register, refresh, release and query)
- change the iface_n_*() functions to return a "const char *" instead of a "struct ipv4_addr"
  I think that in general we should move towards "const char *" for
  all IP addresses, as this makes IPv6 much easier, and is also easier
  to debug. Andrew, when you get a chance, could you fix some of the
  auth code to use strings for IPs ?

- return a NTSTATUS error on bad name queries and node status instead
  of using rcode. This makes the calling code simpler.

- added low level name release code in libcli/nbt/

- use a real IP in the register and wins nbt torture tests, as w2k3
  WINS server silently rejects some operations that don't come from the
  IP being used (eg. it says "yes" to a release, but does not in fact
  release the name)
2007-10-10 13:09:37 -05:00
Jelmer Vernooij
ab490c0c88 r5286: Some first steps in making the pidl code somewhat more generic for the
various data types:

Add ndr_flags argument to all ndr push/pull scalar functions
2007-10-10 13:09:36 -05:00
Andrew Tridgell
2502b02898 r5275: - added support for NBT_OPCODE_MULTI_HOME_REG (opcode 0xf) for WINS name registrations
- fixed a bug in the send queue handling on timeouts

- added support for handling unexpected replies (replies to the wrong
  port) at the nbtsocket layer

- added separate layer 2 code for wins refresh and wins registration
2007-10-10 13:09:36 -05:00
Andrew Tridgell
554d1b70e7 r5261: translate nbt rcode errors to NTSTATUS codes 2007-10-10 13:09:35 -05:00
Andrew Tridgell
919bc14e7b r5260: - show an error message on nmblookup failure
- always try to enable broadcast on nbt name sockets (this matches
  samba3 behaviour better)
2007-10-10 13:09:35 -05:00
Andrew Tridgell
76be35cb99 r5250: - added low level support for retrying nbt name queries, rather than
having the 2nd layer functions do retries themselves. This makes the
  code simpler, and allows the TRN_ID to be reused in the retry (which
  is how it is supposed to work).

- added support for WACK replies to nbt name requests. A WACK reply
  specifies a timeout to wait for the real reply.

- added WINS name refresh async calls, supporting multiple wins
  servers and multiple IPs to register
2007-10-10 13:09:34 -05:00
Andrew Tridgell
7f54c8a339 r5197: moved events code to lib/events/ (suggestion from metze) 2007-10-10 13:09:30 -05:00
Andrew Tridgell
236403cc4d r5195: most events don't need the time of the event, so save a gettimeofday() call
and just use timeval_current() when its actually needed
2007-10-10 13:09:30 -05:00
Andrew Tridgell
d7b4b6de51 r5185: make all the events data structures private to events.c. This will
make it possible to add optimisations to the events code such as
keeping the next timed event in a sorted list, and using epoll for
file descriptor events.

I also removed the loop events code, as it wasn't being used anywhere,
and changed timed events to always be one-shot (as adding a new timed
event in the event handler is so easy to do if needed)
2007-10-10 13:09:29 -05:00
Andrew Tridgell
72048e3717 r5155: define ipv4address as a based IDL type, mapped to a "const char *" in
the header, and defined on the wire as a 4 byte network byte order
IP. This means the calling code doesn't have to worry about network
byte order conversions.
2007-10-10 13:09:28 -05:00
Stefan Metzmacher
abacbc9192 r5145: define struct ipv4_addr in misc.idl,
so we can use it in nbt.idl and
get a nicer debug output

metze
2007-10-10 13:09:27 -05:00
Andrew Tridgell
cf11d05e35 r5126: the composite code is no longer client specific or smb specific, so
rename the core structure to composite_context and the wait routine to
composite_wait() (suggestion from metze)
2007-10-10 13:09:25 -05:00
Andrew Tridgell
69e6a1cd4b r5121: added periodic name refresh requests for all our registered names, reporting any
name conflicts
2007-10-10 13:09:24 -05:00
Andrew Tridgell
6726f15cf4 r5120: encode outgoing nbt packets when queueing them rather than in the send
event code, as elements of the callers packet structure could go away
while the queue is pending (if for example a name was de-registered
while a packet referencing that name is queued)
2007-10-10 13:09:24 -05:00
Andrew Tridgell
d656fba6f1 r5117: used a composite function to add 4 stage name registration. We send 3
broadcast name registration demands per name per interface at 1 second
intervals, then send a name overwrite request and demand. Any name
conflict replies are reported.
2007-10-10 13:09:24 -05:00
Andrew Tridgell
d7d31fdc66 r5114: the nbtd task can now act as a basic B-node server. It registers its
names on the network and answers name queries. Lots of details are
still missing, but at least this now means you don't need a Samba3
nmbd to use Samba4.

missing pieces include:

 - name registrations should be "shout 3 times, then demand"

 - no WINS server yet

 - no master browser code
2007-10-10 13:09:23 -05:00
Andrew Tridgell
2fedca6adf r5108: the beginnings of a nbtd server for Samba4. Currently just displays
the packets it receives, but it at least shows how the server
structure will work.

To implement it I extended the libcli/nbt/ library to allow for an
incoming packet handler to be registered. That allows the nbt client
library to be used for low level processing of the nbtd server packets.

Other changes:

 - made the socket library always set SO_REUSEADDR when binding to an
   interface, to ensure that restarts of a server don't have to wait
   for a couple of minutes.

 - made the nbt port configurable. Defaults to 137, but other ports
   will be useful for testing.
2007-10-10 13:09:23 -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
b06b8dd2f4 r4927: parse the NBT session request in the smb server. This gets rid of that
annoying "not parsing session request" message on each SMB connection
2007-10-10 13:09:06 -05:00
Andrew Tridgell
b20c0561b8 r4915: free temp context _before_ the async callback, as the async callback might destroy our top level context
leaving the tmp context freed (so a double free)
2007-10-10 13:09:05 -05:00
Andrew Tridgell
9d2d16ce5f r4909: fixed name_trn_id generation (thanks to metze for spotting the bug!) 2007-10-10 13:09:05 -05:00
Andrew Tridgell
9a34af2938 r4901: a bit more info on nbt packets under high debug level 2007-10-10 13:09:05 -05:00
Andrew Tridgell
266fd2751c r4898: - removed the unused wins_srv_*() code
- expanded the generic async name resolver to try multiple methods

- added wins resolutions to the list of methods tried

- fixed up the random trn id generation to use the good random generator
2007-10-10 13:09:04 -05:00
Andrew Tridgell
239c310f25 r4891: - added a generic resolve_name() async interface in libcli/resolve/,
which will eventually try all resolution methods setup in smb.conf

 - only resolution backend at the moment is bcast, which does a
   parallel broadcast to all configured network interfaces, and takes
   the first reply that comes in (this nicely demonstrates how to do
   parallel requests using the async APIs)

 - converted all the existing code to use the new resolve_name() api

 - removed all the old nmb code (yay!)
2007-10-10 13:09:03 -05:00
Andrew Tridgell
ae7e625bfa r4885: added a new NBT client library. Features include:
- structures defined using IDL in nbt.idl
 - build around our events structure, and talloc
 - fully async
 - supports all NBT packet fields as per rfc1002
 - easy interfaces for name query and status

For the moment there are just a couple of test functions in
namequery.c, test_name_query() and test_name_status(). These will be
removed when we hook the new library into libcli/ fully

The new library will also be a fairly good basis for a nbt
server. Although it can't be a server as-is, I wrote it with the needs
of a server in mind (for example, extremely scalable idtree based
packet handling)
2007-10-10 13:09:01 -05:00