NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/53655: ifwatchd(8) should handle IPv6 "deprecated" interface flags
The following reply was made to PR bin/53655; it has been noted by GNATS.
From: clare%csel.org@localhost
To: Joerg Sonnenberger <joerg%bec.de@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: bin/53655: ifwatchd(8) should handle IPv6 "deprecated"
interface flags
Date: Sun, 14 Oct 2018 02:37:30 +0900
On Mon, 8 Oct 2018 13:34:56 +0200
Joerg Sonnenberger <joerg%bec.de@localhost> wrote:
> On Mon, Oct 08, 2018 at 01:50:01AM +0000, clare%csel.org@localhost wrote:
> > > > in Japan, LTE based ISPs does not provide fixed IPv6 prefix for
> > > > general consumers. power-cycling of LTE routers are result in
> > > > changed (upstream) IPv6 prefix.
> > >
> > > Why don't you use dhcpcd for that?
> >
> > dhcpcd itself is already used for accepting dynamic RAs.
> > Should I hook dhcpcd directry?
>
> It provides you a message for new prefix delegations at least, so I
> would expect that you can script the rest from that.
>
> Joerg
I wrote following script for my tunnel router.
$ cat /libexec/dhcpcd-hooks/90-racoon
#!/bin/sh
logger "XXX reason=$reason"
logger "XXX interface=$interface"
if [ $reason != "ROUTERADVERT" ]; then
exit 0
fi
rm -f /tmp/.newaddr
rm -f /tmp/.curaddr
# search newly bound address
ifconfig vlan30 | {
while read proto ifaddr flags code; do
if [ "$proto" != "inet6" ]; then
continue
fi
if [ "$flags" != "flags" ]; then
continue
fi
if [ "$code" != "0x0" ]; then
continue
fi
newaddr=`echo "$ifaddr" | sed -e s,/64,,g`
echo "$newaddr" > /tmp/.newaddr
logger "XXX address=$newaddr"
done
}
# search tunnel address
ifconfig ipsec0 | {
while read tunnel proto myaddr arrow hisaddr; do
if [ "$tunnel" != tunnel ]; then
continue
fi
if [ "$proto" != inet6 ]; then
continue
fi
echo "$myaddr" > /tmp/.curaddr
done
}
curaddr=`cat /tmp/.curaddr`
newaddr=`cat /tmp/.newaddr`
if [ -z "$newaddr" ]; then
exit 0
fi
if [ "$newaddr" != "$curaddr" ]; then
logger "XXX we need update tunnels"
else
logger "XXX we can keep tunnels"
exit 0
fi
/sbin/ifconfig ipsec0 tunnel "$newaddr" 2400:8500:1302:823::DEAD:BEEF
/sbin/ifconfig ipsec0 up
/sbin/ifconfig ipsec1 tunnel "$newaddr" 2400:8500:1302:829::DEAD:BEEF
/sbin/ifconfig ipsec1 up
/sbin/ifconfig ipsec2 tunnel "$newaddr" 2400:8500:1302:825::DEAD:BEEF
/sbin/ifconfig ipsec2 up
service racoon restart
--
Shinichi Doyashiki <clare%csel.org@localhost>
Home |
Main Index |
Thread Index |
Old Index