From 898857f77af3815a7fb64eb35be1898c52b2e32d Mon Sep 17 00:00:00 2001
From: Pierre Lebleu <pierre.lebleu@technicolor.com>
Date: Thu, 27 Oct 2016 13:38:29 +0200
Subject: [PATCH] ppp: Split the ppp-up for the IPv6 part

Signed-off-by: Pierre Lebleu <pme.lebleu@gmail.com>
---
 package/network/services/ppp/Makefile         |  1 +
 .../services/ppp/files/lib/netifd/ppp-up      | 11 --------
 .../services/ppp/files/lib/netifd/ppp6-up     | 27 +++++++++++++++++++
 package/network/services/ppp/files/ppp.sh     |  2 +-
 4 files changed, 29 insertions(+), 12 deletions(-)
 create mode 100644 package/network/services/ppp/files/lib/netifd/ppp6-up

diff --git a/package/network/services/ppp/Makefile b/package/network/services/ppp/Makefile
index 177950f2c7..2b78761ea5 100644
--- a/package/network/services/ppp/Makefile
+++ b/package/network/services/ppp/Makefile
@@ -206,6 +206,7 @@ define Package/ppp/install
 	$(INSTALL_DIR) $(1)/lib/netifd/proto
 	$(INSTALL_BIN) ./files/ppp.sh $(1)/lib/netifd/proto/
 	$(INSTALL_BIN) ./files/lib/netifd/ppp-up $(1)/lib/netifd/
+	$(INSTALL_BIN) ./files/lib/netifd/ppp6-up $(1)/lib/netifd/
 	$(INSTALL_BIN) ./files/lib/netifd/ppp-down $(1)/lib/netifd/
 endef
 Package/ppp-multilink/install=$(Package/ppp/install)
diff --git a/package/network/services/ppp/files/lib/netifd/ppp-up b/package/network/services/ppp/files/lib/netifd/ppp-up
index 7511042639..18c32f0dee 100755
--- a/package/network/services/ppp/files/lib/netifd/ppp-up
+++ b/package/network/services/ppp/files/lib/netifd/ppp-up
@@ -7,7 +7,6 @@ proto_set_keep 1
 [ -n "$PPP_IPPARAM" ] && {
 	[ -n "$IPLOCAL" ] && proto_add_ipv4_address "$IPLOCAL" 32 "" "${IPREMOTE:-2.2.2.2}"
 	[ -n "$IPREMOTE" ] && proto_add_ipv4_route 0.0.0.0 0 "$IPREMOTE"
-	[ -n "$LLLOCAL" ] && proto_add_ipv6_address "$LLLOCAL" 128
 	[ -n "$DNS1" ] && proto_add_dns_server "$DNS1"
 	[ -n "$DNS2" -a "$DNS1" != "$DNS2" ] && proto_add_dns_server "$DNS2"
 }
@@ -19,13 +18,3 @@ proto_send_update "$PPP_IPPARAM"
 		[ -x "$SCRIPT" ] && "$SCRIPT" "$@"
 	done
 }
-
-if [ -n "$AUTOIPV6" ]; then
-	json_init
-	json_add_string name "${PPP_IPPARAM}_6"
-	json_add_string ifname "@$PPP_IPPARAM"
-	json_add_string proto "dhcpv6"
-	[ -n "$EXTENDPREFIX" ] && json_add_string extendprefix 1
-	json_close_object
-	ubus call network add_dynamic "$(json_dump)"
-fi
diff --git a/package/network/services/ppp/files/lib/netifd/ppp6-up b/package/network/services/ppp/files/lib/netifd/ppp6-up
new file mode 100644
index 0000000000..87ca63c751
--- /dev/null
+++ b/package/network/services/ppp/files/lib/netifd/ppp6-up
@@ -0,0 +1,27 @@
+#!/bin/sh
+PPP_IPPARAM="$6"
+
+. /lib/netifd/netifd-proto.sh
+proto_init_update "$IFNAME" 1 1
+proto_set_keep 1
+[ -n "$PPP_IPPARAM" ] && {
+	[ -n "$LLLOCAL" ] && proto_add_ipv6_address "$LLLOCAL" 128
+}
+proto_send_update "$PPP_IPPARAM"
+
+[ -d /etc/ppp/ip-up.d ] && {
+	for SCRIPT in /etc/ppp/ip-up.d/*
+	do
+		[ -x "$SCRIPT" ] && "$SCRIPT" "$@"
+	done
+}
+
+if [ -n "$AUTOIPV6" ]; then
+	json_init
+	json_add_string name "${PPP_IPPARAM}_6"
+	json_add_string ifname "@$PPP_IPPARAM"
+	json_add_string proto "dhcpv6"
+	[ -n "$EXTENDPREFIX" ] && json_add_string extendprefix 1
+	json_close_object
+	ubus call network add_dynamic "$(json_dump)"
+fi
diff --git a/package/network/services/ppp/files/ppp.sh b/package/network/services/ppp/files/ppp.sh
index f8b04dec9f..91452b4288 100755
--- a/package/network/services/ppp/files/ppp.sh
+++ b/package/network/services/ppp/files/ppp.sh
@@ -144,7 +144,7 @@ ppp_generic_setup() {
 		${connect:+connect "$connect"} \
 		${disconnect:+disconnect "$disconnect"} \
 		ip-up-script /lib/netifd/ppp-up \
-		ipv6-up-script /lib/netifd/ppp-up \
+		ipv6-up-script /lib/netifd/ppp6-up \
 		ip-down-script /lib/netifd/ppp-down \
 		ipv6-down-script /lib/netifd/ppp-down \
 		${mtu:+mtu $mtu mru $mtu} \
-- 
GitLab