Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > 7e7e2eaeccf2590336a647a8f3bf1db2 > files > 1

vpnc-0.4.0-2mdv2008.0.src.rpm

Index: vpnc-script
===================================================================
--- vpnc-script
+++ vpnc-script	2007-07-23 18:27:31.000000000 +0200
@@ -32,7 +32,10 @@
 esac
 
 DEFAULT_ROUTE_FILE=/var/run/vpnc/defaultroute
-RESOLV_CONF_BACKUP=/var/run/vpnc/resolv.conf-backup
+
+# Import Mandriva Linux configuration for resolv.conf update
+. /etc/sysconfig/network-scripts/network-functions
+DEVICE=$TUNDEV
 
 # some systems, eg. Darwin & FreeBSD, prune /var/run on boot
 if ! [ -d "/var/run/vpnc" ]; then
@@ -212,122 +215,25 @@
 fi
 
 write_resolvconf() {
-	grep '^#@VPNC_GENERATED@' /etc/resolv.conf > /dev/null 2>&1 || cp -- /etc/resolv.conf "$RESOLV_CONF_BACKUP"
-	NEW_RESOLVCONF="#@VPNC_GENERATED@ -- this file is generated by vpnc
-# and will be overwritten by vpnc
-# as long as the above mark is intact"
-
-	# Don't step on INTERNAL_IP4_DNS value, use a temporary variable
-	INTERNAL_IP4_DNS_TEMP="$INTERNAL_IP4_DNS"
-	exec 6< /etc/resolv.conf
-	while read LINE <&6 ; do
-		case "$LINE" in
-			nameserver*)
-				if [ -n "$INTERNAL_IP4_DNS_TEMP" ]; then
-					read ONE_NAMESERVER INTERNAL_IP4_DNS_TEMP <<-EOF
-	$INTERNAL_IP4_DNS_TEMP
-EOF
-					LINE="nameserver $ONE_NAMESERVER"
-				else
-					LINE=""
-				fi
-				;;
-			domain*|search*)
-				if [ -n "$CISCO_DEF_DOMAIN" ]; then
-					LINE="$LINE $CISCO_DEF_DOMAIN"
-					CISCO_DEF_DOMAIN=""
-				fi
-				;;
-		esac
-		NEW_RESOLVCONF="$NEW_RESOLVCONF
-$LINE"
-	done
-	exec 6<&-
-	
-	for i in $INTERNAL_IP4_DNS_TEMP ; do
-		NEW_RESOLVCONF="$NEW_RESOLVCONF
-nameserver $i"
-	done
+	local d
+	local ns
 	if [ -n "$CISCO_DEF_DOMAIN" ]; then
-		NEW_RESOLVCONF="$NEW_RESOLVCONF
-search $CISCO_DEF_DOMAIN"
+		d="search $CISCO_DEF_DOMAIN"
 	fi
-	echo "$NEW_RESOLVCONF" > /etc/resolv.conf
 
-	if [ "$OS" = "Darwin" ]; then
-		case "`uname -r`" in
-			# Skip for pre-10.4 systems
-			4.*|5.*|6.*|7.*)
-				;;
-			# 10.4 and later require use of scutil for DNS to work properly
-			*)
-				scutil >/dev/null 2>&1 <<-EOF
-					open
-					d.init
-					d.add ServerAddresses * $INTERNAL_IP4_DNS
-					set State:/Network/Service/$TUNDEV/DNS
-					get State:/Network/Global/IPv4
-					d.remove PrimaryService
-					d.remove PrimaryInterface
-					d.add Addresses * $INTERNAL_IP4_ADDRESS
-					d.add SubnetMasks * 255.255.255.255
-					d.add InterfaceName $TUNDEV
-					set State:/Network/Service/$TUNDEV/IPv4
-					close
-				EOF
-				if [ -n "$CISCO_DEF_DOMAIN" ]; then
-					scutil >/dev/null 2>&1 <<-EOF
-						open
-						get State:/Network/Service/$TUNDEV/DNS
-						d.add DomainName $CISCO_DEF_DOMAIN
-						d.add SearchDomains * $CISCO_DEF_DOMAIN
-						d.add SupplementalMatchDomains * $CISCO_DEF_DOMAIN
-						set State:/Network/Service/$TUNDEV/DNS
-						close
-					EOF
-				fi
-				# Uncomment the following if/fi pair to use multiple
-				# DNS matching when available.  When multiple DNS matching
-				# is present, anything reading the /etc/resolv.conf file
-				# directly will probably not work as intended.
-				#if [ -z "$CISCO_DEF_DOMAIN" ]; then
-					# Cannot use multiple DNS matching without a domain
-					scutil >/dev/null 2>&1 <<-EOF
-						open
-						get State:/Network/Service/$TUNDEV/IPv4
-						d.add OverridePrimary # 1
-						set State:/Network/Service/$TUNDEV/IPv4
-						close
-					EOF
-				#fi
-				;;
-		esac
+	if [ -n "$INTERNAL_IP4_DNS" ]; then
+		for nameserver in "$INTERNAL_IP4_DNS"; do
+			ns="$ns"$'\n'"nameserver $nameserver"
+		done
 	fi
-}
 
-reset_resolvconf() {
-	if [ ! -e "$RESOLV_CONF_BACKUP" ]; then
-		return
+	if [ -n "$d" -o -n "$ns" ]; then
+		change_resolv_conf "$d" "$ns"
 	fi
-	grep '^#@VPNC_GENERATED@' /etc/resolv.conf > /dev/null 2>&1 && cat "$RESOLV_CONF_BACKUP" > /etc/resolv.conf
-	rm -f -- "$RESOLV_CONF_BACKUP"
+}
 
-	if [ "$OS" = "Darwin" ]; then
-		case "`uname -r`" in
-			# Skip for pre-10.4 systems
-			4.*|5.*|6.*|7.*)
-				;;
-			# 10.4 and later require use of scutil for DNS to work properly
-			*)
-				scutil >/dev/null 2>&1 <<-EOF
-					open
-					remove State:/Network/Service/$TUNDEV/IPv4
-					remove State:/Network/Service/$TUNDEV/DNS
-					close
-				EOF
-				;;
-		esac
-	fi
+reset_resolvconf() {
+	clear_resolv_conf
 }
 
 do_connect() {