Author: tridge
Date: 2005-02-04 02:16:59 +0000 (Fri, 04 Feb 2005)
New Revision: 5213

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5213

Log:
do our name broadcast refresh requests as register packets not refresh
packets, as w2k3 and Samba3 do not defend against broadcast name
refresh packets



Modified:
   branches/SAMBA_4_0/source/nbt_server/register.c


Changeset:
Modified: branches/SAMBA_4_0/source/nbt_server/register.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/register.c     2005-02-04 02:05:27 UTC 
(rev 5212)
+++ branches/SAMBA_4_0/source/nbt_server/register.c     2005-02-04 02:16:59 UTC 
(rev 5213)
@@ -76,19 +76,24 @@
 {
        struct nbt_iface_name *iname = talloc_get_type(private, struct 
nbt_iface_name);
        struct nbt_interface *iface = iname->iface;
-       struct nbt_name_refresh io;
+       struct nbt_name_register io;
        struct nbt_name_request *req;
 
-       /* setup a name refresh request */
+       /* setup a single name register request. Notice that we don't
+          use a name refresh request, as Windows and Samba3 do not
+          defend against broadcast name refresh packets. So for this
+          to be of any use at all, we need to refresh using name
+          registration packets */
        io.in.name            = iname->name;
        io.in.dest_addr       = iface->bcast_address;
        io.in.address         = iface->ip_address;
        io.in.nb_flags        = iname->nb_flags;
        io.in.ttl             = iname->ttl;
+       io.in.register_demand = False;
        io.in.broadcast       = True;
        io.in.timeout         = 3;
 
-       req = nbt_name_refresh_send(iface->nbtsock, &io);
+       req = nbt_name_register_send(iface->nbtsock, &io);
        if (req == NULL) return;
 
        req->async.fn = refresh_completion_handler;
@@ -108,7 +113,7 @@
        
        event_add_timed(iname->iface->nbtsrv->task->event_ctx, 
                        iname, 
-                       timeval_current_ofs(refresh_time, 0),
+                       timeval_add(&iname->registration_time, refresh_time, 0),
                        name_refresh_handler, iname);
 }
 

Reply via email to