aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/rtsold/rtsold.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/rtsold/rtsold.c')
-rw-r--r--usr.sbin/rtsold/rtsold.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/usr.sbin/rtsold/rtsold.c b/usr.sbin/rtsold/rtsold.c
index f1ba3b07c879..63f20e3032a7 100644
--- a/usr.sbin/rtsold/rtsold.c
+++ b/usr.sbin/rtsold/rtsold.c
@@ -29,8 +29,6 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD$
*/
#include <sys/param.h>
@@ -82,6 +80,7 @@ int uflag = 0;
const char *managedconf_script;
const char *otherconf_script;
+const char *alwaysconf_script;
const char *resolvconf_script = "/sbin/resolvconf";
cap_channel_t *capllflags, *capscript, *capsendmsg, *capsyslog;
@@ -126,11 +125,11 @@ main(int argc, char **argv)
progname = basename(argv[0]);
if (strcmp(progname, "rtsold") == 0) {
- opts = "adDfFim1M:O:p:R:u";
+ opts = "adDfFim1M:O:A:p:R:u";
once = 0;
pidfilepath = NULL;
} else {
- opts = "adDFiM:O:R:u";
+ opts = "adDFiM:O:A:R:u";
fflag = 1;
once = 1;
}
@@ -167,6 +166,9 @@ main(int argc, char **argv)
case 'O':
otherconf_script = optarg;
break;
+ case 'A':
+ alwaysconf_script = optarg;
+ break;
case 'p':
pidfilepath = optarg;
break;
@@ -204,6 +206,9 @@ main(int argc, char **argv)
if (otherconf_script != NULL && *otherconf_script != '/')
errx(1, "configuration script (%s) must be an absolute path",
otherconf_script);
+ if (alwaysconf_script != NULL && *alwaysconf_script != '/')
+ errx(1, "configuration script (%s) must be an absolute path",
+ alwaysconf_script);
if (*resolvconf_script != '/')
errx(1, "configuration script (%s) must be an absolute path",
resolvconf_script);
@@ -336,7 +341,8 @@ init_capabilities(void)
{
#ifdef WITH_CASPER
const char *const scripts[] =
- { resolvconf_script, managedconf_script, otherconf_script };
+ { resolvconf_script, managedconf_script, otherconf_script,
+ alwaysconf_script };
cap_channel_t *capcasper;
nvlist_t *limits;
@@ -616,6 +622,7 @@ rtsol_check_timer(void)
if (probe) {
ifi->managedconfig = 0;
ifi->otherconfig = 0;
+ ifi->alwaysconfig = 0;
}
if (probe && mobile_node) {
error = cap_probe_defrouters(capsendmsg,
@@ -785,15 +792,19 @@ usage(const char *progname)
{
if (strcmp(progname, "rtsold") == 0) {
- fprintf(stderr, "usage: rtsold [-dDfFm1] [-O script-name] "
+ fprintf(stderr, "usage: rtsold [-dDfFimu1] [-O script-name] "
+ "[-M script-name ] [-A script-name ] "
"[-p pidfile] [-R script-name] interface ...\n");
- fprintf(stderr, "usage: rtsold [-dDfFm1] [-O script-name] "
+ fprintf(stderr, "usage: rtsold [-dDfFimu1] [-O script-name] "
+ "[-M script-name ] [-A script-name ] "
"[-p pidfile] [-R script-name] -a\n");
} else {
- fprintf(stderr, "usage: rtsol [-dDF] [-O script-name] "
- "[-p pidfile] [-R script-name] interface ...\n");
- fprintf(stderr, "usage: rtsol [-dDF] [-O script-name] "
- "[-p pidfile] [-R script-name] -a\n");
+ fprintf(stderr, "usage: rtsol [-dDFiu] [-O script-name] "
+ "[-M script-name ] [-A script-name ] "
+ "[-R script-name] interface ...\n");
+ fprintf(stderr, "usage: rtsol [-dDFiu] [-O script-name] "
+ "[-M script-name ] [-A script-name ] "
+ "[-R script-name] -a\n");
}
exit(1);
}