summaryrefslogtreecommitdiff
path: root/scripts/vyatta-dhcpv6-client.pl
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-11-30 14:20:04 -0800
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-11-30 14:20:04 -0800
commit281f23011eb00ec7b5c4a0e198c5373eec8a0059 (patch)
tree2b4cdb0f27fbb044e9f14d28e49d8c6cbb01391e /scripts/vyatta-dhcpv6-client.pl
parentd345b4bb0ab8471f14c4da441662270f1a265219 (diff)
downloadvyatta-cfg-system-281f23011eb00ec7b5c4a0e198c5373eec8a0059.tar.gz
vyatta-cfg-system-281f23011eb00ec7b5c4a0e198c5373eec8a0059.zip
Fix dhcpv6 client script
Some compile and typo errors. Don't capture output, let it flow through to console. Use exec to get correct error code from dhcpv6 client program.
Diffstat (limited to 'scripts/vyatta-dhcpv6-client.pl')
-rwxr-xr-xscripts/vyatta-dhcpv6-client.pl31
1 files changed, 16 insertions, 15 deletions
diff --git a/scripts/vyatta-dhcpv6-client.pl b/scripts/vyatta-dhcpv6-client.pl
index 283b6d2b..18fbfbd8 100755
--- a/scripts/vyatta-dhcpv6-client.pl
+++ b/scripts/vyatta-dhcpv6-client.pl
@@ -13,7 +13,7 @@
# General Public License for more details.
#
# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2005-2009 Vyatta, Inc.
+# Copyright (C) 2010 Vyatta, Inc.
# All Rights Reserved.
#
# Author: Bob Gilligan <gilligan@vyatta.com>
@@ -25,17 +25,14 @@
#
use strict;
+use warnings;
+
use lib "/opt/vyatta/share/perl5/";
-use Sys::hostname;
+use Sys::Hostname;
use Vyatta::Config;
+use Vyatta::Interface;
use Getopt::Long;
-my $start_flag; # Start the daemon
-my $stop_flag; # Stop the daemon and delete all config files
-my $release_flag; # Stop the daemon, but leave config file
-my $renew_flag; # Re-start the daemon. Functionally same as start_flag
-my $ifname;
-
sub gen_conf_file {
my ($conffile, $ifname) = @_;
my $FD_WR;
@@ -66,7 +63,7 @@ sub usage {
sub dhcpv6_options {
my $ifname = shift;
- my $intf = new Vyatta::Interface($name);
+ my $intf = new Vyatta::Interface($ifname);
die "Unknown interface type for $ifname" unless $intf;
@@ -88,6 +85,12 @@ sub dhcpv6_options {
# Main Section
#
+my $start_flag; # Start the daemon
+my $stop_flag; # Stop the daemon and delete all config files
+my $release_flag; # Stop the daemon, but leave config file
+my $renew_flag; # Re-start the daemon. Functionally same as start_flag
+my $ifname;
+
GetOptions("start" => \$start_flag,
"stop" => \$stop_flag,
"release" => \$release_flag,
@@ -120,8 +123,7 @@ if (defined($stop_flag)|| defined ($release_flag)) {
# Stop dhclient -6 on $ifname
printf("Stopping daemon...\n");
- my $output=`$cmdname -6 -nw -cf $conffile -pf $pidfile -lf $leasefile -x $ifname`;
- printf($output);
+ system ("$cmdname -6 -nw -cf $conffile -pf $pidfile -lf $leasefile -x $ifname");
# Delete files it leaves behind...
printf("Deleting related files...\n");
@@ -141,13 +143,12 @@ if (defined($start_flag) || defined ($renew_flag)) {
# First, kill any previous instance of dhclient running on this interface
#
printf("Stopping old daemon...\n");
- my $output = `$cmdname -6 -pf $pidfile -x $ifname`;
- printf($output);
+ system("$cmdname -6 -pf $pidfile -x $ifname");
# start "dhclient -6" on $ifname
my $args = dhcpv6_options($ifname);
printf("Starting new daemon...\n");
- my $output=`$cmdname -6 -nw -cf $conffile -pf $pidfile -lf $leasefile $args $ifname`;
- printf($output);
+ exec "$cmdname -6 -nw -cf $conffile -pf $pidfile -lf $leasefile $args $ifname"
+ or die "Can't exec $cmdname";
}