[radvd-devel-l] FlushRDNSS option - renamed from RemoveRDNSS

Reuben Hawkins reubenhwk at gmail.com
Fri Mar 25 03:07:47 EDT 2011


On Thu, Mar 24, 2011 at 10:28 PM, Mark Smith <
radvd at 02a76c927861ca7413a122f2a73a0d37.nosense.org> wrote:

> Hi,
>
> Following from the discussion with Pekka a few days ago, I've renamed
> the RemoveRDNSS option to "FlushRDNSS". There are no other changes.
>
> Patch attached and shown below, should apply to cvs revision 1.115.
>
> Thanks,
> Mark.
>
> diff --git a/defaults.h b/defaults.h
> index 0bf357b..ddb6e43 100644
> --- a/defaults.h
> +++ b/defaults.h
> @@ -65,6 +65,7 @@
>
>  /* RDNSS */
>  #define DFLT_AdvRDNSSLifetime(iface)
> (iface)->MaxRtrAdvInterval
> +#define DFLT_FlushRDNSSFlag            1
>
>  /* DNSSL */
>  #define DFLT_AdvDNSSLLifetime(iface)
> (iface)->MaxRtrAdvInterval
> diff --git a/gram.y b/gram.y
> index 2d13800..232e895 100644
> --- a/gram.y
> +++ b/gram.y
> @@ -115,6 +115,7 @@ static struct in6_addr get_prefix6(struct in6_addr
> const *addr, struct in6_addr
>  %token         T_AdvRDNSSPreference
>  %token         T_AdvRDNSSOpenFlag
>  %token         T_AdvRDNSSLifetime
> +%token         T_FlushRDNSS
>
>  %token         T_AdvDNSSLLifetime
>
> @@ -789,6 +790,10 @@ rdnssparms : T_AdvRDNSSPreference NUMBER ';'
>
>                        rdnss->AdvRDNSSLifetime = $2;
>                }
> +               | T_FlushRDNSS SWITCH ';'
> +               {
> +                       rdnss->FlushRDNSSFlag = $2;
> +               }
>                ;
>
>  dnssldef       : dnsslhead '{' optional_dnsslplist '}' ';'
> diff --git a/interface.c b/interface.c
> index 072f548..b857008 100644
> --- a/interface.c
> +++ b/interface.c
> @@ -78,6 +78,7 @@ rdnss_init_defaults(struct AdvRDNSS *rdnss, struct
> Interface *iface)
>
>        rdnss->AdvRDNSSLifetime = DFLT_AdvRDNSSLifetime(iface);
>        rdnss->AdvRDNSSNumber = 0;
> +       rdnss->FlushRDNSSFlag = DFLT_FlushRDNSSFlag;
>  }
>
>  void
> diff --git a/radvd.conf.5.man b/radvd.conf.5.man
> index dcc4314..f58ff4d 100644
> --- a/radvd.conf.5.man
> +++ b/radvd.conf.5.man
> @@ -498,24 +498,27 @@ Default: medium
>  .SH RDNSS SPECIFIC OPTIONS
>
>  .TP
> -.BR "AdvRDNSSPreference " integer;
> +.BR "AdvRDNSSPreference " integer
>  .TP
> -.BR "AdvRDNSSOpen " on | off;
> +.BR "AdvRDNSSOpen " on | off
>
>  These features were present in the draft specification but were removed
>  from RFC5006. They are still accepted in the configuration but
>  ignored.
>
>  .TP
> -.BR "AdvRDNSSLifetime " seconds | infinity;
> -The maximum duration how long the RDNSS entries are used for name
> resolution. A value of 0 means the nameserver should no longer be used.
> -The maximum duration how long the RDNSS entries are used for name
> resolution. A value of 0 means the nameserver should no longer be used.
> -The value, if not 0, must be at least MaxRtrAdvInterval.  To ensure stale
> -RDNSS info gets removed in a timely fashion, this should not be greater
> than
> -2*MaxRtrAdvInterval.
> +.BR "AdvRDNSSLifetime " seconds | infinity
> +The maximum duration how long the RDNSS entries are used for name
> resolution. A value of 0 means the nameserver must no longer be used. The
> value, if not 0, must be at least MaxRtrAdvInterval.  To ensure stale RDNSS
> info gets removed in a timely fashion, this should not be greater than
> 2*MaxRtrAdvInterval.
>
>  Default: 2*MaxRtrAdvInterval
>
> +.TP
> +.BR FlushRDNSS " " on | off
> +
> +Upon shutdown, announce the RDNSS entries with a zero second lifetime.
> This should cause the RDNSS addresses to be immediately removed from the
> end-nodes' list of Recursive DNS Servers.
> +
> +Default: on
> +
>  .SH DNSSL SPECIFIC OPTIONS
>
>  .TP
> diff --git a/radvd.h b/radvd.h
> index 3b8b0e5..b7d30a1 100644
> --- a/radvd.h
> +++ b/radvd.h
> @@ -135,6 +135,7 @@ struct AdvRoute {
>  struct AdvRDNSS {
>        int                     AdvRDNSSNumber;
>        uint32_t                AdvRDNSSLifetime;
> +       int                     FlushRDNSSFlag;
>        struct in6_addr         AdvRDNSSAddr1;
>        struct in6_addr         AdvRDNSSAddr2;
>        struct in6_addr         AdvRDNSSAddr3;
> diff --git a/scanner.l b/scanner.l
> index b6ca361..86579f2 100644
> --- a/scanner.l
> +++ b/scanner.l
> @@ -89,6 +89,7 @@ AdvRouteLifetime      { return T_AdvRouteLifetime; }
>  AdvRDNSSPreference     { return T_AdvRDNSSPreference; }
>  AdvRDNSSOpen           { return T_AdvRDNSSOpenFlag; }
>  AdvRDNSSLifetime       { return T_AdvRDNSSLifetime; }
> +FlushRDNSS             { return T_FlushRDNSS; }
>
>  AdvDNSSLLifetime       { return T_AdvDNSSLLifetime; }
>
> diff --git a/send.c b/send.c
> index cd8ef9f..a717226 100644
> --- a/send.c
> +++ b/send.c
> @@ -259,7 +259,11 @@ send_ra(struct Interface *iface, struct in6_addr
> *dest)
>                rdnssinfo->nd_opt_rdnssi_len         = 1 +
> 2*rdnss->AdvRDNSSNumber;
>                rdnssinfo->nd_opt_rdnssi_pref_flag_reserved = 0;
>
> -               rdnssinfo->nd_opt_rdnssi_lifetime       =
> htonl(rdnss->AdvRDNSSLifetime);
> +               if (iface->cease_adv && rdnss->FlushRDNSSFlag) {
> +                       rdnssinfo->nd_opt_rdnssi_lifetime       = 0;
> +               } else {
> +                       rdnssinfo->nd_opt_rdnssi_lifetime       =
> htonl(rdnss->AdvRDNSSLifetime);
> +               }
>
>                memcpy(&rdnssinfo->nd_opt_rdnssi_addr1,
> &rdnss->AdvRDNSSAddr1,
>                       sizeof(struct in6_addr));
>
> --
> radvd-devel-l mailing list  :  radvd-devel-l at litech.org
> http://lists.litech.org/listinfo/radvd-devel-l
>

Hi Mark,

Committed in CVS.  I'll update my git repo tomorrow to reflect the changes
(if you want to review the diff).

Thanks,
Reuben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litech.org/pipermail/radvd-devel-l/attachments/20110325/adb10c35/attachment.html>


More information about the radvd-devel-l mailing list