[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#264917: ifplugd: don't beep when no link beep detected



# Bcc control
tags 264917 + patch
thanks

On 07/03/23 10:50 +0100, Marcus Better said ...
> that the beep should be disabled in the default configuration, by having 
> the "-b" argument in /etc/default/ifplugd.

After reading the discussion on this bug, I am inclined towards
providing options for disabling beeps on link up and down individually.
The attached patch implements this.  I will include something like this
in the Debian package but will leave the default behaviour as it is
right now.

Cheers,

Giridhar

-- 
Y Giridhar Appaji Nag | http://www.appaji.net/
#! /bin/sh /usr/share/dpatch/dpatch-run
## 04_up_down_beep_options.dpatch by Y Giridhar Appaji Nag <giridhar@appaji.net>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Implement --no-beep-up and --no-beep-down options

@DPATCH@
diff -urNad ifplugd-0.28~/man/ifplugd.8 ifplugd-0.28/man/ifplugd.8
--- ifplugd-0.28~/man/ifplugd.8	2008-03-05 13:27:09.000000000 +0530
+++ ifplugd-0.28/man/ifplugd.8	2008-03-05 13:31:20.000000000 +0530
@@ -22,7 +22,13 @@
 Do not use syslog, use stdout instead (for debugging) (default: off). 
 .TP
 \fB\-b | \-\-no-beep\f1
-Do not beep (off) 
+Do not beep (off), overrides --no-beep-up and --no-beep-down.
+.TP
+\fB\-U | \-\-no-beep-up\f1
+Do not beep on interface up (off)
+.TP
+\fB\-D | \-\-no-beep-down\f1
+Do not beep on interface down (off)
 .TP
 \fB\-f | \-\-ignore-fail\f1
 Ignore detection failure, retry instead. Failure is treated as "no link". (default: off) 
diff -urNad ifplugd-0.28~/man/ifplugd.8.xml.in ifplugd-0.28/man/ifplugd.8.xml.in
--- ifplugd-0.28~/man/ifplugd.8.xml.in	2008-03-05 13:27:09.000000000 +0530
+++ ifplugd-0.28/man/ifplugd.8.xml.in	2008-03-05 13:30:07.000000000 +0530
@@ -73,7 +73,21 @@
 	  <option>
 		<p><opt>-b | --no-beep</opt></p>
 		<optdesc><p>
-			Do not beep (off)
+			Do not beep (off), overrides --no-beep-up and --no-beep-down.
+		  </p></optdesc>
+	  </option>
+	  
+	  <option>
+		<p><opt>-U | --no-beep-up</opt></p>
+		<optdesc><p>
+			Do not beep on interface up (off)
+		  </p></optdesc>
+	  </option>
+	  
+	  <option>
+		<p><opt>-D | --no-beep-down</opt></p>
+		<optdesc><p>
+			Do not beep on interface down (off)
 		  </p></optdesc>
 	  </option>
 	  
diff -urNad ifplugd-0.28~/src/ifplugd.c ifplugd-0.28/src/ifplugd.c
--- ifplugd-0.28~/src/ifplugd.c	2008-03-05 13:27:09.000000000 +0530
+++ ifplugd-0.28/src/ifplugd.c	2008-03-05 13:27:09.000000000 +0530
@@ -73,6 +73,8 @@
 
 int daemonize = 1,
     use_beep = 1,
+    beep_on_up = 1,
+    beep_on_down = 1,
     no_startup_script = 0,
     no_shutdown_script = 0,
     wait_on_fork = 0,
@@ -126,6 +128,18 @@
     return;
 }
 
