Re: [PATCH] resolver.3: documents missing options used by _res structure defined in resolv.h and indicates defaults options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le lundi 09 mars 2015 à 10:49:55, Michael Kerrisk (man-pages) a écrit :
> On 03/09/2015 08:54 AM, Stéphane Aulery wrote:
> > Le lundi 09 mars 2015 à 08:24:38, Michael Kerrisk (man-pages) a écrit :
> > 
> >>>>> +.B RES_BLAST
> >>>>> +When resolvers want to even out the load on their nameservers, following
> >>>>> +them. 
> >>>>
> >>>> I do not understand that last sentence. Could you clarify please.
> >>>
> >>> I must admit that it's not clear to me either. I think this means that
> >>> server alias are swapped between each request. I have wrong? The word
> >>> "blast" leaves me skeptical.
> >>>
> >>> What I found in code source:
> >>>
> >>> Form res_send.c
> >>>
> >>> /*
> >>> * Some resolvers want to even out the load on their nameservers.
> >>> * Note that RES_BLAST overrides RES_ROTATE.
> >>> */
> >>> if (__builtin_expect ((statp->options & RES_ROTATE) != 0, 0) &&
> >>>    (statp->options & RES_BLAST) == 0) {
> >>>       struct sockaddr_in6 *ina;
> >>>       unsigned int map;
> >>>
> >>>       n = 0;
> >>>       while (n < MAXNS && EXT(statp).nsmap[n] == MAXNS)
> >>>          n++;
> >>>       if (n < MAXNS) {
> >>>          ina = EXT(statp).nsaddrs[n];
> >>>          map = EXT(statp).nsmap[n];
> >>>          for (;;) {
> >>>             ns = n + 1;
> >>>             while (ns < MAXNS
> >>>                && EXT(statp).nsmap[ns] == MAXNS)
> >>>                ns++;
> >>>             if (ns == MAXNS)
> >>>                break;
> >>>             EXT(statp).nsaddrs[n] = EXT(statp).nsaddrs[ns];
> >>>             EXT(statp).nsmap[n] = EXT(statp).nsmap[ns];
> >>>             n = ns;
> >>>          }
> >>>          EXT(statp).nsaddrs[n] = ina;
> >>>          EXT(statp).nsmap[n] = map;
> >>>       }
> >>> }
> >>
> >> Okay -- I leave it to your discretion to choose what to do here.
> > 
> > No please, I need your help.
> 
> Sorry -- the code is not clear to me, and I don't have the time 
> to investigate deeper.

Thank you for your help.

> Google turns up this detail from the O'Reilly DNS and BIND
> book:
> 
>     "Blast" all recursive servers by sending queries to 
>     the simultaneously. Not implemented yet.
> 
> The first sentence makes sense. I'm not sure whether
> the second is true for glibc or not. But, I just grepped
> the entire C source code for Fedora 20, and found no users 
> of RES_BLAST, so indeed maybe it is not implemented.

Options not implemented are explicitly mentioned. [1]
So for me it is.

I propose:

    Send each query simultaneously and recursively to all servers.

[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=resolv/res_debug.c;hb=95f386609f378063b35e0c4ede8c2d2ceea91f51#l564

Regards,

-- 
Stéphane Aulery
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux