17
17
18
18
IPTABLES=${IPTABLES:-/ sbin/ iptables}
19
19
SLEEP_INTERVAL=${SLEEP_INTERVAL:- 10}
20
+ WAIT_INTERVAL=${WAIT_INTERVAL:- 60}
20
21
CONFIG_DIR=${CONFIG_DIR:-/ cfg}
21
22
if [[ -z ${UUID:- } ]]; then
22
23
UUID=$( date " +%s" )
@@ -37,7 +38,7 @@ update_nat() {
37
38
# Check if the rule already exists if adding.
38
39
if [[ ${mode} = ' A' ]]; then
39
40
if ${IPTABLES} -t nat -C POSTROUTING -d ${subnet} \
40
- -m comment --comment " ${comment} " -j MASQUERADE \
41
+ -m comment --comment " ${comment} " -j MASQUERADE -w ${WAIT_INTERVAL} \
41
42
2> /dev/null; then
42
43
log " NAT rule ${comment} is installed"
43
44
return
@@ -49,7 +50,7 @@ update_nat() {
49
50
-${mode} POSTROUTING \
50
51
-d ${subnet} \
51
52
-m comment --comment " ${comment} " \
52
- -j MASQUERADE
53
+ -j MASQUERADE -w ${WAIT_INTERVAL}
53
54
54
55
case ${mode} in
55
56
' A' ) log " NAT rule ${comment} added" ;;
@@ -73,16 +74,28 @@ main() {
73
74
# Remove the old NAT rules if config file has changed.
74
75
if [[ " ${old_nat_rules} " != " ${nat_rules} " ]]; then
75
76
log " Configuration change detected"
76
- for subnet in ${old_nat_rules} ; do
77
- update_nat D ${subnet} " ${COMMENT_PREFIX} : ${subnet} "
77
+ n=0
78
+ until [ " $n " -ge 5 ]
79
+ do
80
+ (for subnet in ${old_nat_rules} ; do
81
+ update_nat D ${subnet} " ${COMMENT_PREFIX} : ${subnet} "
82
+ done) && break
83
+ n=$(( n+ 1 ))
84
+ sleep 5
78
85
done
79
86
fi
80
87
81
88
if [[ -z " ${nat_rules} " ]]; then
82
89
log " No NAT rules configured"
83
90
else
84
- for subnet in ${old_nat_rules} ; do
85
- update_nat A ${subnet} " ${COMMENT_PREFIX} : ${subnet} "
91
+ n=0
92
+ until [ " $n " -ge 5 ]
93
+ do
94
+ (for subnet in ${old_nat_rules} ; do
95
+ update_nat A ${subnet} " ${COMMENT_PREFIX} : ${subnet} "
96
+ done) && break
97
+ n=$(( n+ 1 ))
98
+ sleep 5
86
99
done
87
100
fi
88
101
0 commit comments