diff options
Diffstat (limited to 'packages/wide-dhcpv6/patches/0025-option-to-prevent-ia-release.patch')
-rw-r--r-- | packages/wide-dhcpv6/patches/0025-option-to-prevent-ia-release.patch | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/packages/wide-dhcpv6/patches/0025-option-to-prevent-ia-release.patch b/packages/wide-dhcpv6/patches/0025-option-to-prevent-ia-release.patch deleted file mode 100644 index 32c15814..00000000 --- a/packages/wide-dhcpv6/patches/0025-option-to-prevent-ia-release.patch +++ /dev/null @@ -1,155 +0,0 @@ -From: 1vivy <1vivy@tutanota.com> -Date: Sat, 22 Jul 2023 13:07:10 -0600 -Subject: wide-dhcpv6: T5387: Add a no release option '-n'. - -This prevents a release signal from being sent to the ISP causing a new PD or address to be allocated. - -Co-authored-by: MrLenin <909621+MrLenin@users.noreply.github.com> -Co-authored-by: marjohn56 <martin@queens-park.com> ---- wide-dhcpv6.orig/common.h -+++ wide-dhcpv6/common.h -@@ -120,6 +120,7 @@ sysdep_sa_len (const struct sockaddr *sa - extern int foreground; - extern int debug_thresh; - extern char *device; -+extern int opt_norelease; - - /* search option for dhcp6_find_listval() */ - #define MATCHLIST_PREFIXLEN 0x1 ---- wide-dhcpv6.orig/dhcp6c.8 -+++ wide-dhcpv6/dhcp6c.8 -@@ -88,6 +88,10 @@ is terminated. (suits for a use in shel - Since the configuration is internally generated, you cannot provide a configuration in this mode. If you want to have different actions for the stateless DHCPv6 information, you should write an appropriate configuration and invoke - .Nm - without this option. -+.It Fl n -+Prevent Release message from being sent to DHCPv6 server when -+.Nm -+stops. This is useful for preventing a new address from being configured by the DHCPv6 server when restarting the DHCPv6 client. - .It Fl p Ar pid-file - Use - .Ar pid-file -@@ -109,18 +113,22 @@ or - .Fl i - option is specified. - .Pp --Upon receipt of the --.Dv SIGHUP -+Upon receipt of a -+.Dv SIGHUP , -+.Dv SIGTERM , - or --.Dv SIGTERM --signals, --.Nm --will remove all stateful resources from the system. --In the former case the daemon will then reinvoke itself, --while it will stop running in the latter case. --In either case, -+.Dv SIGUSR1 -+signal, - .Nm --will send DHCPv6 Release messages to release resources assigned from servers. -+will remove all stateful resources from the system. After that, -+.Dv SIGHUP -+reinitializes the daemon, and -+.Dv SIGTERM -+stops the daemon. In both cases, DHCPv6 Release message will be sent to release resources assigned from servers. -+.Dv SIGUSR1 -+stops the daemon as -+.Dv SIGTERM -+does though DHCPv6 Release message will not be sent. - .\" - .Sh FILES - .Bl -tag -width /etc/wide-dhcpv6/dhcp6c.conf -compact ---- wide-dhcpv6.orig/dhcp6c.c -+++ wide-dhcpv6/dhcp6c.c -@@ -84,6 +84,7 @@ static int exit_ok = 0; - static sig_atomic_t sig_flags = 0; - #define SIGF_TERM 0x1 - #define SIGF_HUP 0x2 -+#define SIGF_USR1 0x4 - - const dhcp6_mode_t dhcp6_mode = DHCP6_MODE_CLIENT; - -@@ -108,6 +109,8 @@ static int ctldigestlen; - - static int infreq_mode = 0; - -+int opt_norelease; -+ - static inline int get_val32 __P((char **, int *, u_int32_t *)); - static inline int get_ifname __P((char **, int *, char *, int)); - -@@ -170,7 +173,7 @@ main(argc, argv) - else - progname++; - -- while ((ch = getopt(argc, argv, "c:dDfik:p:P:")) != -1) { -+ while ((ch = getopt(argc, argv, "c:dDfik:np:P:")) != -1) { - switch (ch) { - case 'c': - conffile = optarg; -@@ -190,6 +193,9 @@ main(argc, argv) - case 'k': - ctlkeyfile = optarg; - break; -+ case 'n': -+ opt_norelease = 1; -+ break; - case 'p': - pid_file = optarg; - break; -@@ -395,6 +401,11 @@ client6_init() - strerror(errno)); - exit(1); - } -+ if (signal(SIGUSR1, client6_signal) == SIG_ERR) { -+ debug_printf(LOG_WARNING, FNAME, "failed to set signal: %s", -+ strerror(errno)); -+ exit(1); -+ } - } - - int -@@ -525,6 +536,13 @@ process_signals() - free_resources(NULL); - client6_startall(1); - } -+ if ((sig_flags & SIGF_USR1)) { -+ debug_printf(LOG_INFO, FNAME, "exit without release"); -+ exit_ok = 1; -+ opt_norelease = 1; -+ free_resources(NULL); -+ check_exit(); -+ } - - sig_flags = 0; - } -@@ -1171,6 +1189,9 @@ client6_signal(sig) - case SIGHUP: - sig_flags |= SIGF_HUP; - break; -+ case SIGUSR1: -+ sig_flags |= SIGF_USR1; -+ break; - } - } - ---- wide-dhcpv6.orig/dhcp6c_ia.c -+++ wide-dhcpv6/dhcp6c_ia.c -@@ -420,7 +420,13 @@ release_all_ia(ifp) - for (ia = TAILQ_FIRST(&iac->iadata); ia; ia = ia_next) { - ia_next = TAILQ_NEXT(ia, link); - -- (void)release_ia(ia); -+ if (opt_norelease == 0) { -+ debug_printf(LOG_INFO, FNAME, "Start address " -+ "release"); -+ (void)release_ia(ia); -+ } else -+ debug_printf(LOG_INFO, FNAME, "Bypassing address " -+ "release because of -n flag"); - - /* - * The client MUST stop using all of the addresses |