Bug #9357
closed
rc.newwanipv6 called regardless of REASON
Added by Flole Systems over 5 years ago.
Updated almost 5 years ago.
Description
The dhcp6c_wan_script.sh does not honor the REASON-Variable set by the dhcp6c process. Even though it is RENEW and the interface lease was renewed way ahead of the IP expiry, the newwanipv6 script is called causing filter reload and so on. I would expect that REASON environment-variable is evaluated and then checked if we have a RENEW (lease extended) or really a REBIND (lease expired and needed to get a new one, we lost the IP on the interface for some time in this case so calling newwanipv6 is fine in this case).
For me every filter-reload causes some UDP-Packetloss, so I am trying to get "useless" reloads down to a minimum.
We probably need something like a "copy" of /usr/local/sbin/pfSense-dhclient-script here, just for IPv6
A dirty patch I am using for now is adding these lines in /var/etc/dhcp6c_wan_script.sh
if [ "$REASON" == "RENEW" ]; then
exit
fi
(Just posting this here so I don't forget what I did when I have to re-do it again cause it got overwritten)
Version 2.4.4-p3 has the following dhcp6c_wan_script.sh which should already ignore the RENEW reason:
#!/bin/sh
# This shell script launches /etc/rc.newwanipv6 with a interface argument.
dmips=${new_domain_name_servers}
dmnames=${new_domain_name}
case $REASON in
REQUEST)
/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d "interface=pppoe0&dmnames=${dmnames}&dmips=${dmips}"
;;
REBIND)
;;
RELEASE)
/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d "interface=pppoe0&dmnames=${dmnames}&dmips=${dmips}"
;;
RENEW|INFO)
esac
Are you able to test this? If you disable and re-enable IPv6 on your WAN interface, /var/etc/dhcp6c_wan_script.sh should be replaced with the default file of your pfSense version. (Therefore, keep a copy of your modified file before you disable IPv6.)
Hi Karl,
thanks for pointing this out! In that case this is fixed in 2.4.4-p3 and it was simply not marked fixed here. I haven't updated to p3 yet as I thought there is no benefit in doing that for me, seems like there is now.
We can mark this fixed then.
- Status changed from New to Resolved
Actually the script posted above is only used if "don't wait for RA" is set, otherwise the "old" script is still used. Please re-open this (and fix this, I think the same script could be used in both cases, not sure why this is not the case).
- Status changed from Resolved to New
- Category set to Interfaces
Flole Systems wrote:
Actually the script posted above is only used if "don't wait for RA" is set, otherwise the "old" script is still used. Please re-open this (and fix this, I think the same script could be used in both cases, not sure why this is not the case).
2.4.4-p3 files, both files have RENEW
/var/etc/dhcp6c_wan_script.sh:
#!/bin/sh
# This shell script launches /etc/rc.newwanipv6 with a interface argument.
dmips=${new_domain_name_servers}
dmnames=${new_domain_name}
case $REASON in
REQUEST)
/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d "interface=mvneta0&dmnames=${dmnames}&dmips=${dmips}"
;;
REBIND)
;;
RELEASE)
/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d "interface=mvneta0&dmnames=${dmnames}&dmips=${dmips}"
;;
RENEW|INFO)
esac
/var/etc/dhcp6c_wan_dhcp6withoutra_script.sh:
#!/bin/sh
# This shell script launches rtsold.
dmips=${new_domain_name_servers}
dmnames=${new_domain_name}
dreason=${REASON}
echo $dmips > /tmp/mvneta0_domain_name_servers
echo $dmnames > /tmp/mvneta0_new_domain_name
echo $dreason > /tmp/mvneta0_reason
case $REASON in
REQUEST)
/bin/sleep 2
/usr/sbin/rtsold -1 -p /var/run/rtsold_mvneta0.pid -O /var/etc/rtsold_mvneta0_script.sh mvneta0
;;
REBIND)
;;
RELEASE)
/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d "interface=mvneta0&dmnames=${dmnames}&dmips=${dmips}"
;;
RENEW|INFO)
esac
- Status changed from New to Closed
Also available in: Atom
PDF