From 7dac33b3bfebabb3a9b95dfe6a0578b9f1c31453 Mon Sep 17 00:00:00 2001 From: Marat Nepomnyashy Date: Tue, 18 Dec 2007 16:53:56 -0800 Subject: Rewrite '/etc/resolv.conf' each time config at 'system domain-search domain $(@)' changes to update the 'search' params. Bug 2113 fix. --- scripts/system/vyatta_update_resolv.pl | 95 ++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 scripts/system/vyatta_update_resolv.pl (limited to 'scripts') diff --git a/scripts/system/vyatta_update_resolv.pl b/scripts/system/vyatta_update_resolv.pl new file mode 100755 index 00000000..0255b256 --- /dev/null +++ b/scripts/system/vyatta_update_resolv.pl @@ -0,0 +1,95 @@ +#!/usr/bin/perl -w +# +# Module: vyatta_update_resolv.pl +# +# **** License **** +# Version: VPL 1.0 +# +# The contents of this file are subject to the Vyatta Public License +# Version 1.0 ("License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.vyatta.com/vpl +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc. +# All Rights Reserved. +# +# Author: Marat Nepomnyashy +# Date: December 2007 +# Description: Script to update '/etc/resolv.conf' on commit of 'system domain-search domain' config. +# +# **** End License **** +# + +use strict; +use lib "/opt/vyatta/share/perl5/"; + + +use Getopt::Long; +my $change_dir = ''; +my $modify_dir = ''; +GetOptions("change_dir=s" => \$change_dir, "modify_dir=s" => \$modify_dir); + + +use VyattaConfig; +my $vc = new VyattaConfig(); + +if ($change_dir ne '') { + $vc->{_changes_only_dir_base} = $change_dir; +} +if ($modify_dir ne '') { + $vc->{_new_config_dir_base} = $modify_dir; +} + + +my $doms = ''; +$vc->setLevel('system domain-search domain'); +my @domains = $vc->returnValues('.'); +foreach my $domain (@domains) { + if (length($doms) > 0) { + $doms .= ' '; + } + $doms .= $domain; +} + +my $search = ''; +if (length($doms) > 0) { + $search = "search\t\t$doms\t\t#line generated by $0\n"; +} + + +# The following will re-write '/etc/resolv.conf' line by line, +# replacing the 'search' specifier with the latest values. + +my @resolv; +if (-e '/etc/resolv.conf') { + open (RESOLV, '; + close (RESOLV); +} + + +my $foundSearch = 0; + +open (RESOLV, '>/etc/resolv.conf') or die("$0: Error! Unable to open '/etc/resolv.conf' for output: $!\n"); +foreach my $line (@resolv) { + if ($line =~ /^search\s/) { + $foundSearch = 1; + if (length($search) > 0) { + print RESOLV $search; + } + } else { + print RESOLV $line; + } +} +if ($foundSearch == 0 && length($search) > 0) { + print RESOLV $search; +} + +close (RESOLV); + -- cgit v1.2.3 From a1d251d60a96aacc7e2523ea0bd8d599279dbdc8 Mon Sep 17 00:00:00 2001 From: Stig Thormodsrud Date: Tue, 18 Dec 2007 17:49:40 -0800 Subject: Fix new vrrp group show command. --- scripts/keepalived/VyattaKeepalived.pm | 9 +++++++-- scripts/keepalived/vyatta-show-vrrp.pl | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'scripts') diff --git a/scripts/keepalived/VyattaKeepalived.pm b/scripts/keepalived/VyattaKeepalived.pm index e0e84af3..13512b42 100755 --- a/scripts/keepalived/VyattaKeepalived.pm +++ b/scripts/keepalived/VyattaKeepalived.pm @@ -115,11 +115,16 @@ sub get_master_file { } sub get_state_files { - my $intf = shift; + my ($intf, $group) = @_; # todo: fix sorting for ethX > 9 my @state_files; - open(my $LS, "ls $state_dir |grep '^vrrpd_$intf.*\.state\$' | sort |"); + my $LS; + if ($group eq "all") { + open($LS,"ls $state_dir |grep '^vrrpd_$intf.*\.state\$' | sort |"); + } else { + open($LS,"ls $state_dir |grep '^vrrpd_$intf.\_$group\.state\$' | sort |"); + } @state_files = <$LS>; close($LS); foreach my $i (0 .. $#state_files) { diff --git a/scripts/keepalived/vyatta-show-vrrp.pl b/scripts/keepalived/vyatta-show-vrrp.pl index 934808f6..9228eeeb 100755 --- a/scripts/keepalived/vyatta-show-vrrp.pl +++ b/scripts/keepalived/vyatta-show-vrrp.pl @@ -147,17 +147,21 @@ sub vrrp_show { # # main # -my $intf = "eth"; -if ($#ARGV > -1) { +my $intf = "eth"; +my $group = "all"; +if ($#ARGV == 0) { $intf = $ARGV[0]; } +if ($#ARGV == 1) { + $group = $ARGV[1]; +} if (!VyattaKeepalived::is_running()) { print "VRRP isn't running\n"; exit 1; } -my @state_files = VyattaKeepalived::get_state_files($intf); +my @state_files = VyattaKeepalived::get_state_files($intf, $group); foreach my $state_file (@state_files) { vrrp_show($state_file); } -- cgit v1.2.3