+static void beep_up(int b) {
+	if(!beep_on_up)
+		return;
+	beep(b);
+}
+
+static void beep_down(int b) {
+	if(!beep_on_down)
+		return;
+	beep(b);
+}
+
 const char *pid_file_proc() {
     static char fn[PATH_MAX];
     snprintf(fn, sizeof(fn), "%s/ifplugd.%s.pid", VARRUN, interface);
@@ -237,13 +251,13 @@
 
     if (!WIFEXITED(r) || WEXITSTATUS(r) != 0) {
         if (status == IFSTATUS_UP)
-            beep(2);
+            beep_up(2);
         daemon_log(LOG_ERR, "Program execution failed, return value is %i.", WEXITSTATUS(r));
 
         return ignore_retval ? 0 : -1;
     } else {
         if (status == IFSTATUS_UP)
-            beep(0);
+            beep_up(0);
 
         daemon_log(LOG_INFO, "Program executed successfully.");
         return 0;
@@ -440,7 +454,10 @@
         goto finish;
     
     daemon_log(LOG_INFO, "Initialization complete, link beat %sdetected%s.", status == IFSTATUS_UP ? "" : "not ", use_ifmonitor ? (disabled ? ", interface disabled" : ", interface enabled") : "");
-    beep(status == IFSTATUS_UP ? 0 : 1);
+    if(status == IFSTATUS_UP)
+        beep_up(0);
+    else
+        beep_down(1);
 
     if ((!no_startup_script && status == IFSTATUS_UP) || initial_down)
         if (action(status) < 0)
@@ -513,7 +530,10 @@
 
         if (status != s) {
             daemon_log(LOG_INFO, "Link beat %s.", status == IFSTATUS_DOWN ? "lost" : "detected");
-            beep(status == IFSTATUS_UP ? 0 : 1);
+            if(status == IFSTATUS_UP)
+                beep_up(0);
+            else
+                beep_down(1);
             
             if (t)
                 t = 0;
@@ -586,7 +606,7 @@
         setenv(IFPLUGD_ENV_PREVIOUS, strstatus(status), 1);
         setenv(IFPLUGD_ENV_CURRENT, strstatus(-1), 1);
         action(IFSTATUS_DOWN);
-        beep(1);
+        beep_down(1);
     }
     
 finish:
@@ -628,6 +648,8 @@
            "   -n --no-daemon            Do not daemonize (for debugging) (%s)\n"
            "   -s --no-syslog            Do not use syslog, use stderr instead (for debugging) (%s)\n"
            "   -b --no-beep              Do not beep (%s)\n"
+           "   -U --no-beep-up           Do not beep on interface up (%s)\n"
+           "   -D --no-beep-down         Do not beep on interface down (%s)\n"
            "   -f --ignore-fail          Ignore detection failure, retry instead (failure is treated as DOWN) (%s)\n"
            "   -F --ignore-fail-positive Ignore detection failure, retry instead (failure is treated as UP) (%s)\n"
            "   -i --iface=IFACE          Specify ethernet interface (%s)\n"
@@ -656,6 +678,8 @@
            !daemonize ? "on" : "off",
            !use_syslog ? "on" : "off",
            !use_beep ? "on" : "off",
+           !beep_on_up ? "on" : "off",
+           !beep_on_down ? "on" : "off",
            failure_status == IFSTATUS_DOWN ? "on" : "off",
            failure_status == IFSTATUS_UP ? "on" : "off",
            interface,
@@ -679,6 +703,8 @@
         {"no-daemon",            no_argument, 0, 'n'},
         {"no-syslog",            no_argument, 0, 's'},
         {"no-beep",              no_argument, 0, 'b'},
+        {"no-beep-up",           no_argument, 0, 'U'},
+        {"no-beep-down",         no_argument, 0, 'D'},
         {"ignore-fail",          no_argument, 0, 'f'},
         {"ignore-fail-positive", no_argument, 0, 'F'},
         {"ignore-retval",        no_argument, 0, 'I'},
@@ -710,7 +736,7 @@
     for (;;) {
         int c;
         
-        if ((c = getopt_long(argc, argv, "asni:r:t:u:d:hkbfFvm:pqwx:cISRzlMW", long_options, &option_index)) < 0)
+        if ((c = getopt_long(argc, argv, "asni:r:t:u:d:hkbUDfFvm:pqwx:cISRzlMW", long_options, &option_index)) < 0)
             break;
 
         switch (c) {
@@ -759,6 +785,12 @@
             case 'b':
                 use_beep = !use_beep;
                 break;
+            case 'U':
+                beep_on_up = !beep_on_up;
+                break;
+            case 'D':
+                beep_on_down = !beep_on_down;
+                break;
             case 'f':
                 failure_status = IFSTATUS_DOWN;
                 break;

Attachment: signature.asc
Description: Digital signature


Reply to: