On Wed, Jun 14, 2017 at 03:00:11AM +0200, Klemens Nanni wrote: > Installing -current the other day showed a broken list when picking > the IPv6 default route just like reported on bugs@ five days ago[1]. 1: http://marc.info/?l=openbsd-bugs&m=149704197715791 > > This behaviour can be reproduced manually running the code from > v6_defroute(): > > $ # source/define bsort() > $ _if=trunk0 > $ bsort $(ping6 -n -c 2 ff02::2%$_if 2>/dev/null | > sed -n '/bytes from/{s/^.*from //;s/,.*$//;p;}' | > sed -n 'G;s/\n/&&/;/^\(.*\n\).*\n\1/d;h;P') > fe80::____:__ff:fe__:___%trunk0: hlim=64 icmp_seq=0 icmp_seq=1 ms > time=0.431 time=0.802 > > The first sed filters for those lines containing the router addresses > and does two things: > 1. strip leading text up to the address > 2. strip trailing text after the first ',' > > However, as far as i can see 'ping6 -nc2' will never output lines that > would match the second criteria thus making this part of the command > obsolete. > > The second sed removes duplicate addresses (not neccessarily consecutive > ones). This works fine for itself, but as seen above its input contains > more than just addresses. Besides that, sorting through sed just before > having bsort() cleaning the list is duplicate effort here. > > With this patch bsort() gets passed possibly duplicate IPv6 addresses > one per line so _routers will eventually contain a sorted list of unique > router addresses; this fixes the list shown during the installer. > > > While debugging this, I noticed that stopping after two echo replies > would sometimes show only one router; increasing this limit to three > made both of my network's routers reply/show up reliably. I'm somewhat sursprised noone else has fixed or complained about this so far. This still annoys me when setting up boxes in (IPv6-only) networks with more than one router.
Feedback? Comments? Marginally updated diff dropping ^ and $ from the sed command. Index: install.sub =================================================================== RCS file: /cvs/src/distrib/miniroot/install.sub,v retrieving revision 1.1020 diff -u -p -r1.1020 install.sub --- install.sub 7 Jul 2017 16:21:34 -0000 1.1020 +++ install.sub 9 Jul 2017 07:36:21 -0000 @@ -997,9 +997,8 @@ v6_defroute() { route -n show -inet6 | egrep -q '^default[[:space:]]' && return - _routers=$(bsort $(ping6 -n -c 2 ff02::2%$_if 2>/dev/null | - sed -n '/bytes from/{s/^.*from //;s/,.*$//;p;}' | - sed -n 'G;s/\n/&&/;/^\(.*\n\).*\n\1/d;h;P')) + _routers=$(bsort $(ping6 -n -c 3 ff02::2%$_if 2>/dev/null | + sed -n 's/.*from \(.*\): .*/\1/p')) _prompt="IPv6 default router?"