Package: radvd Version: 1:1.0-2.0 Severity: normal Tags: patch radvd currently emits RDNSS options reversed from the order in which they appear in the /etc/radvd.conf file. This is important because the order of the options affects the choice of primary, secondary, etc DNS server. Note that multiple DNS servers can either be transmitted as a single option (if the lifetime and other parameters match) or as multiple separate options. DNS servers in a single option are ordered correctly, but the order of multiple options is reversed.
The attached patch corrects the problem by fixing the bison grammar so that the RDNSS option list is created in the correct forwards order. For good measure the same fix is applied to the parsing of route and prefix options, even though the order of these options shouldn't matter. --scott -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.21-1-686 (SMP w/2 CPU cores) Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/bash Versions of packages radvd depends on: ii adduser 3.103 Add and remove users and groups ii libc6 2.5-11 GNU C Library: Shared libraries radvd recommends no packages. -- no debconf information
diff -ruHp X/radvd-1.0/gram.y radvd-1.0/gram.y --- X/radvd-1.0/gram.y 2006-10-09 02:20:59.000000000 -0400 +++ radvd-1.0/gram.y 2007-06-20 16:44:21.000000000 -0400 @@ -326,15 +326,11 @@ ifaceval : T_MinRtrAdvInterval NUMBER '; } ; -prefixlist : prefixdef +prefixlist : prefixdef optional_prefixlist { + $1->next = $2; $$ = $1; } - | prefixlist prefixdef - { - $2->next = $1; - $$ = $2; - } ; prefixdef : prefixhead '{' optional_prefixplist '}' ';' @@ -427,15 +423,11 @@ prefixparms : T_AdvOnLink SWITCH ';' } ; -routelist : routedef +routelist : routedef optional_routelist { + $1->next = $2; $$ = $1; } - | routelist routedef - { - $2->next = $1; - $$ = $2; - } ; routedef : routehead '{' optional_routeplist '}' ';' @@ -489,15 +481,11 @@ routeparms : T_AdvRoutePreference SIGNED } ; -rdnsslist : rdnssdef +rdnsslist : rdnssdef optional_rdnsslist { + $1->next = $2; $$ = $1; } - | rdnsslist rdnssdef - { - $2->next = $1; - $$ = $2; - } ; rdnssdef : rdnsshead '{' optional_rdnssplist '}' ';'