All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Barlow <dan@telent.net>
To: linux-ppp@vger.kernel.org
Subject: [PATCH] add ipv6-{up,down}-script options
Date: Sun, 14 Nov 2021 19:51:53 +0000	[thread overview]
Message-ID: <874k8d57jj.fsf@telent.net> (raw)


These allow a user to specify the paths to the scripts
usually located at /etc/ppp/ipv6-up and /etc/ppp/ipv6-down,
similarly to the existing ip-up-script and ip-down-script
options

Signed-off-by: Daniel Barlow <dan@telent.net>
---
 NEWS           |  7 +++++++
 pppd/ipv6cp.c  |  8 ++++----
 pppd/main.c    |  4 ++++
 pppd/options.c | 14 ++++++++++++++
 pppd/pppd.h    |  5 +++++
 5 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/NEWS b/NEWS
index 9d6c7fb..53a5e1a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+What's new since ppp-2.4.9 (unreleased)
+***************************************
+
+* New pppd options:
+  - ipv6-up-script
+  - ipv6-down-script
+
 What's new in ppp-2.4.9.
 ************************
 
diff --git a/pppd/ipv6cp.c b/pppd/ipv6cp.c
index 8ab440a..cef1e38 100644
--- a/pppd/ipv6cp.c
+++ b/pppd/ipv6cp.c
@@ -1322,7 +1322,7 @@ ipv6cp_up(fsm *f)
      */
     if (ipv6cp_script_state == s_down && ipv6cp_script_pid == 0) {
 	ipv6cp_script_state = s_up;
-	ipv6cp_script(_PATH_IPV6UP);
+	ipv6cp_script(path_ipv6up);
     }
 }
 
@@ -1373,7 +1373,7 @@ ipv6cp_down(fsm *f)
     /* Execute the ipv6-down script */
     if (ipv6cp_script_state == s_up && ipv6cp_script_pid == 0) {
 	ipv6cp_script_state = s_down;
-	ipv6cp_script(_PATH_IPV6DOWN);
+	ipv6cp_script(path_ipv6down);
     }
 }
 
@@ -1411,13 +1411,13 @@ ipv6cp_script_done(void *arg)
     case s_up:
 	if (ipv6cp_fsm[0].state != OPENED) {
 	    ipv6cp_script_state = s_down;
-	    ipv6cp_script(_PATH_IPV6DOWN);
+	    ipv6cp_script(path_ipv6down);
 	}
 	break;
     case s_down:
 	if (ipv6cp_fsm[0].state == OPENED) {
 	    ipv6cp_script_state = s_up;
-	    ipv6cp_script(_PATH_IPV6UP);
+	    ipv6cp_script(path_ipv6up);
 	}
 	break;
     }
diff --git a/pppd/main.c b/pppd/main.c
index b1ac8b4..bdc6faa 100644
--- a/pppd/main.c
+++ b/pppd/main.c
@@ -300,6 +300,10 @@ main(int argc, char *argv[])
     strlcpy(path_ipup, _PATH_IPUP, sizeof(path_ipup));
     strlcpy(path_ipdown, _PATH_IPDOWN, sizeof(path_ipdown));
 
+#ifdef INET6
+    strlcpy(path_ipv6up, _PATH_IPV6UP, sizeof(path_ipv6up));
+    strlcpy(path_ipv6down, _PATH_IPV6DOWN, sizeof(path_ipv6down));
+#endif
     link_stats_valid = 0;
     new_phase(PHASE_INITIALIZE);
 
diff --git a/pppd/options.c b/pppd/options.c
index f3f5e25..c959283 100644
--- a/pppd/options.c
+++ b/pppd/options.c
@@ -131,6 +131,11 @@ int	child_wait = 5;		/* # seconds to wait for children at exit */
 struct userenv *userenv_list;	/* user environment variables */
 int	dfl_route_metric = -1;	/* metric of the default route to set over the PPP link */
 
+#ifdef INET6
+char	path_ipv6up[MAXPATHLEN];   /* pathname of ipv6-up script */
+char	path_ipv6down[MAXPATHLEN]; /* pathname of ipv6-down script */
+#endif
+
 #ifdef MAXOCTETS
 unsigned int  maxoctets = 0;    /* default - no limit */
 int maxoctets_dir = 0;       /* default - sum of traffic */
@@ -328,6 +333,15 @@ option_t general_options[] = {
       "Set pathname of ip-down script",
       OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
 
+#ifdef INET6
+    { "ipv6-up-script", o_string, path_ipv6up,
+      "Set pathname of ipv6-up script",
+      OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
+    { "ipv6-down-script", o_string, path_ipv6down,
+      "Set pathname of ipv6-down script",
+      OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN },
+#endif
+
 #ifdef HAVE_MULTILINK
     { "multilink", o_bool, &multilink,
       "Enable multilink operation", OPT_PRIO | 1 },
diff --git a/pppd/pppd.h b/pppd/pppd.h
index ab8f674..ce43a28 100644
--- a/pppd/pppd.h
+++ b/pppd/pppd.h
@@ -336,6 +336,11 @@ extern bool	dump_options;	/* print out option values */
 extern bool	dryrun;		/* check everything, print options, exit */
 extern int	child_wait;	/* # seconds to wait for children at end */
 
+#ifdef INET6
+extern char	path_ipv6up[MAXPATHLEN]; /* pathname of ipv6-up script */
+extern char	path_ipv6down[MAXPATHLEN]; /* pathname of ipv6-down script */
+#endif
+
 #if defined(USE_EAPTLS) || defined(USE_PEAP)
 
 #define TLS_VERIFY_NONE     "none"
-- 
2.31.1



                 reply	other threads:[~2021-11-15 23:29 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874k8d57jj.fsf@telent.net \
    --to=dan@telent.net \
    --cc=linux-ppp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.