Project

General

Profile

« Previous | Next » 

Revision 93423f89

Added by Brad Davis 6 months ago

Properly quote these variables and avoid using test -o

View differences:

src/usr/local/sbin/pfSense-dhclient-script
23 23
SED=/usr/bin/sed
24 24
ARP=/usr/sbin/arp
25 25
IFCONFIG=/sbin/ifconfig
26
PFCTL=/sbin/pfctl
27 26

  
28 27
LOCALHOST=127.0.0.1
29 28

  
......
43 42
	   [ "$current_hostname" = "$old_host_name" -a \
44 43
	     "$new_hostname" != "$old_host_name" ]; then
45 44
		$LOGGER "New Hostname ($interface): $new_host_name"
46
		$HOSTNAME $new_host_name
45
		$HOSTNAME "$new_host_name"
47 46
	fi
48 47
}
49 48

  
50 49
arp_flush() {
51
	$ARP -an -i $interface | \
50
	$ARP -an -i "$interface" | \
52 51
		$SED -n -e 's/^.*(\(.*\)) at .*$/arp -d \1/p' | \
53 52
		/bin/sh >/dev/null 2>&1
54 53
}
55 54

  
56 55
delete_old_address() {
57
	/bin/rm -f /var/db/${interface}_ip
58
	$IFCONFIG $interface inet -alias $old_ip_address $medium
56
	/bin/rm -f "/var/db/${interface}_ip"
57
	eval $IFCONFIG "$interface" inet -alias "$old_ip_address" "$medium"
59 58
}
60 59

  
61 60
add_new_address() {
......
64 63

  
65 64
	$LOGGER "ifconfig $interface inet $new_ip_address netmask $new_subnet_mask broadcast $new_broadcast_address $medium"
66 65

  
67
	$IFCONFIG $interface \
68
		inet $new_ip_address \
69
		netmask $new_subnet_mask \
70
		broadcast $new_broadcast_address \
71
		$medium
66
	eval $IFCONFIG "$interface" \
67
		inet "$new_ip_address" \
68
		netmask "$new_subnet_mask" \
69
		broadcast "$new_broadcast_address" \
70
		"$medium"
72 71

  
73 72
	$LOGGER "New IP Address ($interface): $new_ip_address"
74 73
	$LOGGER "New Subnet Mask ($interface): $new_subnet_mask"
......
78 77

  
79 78
	# This is necessary otherwise dpinger will try to ping all 1s address
80 79
	if [ -n "$new_routers" ] && [ "$new_routers" != "255.255.255.255" ]; then
81
		echo $new_routers > /tmp/${interface}_router
82
		/bin/rm -f /tmp/${interface}_router.last
80
		echo "$new_routers" > "/tmp/${interface}_router"
81
		/bin/rm -f "/tmp/${interface}_router.last"
83 82
	fi
84
	echo $new_ip_address > /var/db/${interface}_ip
83
	echo "$new_ip_address" > "/var/db/${interface}_ip"
85 84
}
86 85

  
87 86
delete_old_alias() {
88 87
	if [ -n "$alias_ip_address" ]; then
89
		$IFCONFIG $interface inet -alias $alias_ip_address > /dev/null 2>&1
90
		$ROUTE delete $alias_ip_address $LOCALHOST > /dev/null 2>&1
88
		$IFCONFIG "$interface" inet -alias "$alias_ip_address" > /dev/null 2>&1
89
		$ROUTE delete "$alias_ip_address" "$LOCALHOST" > /dev/null 2>&1
91 90
	fi
92 91
}
93 92

  
94 93
add_new_alias() {
95 94
	if [ -n "$alias_ip_address" ]; then
96
		$IFCONFIG $interface inet alias $alias_ip_address netmask \
97
		    $alias_subnet_mask
98
		$ROUTE add $alias_ip_address $LOCALHOST
95
		$IFCONFIG "$interface" inet alias "$alias_ip_address" netmask \
96
		    "$alias_subnet_mask"
97
		$ROUTE add "$alias_ip_address" "$LOCALHOST"
99 98
	fi
100 99
}
101 100

  
102 101
fill_classless_routes() {
103 102
	set $1
104 103
	while [ $# -ge 5 ]; do
105
		if [ $1 -eq 0 ]; then
104
		if [ "$1" -eq 0 ]; then
106 105
			route="default"
107
		elif [ $1 -le 8 ]; then
106
		elif [ "$1" -le 8 ]; then
108 107
			route="$2.0.0.0/$1"
109 108
			shift
110
		elif [ $1 -le 16 ]; then
109
		elif [ "$1" -le 16 ]; then
111 110
			route="$2.$3.0.0/$1"
112 111
			shift; shift
113
		elif [ $1 -le 24 ]; then
112
		elif [ "$1" -le 24 ]; then
114 113
			route="$2.$3.$4.0/$1"
115 114
			shift; shift; shift
116 115
		else
......
142 141
		for router in $old_routers; do
143 142
			#  delete local route to the router ip address.
144 143
			#  cleans up our route to a gateway possibly outside of the assigned subnet
145
			$ROUTE delete -host $router -iface $interface
144
			$ROUTE delete -host "$router" -iface "$interface"
146 145

  
147
			$ROUTE delete default $router >/dev/null 2>&1
146
			$ROUTE delete default "$router" >/dev/null 2>&1
148 147
		done
149 148
		if [ -f "/tmp/${interface}_router" ]; then
150
			/bin/mv /tmp/${interface}_router /tmp/${interface}_router.last
149
			/bin/mv "/tmp/${interface}_router" "/tmp/${interface}_router.last"
151 150
		fi
152 151
	fi
153 152

  
......
158 157
			shift; shift
159 158
		done
160 159
		if [ -f "/tmp/${interface}_router" ]; then
161
			/bin/mv /tmp/${interface}_router /tmp/${interface}_router.last
160
			/bin/mv "/tmp/${interface}_router" "/tmp/${interface}_router.last"
162 161
		fi
163 162
	fi
164 163

  
......
194 193
	ADDED_ROUTE=no
195 194
	# Only allow the default route to be overridden if it's on our own interface
196 195
	if [ -f "/tmp/${interface}_defaultgw" ]; then
197
		OLD_ROUTER=$(cat /tmp/${interface}_defaultgw)
198
		$ROUTE delete default ${OLD_ROUTER}
196
		OLD_ROUTER=$(cat "/tmp/${interface}_defaultgw")
197
		$ROUTE delete default "${OLD_ROUTER}"
199 198
		for router in $new_routers; do
200
			if [ "$new_ip_address" = "$router" -o "$router" = "255.255.255.255" ]; then
201
				$ROUTE add default -iface $interface
202
				echo $ROUTE add default -iface $interface | $LOGGER
199
			if [ "$new_ip_address" = "$router" ] || [ "$router" = "255.255.255.255" ]; then
200
				$ROUTE add default -iface "$interface"
201
				echo $ROUTE add default -iface "$interface" | $LOGGER
203 202
				# NOTE: Do not activate this for all ones address since pf(4) will try to forward packets to it.
204 203
				if [ "$new_ip_address" = "$router" ]; then
205
					echo $router > /tmp/${interface}_router
206
					/bin/rm -f /tmp/${interface}_router.last
204
					echo "$router" > "/tmp/${interface}_router"
205
					/bin/rm -f "/tmp/${interface}_router.last"
207 206
				fi
208 207
			else
209 208
				#  add local route to the router ip address.
210 209
				#  this will not cause any harm if the router is within the subnet
211 210
				#  but it will prevent route troubles if the router is outside of the subnet
212 211
				#  this is useful for captive subnets or similar gateway out-of-subnet situations
213
				$ROUTE add -host $router -iface $interface
214
				echo $ROUTE add -host $router -iface $interface | $LOGGER
212
				$ROUTE add -host "$router" -iface "$interface"
213
				echo $ROUTE add -host "$router" -iface "$interface" | $LOGGER
215 214

  
216
				$ROUTE add default $router
217
				echo $ROUTE add default $router | $LOGGER
218
				echo $router > /tmp/${interface}_router
219
				/bin/rm -f /tmp/${interface}_router.last
215
				$ROUTE add default "$router"
216
				echo $ROUTE add default "$router" | $LOGGER
217
				echo "$router" > "/tmp/${interface}_router"
218
				/bin/rm -f "/tmp/${interface}_router.last"
220 219
			fi
221 220
			ADDED_ROUTE=yes
222 221
			# 2nd and subsequent default routers error out, so explicitly
......
229 228
		$LOGGER "New Static Routes ($interface): $new_static_routes"
230 229
		set $new_static_routes
231 230
		while [ $# -gt 1 ]; do
232
			$ROUTE add $1 $2
231
			$ROUTE add "$1" "$2"
233 232
			if [ "$ADDED_ROUTE" = "no" ]; then
234
				echo $2 > /tmp/${interface}_router
235
				/bin/rm -f /tmp/${interface}_router.last
233
				echo "$2" > "/tmp/${interface}_router"
234
				/bin/rm -f "/tmp/${interface}_router.last"
236 235
			fi
237 236
			shift; shift
238 237
		done
......
243 242
	$LOGGER "Creating resolv.conf"
244 243
	if [ -f "/var/etc/nameserver_$interface" ]; then
245 244
		# Remove old entries
246
		for nameserver in `cat /var/etc/nameserver_$interface`; do
247
			$ROUTE delete $nameserver >/dev/null 2>&1
245
		for nameserver in `cat "/var/etc/nameserver_$interface"`; do
246
			$ROUTE delete "$nameserver" >/dev/null 2>&1
248 247
		done
249 248
	fi
250 249
	if [ -n "$new_domain_name_servers" ]; then
251
		/bin/rm -f /var/etc/nameserver_$interface
250
		/bin/rm -f "/var/etc/nameserver_$interface"
252 251
		ALLOWOVERRIDE=$(/usr/local/sbin/read_xml_tag.sh boolean system/dnsallowoverride)
253 252
		for nameserver in $new_domain_name_servers; do
254 253
			# Add a route to the nameserver out the correct interface
255 254
			# so that multiple wans work correctly with multiple dns
256 255
			# also backup the nameserver for later route removal
257 256
			if [ "$ALLOWOVERRIDE" = "true" ]; then
258
				echo $nameserver >>/var/etc/nameserver_$interface
259
				$ROUTE add $nameserver -iface $interface
257
				echo "$nameserver" >> "/var/etc/nameserver_$interface"
258
				$ROUTE add "$nameserver" -iface "$interface"
260 259
			fi
261 260
		done
262
		echo $new_domain_name >/var/etc/searchdomain_$interface
261
		echo "$new_domain_name" > "/var/etc/searchdomain_$interface"
263 262
	fi
264 263

  
265 264
	return 0
......
286 285
	fi
287 286
fi
288 287

  
289
$LOGGER $reason
288
$LOGGER "$reason"
290 289
case $reason in
291 290
MEDIUM)
292 291
	eval "$IFCONFIG $interface $medium"
......
297 296
	delete_old_alias
298 297
	eval "$IFCONFIG $interface up"
299 298
	if [ -f "/tmp/${interface}_router" ]; then
300
		/bin/mv /tmp/${interface}_router /tmp/${interface}_router.last
299
		/bin/mv "/tmp/${interface}_router" "/tmp/${interface}_router.last"
301 300
	fi
302 301
	;;
303 302

  
......
367 366
			exit_status=0
368 367
		fi
369 368
	fi
370
	if [ $exit_status -ne 0 ]; then
371
		$IFCONFIG $interface inet -alias $new_ip_address $medium
369
	if [ "$exit_status" -ne 0 ]; then
370
		eval "$IFCONFIG" "$interface" inet -alias "$new_ip_address" "$medium"
372 371
		delete_old_routes
373 372
	fi
374 373
	;;

Also available in: Unified diff