diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-02-02 15:15:37 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-02-02 15:15:37 +0200 |
commit | 0225fb12aa45a259f728951693d5b101c010c3fd (patch) | |
tree | 1e8990874b8370cdb8ee1d2f3f29f4b4c8b31004 | |
parent | 814257a140f499653d9cf3dbc64be9fac53a09fe (diff) | |
download | dnstools-0225fb12aa45a259f728951693d5b101c010c3fd.tar.gz dnstools-0225fb12aa45a259f728951693d5b101c010c3fd.tar.bz2 |
Bugfixes
-rwxr-xr-x | dgd/rc.uplink | 88 | ||||
-rwxr-xr-x | vhostcname/vhostcname | 13 |
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 | |||
40 | ns=$5 $6 | 44 | ns=$5 $6 |
41 | net=$7 | 45 | net=$7 |
42 | EOF | 46 | EOF |
47 | /etc/rc.d/rc.dgd reload | ||
43 | } | 48 | } |
44 | 49 | ||
45 | readlinkinfo() { | 50 | readlinkinfo() { |
@@ -51,54 +56,79 @@ readlinkinfo() { | |||
51 | linkcleanup() { | 56 | linkcleanup() { |
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] ] |
57 | linkup() { | 63 | linkup() { |
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 |
70 | EOT | 90 | EOT |
71 | echo "$link_ns" | awk ' | 91 | echo "$link_ns" | awk ' |
72 | BEGIN { print "forwarders {" } | 92 | BEGIN { print "forwarders {" } |
73 | { for (i = 1; i <= NF; i++) print " " $(i) ";"; } | 93 | { for (i = 1; i <= NF; i++) print " " $(i) ";"; } |
74 | END { print "};" }' > $forwarders | 94 | END { 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] ] |
83 | linkdown() { | 101 | linkdown() { |
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 | ||
528 | my %comtab = ( | 528 | my %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 = ( | |||
537 | sub getcom { | 537 | sub 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) { |