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

26 Commits

Author SHA1 Message Date
Andrew Bartlett
88198c4881 r12804: This patch reworks the Samba4 sockets layer to use a socket_address
structure that is more generic than just 'IP/port'.

It now passes make test, and has been reviewed and updated by
metze. (Thankyou *very* much).

This passes 'make test' as well as kerberos use (not currently in the
testsuite).

The original purpose of this patch was to have Samba able to pass a
socket address stucture from the BSD layer into the kerberos routines
and back again.   It also removes nbt_peer_addr, which was being used
for a similar purpose.

It is a large change, but worthwhile I feel.

Andrew Bartlett
2007-10-10 13:49:57 -05:00
Stefan Metzmacher
5cc955bf54 r12607: fix the build
metze
2007-10-10 13:49:03 -05:00
Stefan Metzmacher
3b32d8b6b6 r12577: filter the loopback addresses like this 127.*.*.* and not only 127.0.0.1
metze
2007-10-10 13:48:56 -05:00
Andrew Tridgell
df00f8b342 r12535: - simplify string list handling in a couple of places using str_list_add()
- don't reply with 127.0.0.1 in NBT or WINS name queries unless the
  query came in on the loopback interface. Otherwise clients can end
  up talking to themselves, which is not very productive :-)
2007-10-10 13:47:53 -05:00
Stefan Metzmacher
c7049f8bb6 r12440: fix crash bugs
metze
2007-10-10 13:47:39 -05:00
Andrew Tridgell
d87df5fe8e r11711: fixed the nbt server to use the right interface for outgoing requests 2007-10-10 13:46:16 -05:00
Stefan Metzmacher
a599d7a4ae r10997: r11980@SERNOX (orig r10037): metze | 2005-09-05 14:21:40 +0200
add struct nbt_peer_socket and use it instead of passing const char *addr, uint16 port everyhwere

 (tridge: can you review this please, (make test works)

 metze
2007-10-10 13:39:52 -05:00
Andrew Tridgell
73643884a3 r8285: generate some real stats in the nbt server for the irpc client code to look at 2007-10-10 13:19:31 -05:00
Andrew Tridgell
3b34df6a67 r6247: added the server side code for receiving mailslot requests, and
parsing incoming netlogon requests. No replies are sent yet.
2007-10-10 13:11:28 -05:00
Andrew Tridgell
10d64a5253 r6184: the beginnings of the libcli/dgram/ library, and the dgram
server. Currently just listens on port 138 and parses the packets
(using IDL like the rest of NBT). This allows me to develop the
structures and test with real packets
2007-10-10 13:11:24 -05:00
Andrew Tridgell
5613e6b8ad r5346: - a bit more preparation for the WINS server going in
- more NBT packet asserts, to ensure that incoming requests have all
  the elements we depend on

- open the WINS database at startup if we are configured as a WINS server

- split out the nbtd server reply packet generation code so it can be
  shared by the WINS server

- re-did the logic of what is answered by the WINS server and what by
  the B node server. It now always tries to answer by the B node, and
  only "recurses" to the WINS server for names that are not found.
2007-10-10 13:09:44 -05:00
Andrew Tridgell
8950718819 r5329: made the nbt server case sensitive 2007-10-10 13:09:43 -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
Andrew Tridgell
f7712ac746 r5276: - added support for NBT_OPCODE_REFRESH2 (type 0x9)
- when registering with a WINS server, initially use multi-homed
  registration, then switch to name refresh requests. Send refresh
  requests only to the WINS server that responded to our
  registration. If that server goes away, then start the registration
  from scratch. This makes registration more robust to WINS server
  failure.

- send WINS registration requests out on our first interface rather
  than an unbound interface, to avoid the problem of WACK replies
  being sent to the wrong port (w2k3 WINS server does this)
2007-10-10 13:09:36 -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
a9128f6544 r5259: make sure we give the ip of the interface that a name query comes in
on as the first IP in a multi-homed reply
2007-10-10 13:09:35 -05:00
Andrew Tridgell
a1553fa805 r5251: - renamed the nbtd server side structures to have a nbtd_ prefix, to
be consistent with the function names

- added WINS client support to the NBT server. It will do initial WINS
  registration, and WINS refresh, automatically failing over to
  secondary WINS servers and handling multi-homed servers where we need
  to register multiple IPs.

- added support for multi-homed name query replies, which are
  essential for multi-homed registration as the WINS server will query
  us to ensure we have the names when doing the secondary IPs in
  multi-homed registration
2007-10-10 13:09:34 -05:00
Andrew Tridgell
290dbd8cdc r5212: added checking for receiving our own packets as broadcasts 2007-10-10 13:09:31 -05:00
Andrew Tridgell
9eafe2caca r5211: added broadcast name defense against both registration and refresh
requests
2007-10-10 13:09:31 -05:00
Andrew Tridgell
b07a7e35f2 r5210: changed server side nbt functions to be prefixed with nbtd_ instead of
nbt_, so as to more clearly separate them from the client code in
libcli/nbt/
2007-10-10 13:09:31 -05:00
Andrew Tridgell
180f29f9e0 r5196: fixed sily bug (that metze found) 2007-10-10 13:09:30 -05:00
Andrew Tridgell
7720d247fe r5172: actually bind to the right address for the wildcard interface .... 2007-10-10 13:09:28 -05:00
Andrew Tridgell
b3edf17281 r5171: added support for "bind interfaces only" in nbtd. The solution was to
bind twice on each interface, once using the broadcast address and
once using the specific IP. We then only listen on the wildcard
address if we don't have "bind interface only" set. This also happens
to simplify the code that finds the right interface for an incoming
request.
2007-10-10 13:09:28 -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