aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-02-02 15:15:37 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-02-02 15:15:37 +0200
commit0225fb12aa45a259f728951693d5b101c010c3fd (patch)
tree1e8990874b8370cdb8ee1d2f3f29f4b4c8b31004
parent814257a140f499653d9cf3dbc64be9fac53a09fe (diff)
downloaddnstools-0225fb12aa45a259f728951693d5b101c010c3fd.tar.gz
dnstools-0225fb12aa45a259f728951693d5b101c010c3fd.tar.bz2
Bugfixes
-rwxr-xr-xdgd/rc.uplink88
-rwxr-xr-xvhostcname/vhostcname13
2 files changed, 66 insertions, 35 deletions
diff --git a/dgd/rc.uplink b/dgd/rc.uplink
index 239d85f..55b3242 100755
--- a/dgd/rc.uplink
+++ b/dgd/rc.uplink
@@ -26,6 +26,10 @@ END {
26 echo "$n $1" >> $rt_tables 26 echo "$n $1" >> $rt_tables
27 fi 27 fi
28 ip rule add from $3 table $1 28 ip rule add from $3 table $1
29 ip rule add from $5 table $1
30 if [ -n "$6" ]; then
31 ip rule add from $6 table $1
32 fi
29 ip route add default via $4 table $1 33 ip route add default via $4 table $1
30 if [ -n "$7" ]; then 34 if [ -n "$7" ]; then
31 ip route add $7 dev $2 src $3 table $1 35 ip route add $7 dev $2 src $3 table $1
@@ -40,6 +44,7 @@ gw=$4
40ns=$5 $6 44ns=$5 $6
41net=$7 45net=$7
42EOF 46EOF
47 /etc/rc.d/rc.dgd reload
43} 48}
44 49
45readlinkinfo() { 50readlinkinfo() {
@@ -51,54 +56,79 @@ readlinkinfo() {
51linkcleanup() { 56linkcleanup() {
52 test -f "$linkdir/$1" && rm "$linkdir/$1" 57 test -f "$linkdir/$1" && rm "$linkdir/$1"
53 ip route flush table $1 58 ip route flush table $1
59 /etc/rc.d/rc.dgd reload
54} 60}
55 61
56#linkup NAME 62#linkup NAME [ IF IP GW NS1 NS2 [NET] ]
57linkup() { 63linkup() {
58 local name=$1 link_if link_ip link_gw link_ns link_net 64 local name=$1 link_if link_ip link_gw link_ns link_net
59 shift 65 if [ $# -eq 1 ]; then
60 if [ -f "$linkdir/$name" ]; then 66 if [ -f "$linkdir/$name" ]; then
61 readlinkinfo "$linkdir/$name" 67 readlinkinfo "$linkdir/$name"
62 if [ -z "$link_gw" ]; then 68 if [ -z "$link_gw" ]; then
63 echo >&2 "$0: $linkdir/$name: gw not set" 69 echo >&2 "$0: $linkdir/$name: gw not set"
70 exit 1
71 fi
72 else
73 echo >&2 "$0: $linkdir/$name: no such file"
64 exit 1 74 exit 1
65 fi 75 fi
66 ip route add default via $link_gw 76 elif [ $# -lt 6 ]; then
67 cat > $active <<EOT 77 echo >&2 "$0: bad number of arguments to linkup"
78 exit 1
79 else
80 link_if=$2
81 link_ip=$3
82 link_gw=$4
83 link_ns="$5 $6"
84 link_net=$7
85 fi
86 ip route add default via $link_gw
87 cat > $active <<EOT
68[core] 88[core]
69 active = $name 89 active = $name
70EOT 90EOT
71 echo "$link_ns" | awk ' 91 echo "$link_ns" | awk '
72BEGIN { print "forwarders {" } 92BEGIN { print "forwarders {" }
73{ for (i = 1; i <= NF; i++) print " " $(i) ";"; } 93{ for (i = 1; i <= NF; i++) print " " $(i) ";"; }
74END { print "};" }' > $forwarders 94END { print "};" }' > $forwarders
75 rndc reload 95 rndc reload || /etc/rc.d/rc.bind restart
76 else 96 export link_if
77 echo >&2 "$0: $linkdir/$name: no such file" 97 /etc/rc.d/rc.iptables -f nat start
78 exit 1
79 fi
80} 98}
81 99
82#linkdown NAME 100#linkdown NAME [ IF IP GW NS1 NS2 [NET] ]
83linkdown() { 101linkdown() {
84 local name=$1 link_if link_ip link_gw link_ns link_net link_active 102 local name=$1 link_if link_ip link_gw link_ns link_net link_active
85 shift 103 if [ $# -eq 1 ]; then
86 if [ -f "$linkdir/$name" ]; then 104 if [ -f "$linkdir/$name" ]; then
87 readlinkinfo "$linkdir/$name" 105 readlinkinfo "$linkdir/$name"
88 if [ -z "$link_gw" ]; then 106 if [ -z "$link_gw" ]; then
89 echo >&2 "$0: $linkdir/$name: gw not set" 107 echo >&2 "$0: $linkdir/$name: gw not set"
90 exit 1 108 exit 1
91 fi
92 ip route del default via $link_gw
93 if [ -r "$active" ]; then
94 readlinkinfo $active
95 if [ "$link_name" = "$name" ]; then
96 rm $active
97 fi 109 fi
110 else
111 echo >&2 "$0: $linkdir/$name: no such file"
112 exit 1
98 fi 113 fi
114 elif [ $# -lt 6 ]; then
115 echo >&2 "$0: bad number of arguments to linkdown"
116 exit 1
99 else 117 else
100 echo >&2 "$0: $linkdir/$name: no such file" 118 link_if=$2
101 exit 1 119 link_ip=$3
120 link_gw=$4
121 link_ns="$5 $6"
122 link_net=$7
123 fi
124 export link_if
125 /etc/rc.d/rc.iptables -f nat stop
126 ip route del default via $link_gw
127 if [ -r "$active" ]; then
128 readlinkinfo $active
129 if [ "$link_name" = "$name" ]; then
130 rm $active
131 fi
102 fi 132 fi
103} 133}
104 134
diff --git a/vhostcname/vhostcname b/vhostcname/vhostcname
index 5981871..91a2c8d 100755
--- a/vhostcname/vhostcname
+++ b/vhostcname/vhostcname
@@ -88,7 +88,7 @@ sub parse_section {
88 $input = $2; 88 $input = $2;
89 $quote = undef; 89 $quote = undef;
90 } else { 90 } else {
91 die "unparsable input $input"; 91 abend(EX_CONFIG, "unparsable input $input");
92 } 92 }
93 } 93 }
94 94
@@ -527,9 +527,9 @@ sub com_status {
527 527
528my %comtab = ( 528my %comtab = (
529 start => \&com_start, 529 start => \&com_start,
530 restart => \&com_reload, 530 'force-restart' => 'start',
531 'force-restart' => \&com_start,
532 reload => \&com_reload, 531 reload => \&com_reload,
532 restart => 'reload',
533 stop => \&com_stop, 533 stop => \&com_stop,
534 status => \&com_status 534 status => \&com_status
535); 535);
@@ -537,11 +537,12 @@ my %comtab = (
537sub getcom { 537sub getcom {
538 my $com = shift; 538 my $com = shift;
539 539
540 while (defined($comtab{$com}) and ref($comtab{$com}) ne 'CODE') { 540 while (exists($comtab{$com}) and ref($comtab{$com}) ne 'CODE') {
541 die "internal error: unresolved command alias"
542 unless exists $comtab{$com};
541 $com = $comtab{$com}; 543 $com = $comtab{$com};
542 } 544 }
543 die "internal error: unresolved command alias" unless defined $com; 545 return $comtab{$com} if exists $comtab{$com};
544 return $comtab{$com} if defined $comtab{$com};
545 546
546 my @v = map { /^$com/ ? $_ : () } sort keys %comtab; 547 my @v = map { /^$com/ ? $_ : () } sort keys %comtab;
547 if ($#v == -1) { 548 if ($#v == -1) {

Return to:

Send suggestions and report system problems to the System administrator.