ppp: allow auto-detecting and creation of ipv6 subinterface
authorSteven Barth <cyrus@openwrt.org>
Wed, 8 Oct 2014 20:37:15 +0000 (20:37 +0000)
committerSteven Barth <cyrus@openwrt.org>
Wed, 8 Oct 2014 20:37:15 +0000 (20:37 +0000)
this makes ipv6 with ppp a bit more comfortable

Signed-off-by: Steven Barth <steven@midlink.org>
SVN-Revision: 42854

package/network/services/ppp/Makefile
package/network/services/ppp/files/lib/netifd/ppp-up
package/network/services/ppp/files/ppp.sh

index b320e304f25a1a19a2d87d03e3af7be15224f426..a26850caf9b2d7d85dc541caf6f03a0a5b38d7c9 100644 (file)
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ppp
 PKG_VERSION:=2.4.7
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=ftp://ftp.samba.org/pub/ppp/
index fa14550ec40b3008393f58908b344d6d53d21157..286fc5f83498c81a3492fb30d0a023f0a4507dec 100755 (executable)
@@ -19,3 +19,12 @@ proto_send_update "$PPP_IPPARAM"
                [ -x "$SCRIPT" ] && "$SCRIPT" "$@"
        done
 }
+
+if [ -n "$IPV6IFACE" -a "$(ifstatus $IPV6IFACE | jsonfilter -e @.device)" != "$IFNAME" ]; then
+       json_init
+       json_add_string name "${PPP_IPPARAM}_dhcpv6"
+       json_add_string ifname "@$PPP_IPPARAM"
+       json_add_string proto "dhcpv6"
+       json_close_object
+       ubus call network add_dynamic "$(json_dump)"
+fi
index f07b11f3fd34fa114552700308de50869c3d9aaf..eb3f069d953b3568b4d5986d3857cfe856b719dd 100755 (executable)
@@ -16,7 +16,7 @@ ppp_generic_init_config() {
        proto_config_add_string pppd_options
        proto_config_add_string 'connect:file'
        proto_config_add_string 'disconnect:file'
-       proto_config_add_boolean ipv6
+       proto_config_add_string ipv6
        proto_config_add_boolean authfail
        proto_config_add_int mtu
        proto_config_add_string pppname
@@ -28,9 +28,11 @@ ppp_generic_setup() {
        json_get_vars ipv6 demand keepalive username password pppd_options pppname
        if [ "$ipv6" = 0 ]; then
                ipv6=""
-       else
+       elif [ -z "$ipv6" -o "$ipv6" = auto ]; then
                ipv6=1
+               proto_export "IPV6IFACE=${config}6"
        fi
+
        if [ "${demand:-0}" -gt 0 ]; then
                demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
        else