From owner-freebsd-bugs@FreeBSD.ORG Wed Dec 22 02:00:24 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2274E106566C for ; Wed, 22 Dec 2010 02:00:24 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id CE5DD8FC18 for ; Wed, 22 Dec 2010 02:00:23 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oBM20NPY061267 for ; Wed, 22 Dec 2010 02:00:23 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oBM20NTX061258; Wed, 22 Dec 2010 02:00:23 GMT (envelope-from gnats) Resent-Date: Wed, 22 Dec 2010 02:00:23 GMT Resent-Message-Id: <201012220200.oBM20NTX061258@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Joe Holden Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79950106564A for ; Wed, 22 Dec 2010 01:55:37 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (unknown [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 4E0968FC12 for ; Wed, 22 Dec 2010 01:55:37 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id oBM1tbFX028474 for ; Wed, 22 Dec 2010 01:55:37 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id oBM1tbUc028473; Wed, 22 Dec 2010 01:55:37 GMT (envelope-from nobody) Message-Id: <201012220155.oBM1tbUc028473@red.freebsd.org> Date: Wed, 22 Dec 2010 01:55:37 GMT From: Joe Holden To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: misc/153362: patch to add -p flag to set pidfile for rtadvd X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Dec 2010 02:00:24 -0000 >Number: 153362 >Category: misc >Synopsis: patch to add -p flag to set pidfile for rtadvd >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Dec 22 02:00:23 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Joe Holden >Release: 8.2-PRERELEASE >Organization: Pseudo Networks Limited >Environment: >Description: I have attached a quick/dirty patch to add a -p flag that sets an alternative pidfile location as well as unlinking pidfile before exit... my programming skills are pretty much 0, so it will probably need to be rewritten. >How-To-Repeat: >Fix: Patch attached with submission follows: diff -u -r rtadvd.orig/rtadvd.8 rtadvd/rtadvd.8 --- rtadvd.orig/rtadvd.8 2010-12-22 01:32:38.000000000 +0000 +++ rtadvd/rtadvd.8 2010-12-22 01:22:15.000000000 +0000 @@ -144,6 +144,8 @@ .It Fl s Do not add or delete prefixes dynamically. Only statically configured prefixes, if any, will be advertised. +.It Fl p +Set an alternate pidfile location. .El .Pp Upon receipt of signal diff -u -r rtadvd.orig/rtadvd.c rtadvd/rtadvd.c --- rtadvd.orig/rtadvd.c 2010-12-22 01:32:38.000000000 +0000 +++ rtadvd/rtadvd.c 2010-12-22 01:16:54.000000000 +0000 @@ -81,6 +81,7 @@ struct in6_addr in6a_site_allrouters; static char *dumpfilename = "/var/run/rtadvd.dump"; /* XXX: should be configurable */ static char *pidfilename = "/var/run/rtadvd.pid"; /* should be configurable */ +char *pidfilecust; static char *mcastif; int sock; int rtsock = -1; @@ -163,7 +164,7 @@ pid_t pid; /* get command line options and arguments */ - while ((ch = getopt(argc, argv, "c:dDfM:Rs")) != -1) { + while ((ch = getopt(argc, argv, "c:dDfMp:Rs")) != -1) { switch (ch) { case 'c': conffile = optarg; @@ -189,13 +190,16 @@ case 's': sflag = 1; break; + case 'p': + pidfilecust = optarg; + break; } } argc -= optind; argv += optind; if (argc == 0) { fprintf(stderr, - "usage: rtadvd [-dDfMRs] [-c conffile] " + "usage: rtadvd [-dDfMRsp] [-c conffile] " "interfaces...\n"); exit(1); } @@ -241,13 +245,24 @@ /* record the current PID */ pid = getpid(); - if ((pidfp = fopen(pidfilename, "w")) == NULL) { - syslog(LOG_ERR, - "<%s> failed to open the pid log file, run anyway.", - __func__); - } else { - fprintf(pidfp, "%d\n", pid); - fclose(pidfp); + if (!pidfilecust) { + if ((pidfp = fopen(pidfilename, "w")) == NULL) { + syslog(LOG_ERR, + "<%s> failed to open the pid log file, run anyway.", + __func__); + } else { + fprintf(pidfp, "%d\n", pid); + fclose(pidfp); + } + } else { + if ((pidfp = fopen(pidfilecust, "w")) == NULL) { + syslog(LOG_ERR, + "<%s> failed to open the pid log file, run anyway.", + __func__); + } else { + fprintf(pidfp, "%d\n", pid); + fclose(pidfp); + } } #ifdef HAVE_POLL_H @@ -297,6 +312,8 @@ } if (do_die) { + /* unlink() pid file before exiting... */ + if (!pidfilename) { unlink(pidfilecust); } else { unlink(pidfilename); } die(); /*NOTREACHED*/ } >Release-Note: >Audit-Trail: >Unformatted: