[Samba] Samba 3.0.3/4 - WINS server expires names after 2 hours

jgerard at wawanesa.com jgerard at wawanesa.com
Tue Jun 29 13:48:31 GMT 2004


What I ended up doing, which worked for me, was make a change to 
nmbd_winsserver.c (samba 3.0.4)

I added:

                if(lp_dns_proxy() && (namerec->data.death_time != 
PERMANENT_TTL) && (namerec->data.death_time < p->timestamp) && 
((question->name_type == 0x20) || question->name_type == 0)) {
                        DEBUG(3,("wins_process_name_query: name query for 
name %s is expired - doing dns lookup.\n",
                                        nmb_namestr(question) ));

                        queue_dns_query(p, question, &namerec);
                        return;
                }

right above:

                if( (namerec->data.death_time != PERMANENT_TTL) && 
(namerec->data.death_time < p->timestamp) ) {
                        DEBUG(3,("wins_process_name_query: name query for 
name %s - name expired. Returning fail.\n",
                                        nmb_namestr(question) ));
                        send_wins_name_query_response(NAM_ERR, p, 
namerec);
                        return;
                }


I realize this is not likely the correct way to do it but it did work for 
me and got a lot of people off my back every morning when I came into work 
and they couldn't resolve names :)  By adding the above, the hosts in 
question would still expire after 2 hours but the next lookup after death 
would cause them to cache for another 2 hours instead of returning a fail 
message.

I will test your patch on samba-3.0.5pre1 (if I can remember how to diff 
:D) and report back.

____________________________________
Jeff Gerard - Systems Administrator
Wawanesa Mutual Insurance Company
Office: 204-985-0517
Fax:    204-947-5192
Email:  jgerard at wawanesa.com




Jeremy Allison <jra at samba.org> 
28/06/2004 07:40 PM
Please respond to
Jeremy Allison <jra at samba.org>


To
Guillaume Millet <guillaume.millet at oktal.fr>
cc
jgerard at wawanesa.com, samba at lists.samba.org
Subject
Re: [Samba] Samba 3.0.3/4 - WINS server expires names after 2 hours






On Thu, Jun 24, 2004 at 04:25:52PM +0200, Guillaume Millet wrote:
> Hello,
> 
> I had the same problem.
> I've found a workaround by patching the code in 
"nmbd/nmbd_namelistdb.c":
> 
> /*******************************************************************
>  Expires old names in all subnet namelists.
> ******************************************************************/
> 
> void expire_names(time_t t)
> {
>        struct subnet_record *subrec;
> 
>        for( subrec = FIRST_SUBNET; subrec; subrec = 
>        NEXT_SUBNET_INCLUDING_UNICAST(subrec) ) {
>                expire_names_on_subnet( subrec, t );
>        }
> 
>        expire_names_on_subnet( wins_server_subnet, t ); /* ADD THIS LINE 

>        FOR REMOVING EXPIRED NAME FROM WINS TABLE */
> }
> 
> I dont know if it's the correct things to do, but it works fine for me 
> with my configuration (PDC+LDAP+WINS with Samba 3.0.4 on MDK 9.2)
> If a real Samba develloper can have a quick look to this to make a real 
> correction for next release.

Ok, I've looked at this in the current Samba 3.0.5preXX code (SVN) and
here is the fix I think should work. It forced DNS and DNSFAIL names to
be removed from the WINS db immediately their timeout persiod expires and
not to go into the "tombstoned" state (where they would hang around for
another day).

Let me know if this fixes the problem for you.

Thanks,

                 Jeremy.



More information about the samba mailing list