Project

General

Profile

« Previous | Next » 

Revision 3e662cb0

Added by Ermal LUÇI about 13 years ago

Get rid of carpdev, it will never be

View differences:

etc/inc/interfaces.inc
100 100

  
101 101
	switch ($vip['mode']) {
102 102
	case "carp":
103
	case "carpdev":
104 103
		$realif = "{$vip['interface']}_vip{$vip['vhid']}";
105 104
		if (!does_interface_exist($realif)) {
106 105
			return false;
......
1049 1048
			pfSense_interface_deladdress($vipif, $vip['subnet']);
1050 1049
		break;
1051 1050
	case "carp":
1052
	case "carpdev-dhcp":
1053 1051
		$vipif = "{$vip['interface']}_vip{$vip['vhid']}";
1054 1052
		if (does_interface_exist($vipif)) 
1055 1053
			pfSense_interface_destroy($vipif);
......
1091 1089
			}
1092 1090
		}
1093 1091
		break;
1094
	case "carpdev-dhcp":
1095
		/* 
1096
		 * NB: When carpdev gets enabled it would be better to be handled as all
1097
		 *	   other interfaces! 
1098
		 */
1099 1092
	case "dhcp":
1100 1093
		$pid = find_dhclient_process($realif);
1101 1094
		if($pid)
......
1945 1938
					$carp_setuped = true;
1946 1939
				interface_carp_configure($vip);
1947 1940
				break;
1948
			case "carpdev-dhcp":
1949
				if ($interface <> "" && $vip['interface'] <> $interface)
1950
					continue;
1951
				interface_carpdev_configure($vip);
1952
				break;
1953 1941
			}
1954 1942
		}
1955 1943
		if ($carp_setuped == true)
......
1985 1973
					sleep(1);
1986 1974
					interface_carp_configure($vip);
1987 1975
					break;
1988
				case "carpdev-dhcp":
1989
					interface_vip_bring_down($vip);
1990
					sleep(1);
1991
					interface_carpdev_configure($vip);
1992
					break;
1993 1976
				case "ipalias":
1994 1977
					interface_vip_bring_down($vip);
1995 1978
					sleep(1);
......
2079 2062
	return $vipif;
2080 2063
}
2081 2064

  
2082
function interface_carpdev_configure(&$vip) {
2083
	global $g;
2084

  
2085
	if ($vip['mode'] != "carpdev-dhcp")
2086
		return;
2087

  
2088
	if (empty($vip['interface']))
2089
		return;
2090

  
2091
	$realif = get_real_interface($vip['interface']);
2092
	interfaces_bring_up($realif);
2093

  
2094
	/*
2095
	 * ensure the interface containing the VIP really exists
2096
	 * prevents a panic if the interface is missing or invalid
2097
	 */
2098
	if (!does_interface_exist($realif)) {
2099
		file_notice("CARP", sprintf(gettext("Interface specified for the virtual IP address %s does not exist. Skipping this VIP."), $vip['subnet']), "Firewall: Virtual IP", "");
2100
		return;
2101
	}
2102

  
2103
	$vipif = "{$vip['interface']}_vip{$vip['vhid']}";
2104
	if (does_interface_exist($vipif)) {
2105
		interface_bring_down($vipif);
2106
	} else {
2107
		$carpdevif = exec("/sbin/ifconfig carp create");
2108
		mwexec("/sbin/ifconfig {$carpdevif} name {$vipif}");
2109
		pfSense_ngctl_name("{$carpdevif}:", $vipif);
2110
	}
2111

  
2112
	$vip_password = $vip['password'];
2113
	$vip_password = str_replace(" ", "", $vip_password);
2114
	if ($vip['password'] != "")
2115
		$password = " pass \"" . $vip_password . "\"";
2116

  
2117

  
2118
	mwexec("/sbin/ifconfig {$vipif} carpdev {$realif} vhid {$vip['vhid']} advskew {$vip['advskew']} advbase {$vip['advbase']} {$password}");
2119
	interfaces_bring_up($vipif);
2120

  
2121
	/*
2122
	 * XXX: BIG HACK but carpdev needs ip services active
2123
	 *      before even starting something as dhclient.
2124
	 *      I do not know if this is a feature or a bug
2125
	 *      but better than track it make it work ;) .
2126
	 */
2127
	//$fakeiptouse = "10.254.254." . ($carp_instances_counter+1);
2128
	//$cmdchain->add("CarpDEV hack", "/sbin/ifconfig {$carpint} inet {$fakeiptouse}", false);
2129

  
2130
	/* generate dhclient_wan.conf */
2131
	$fd = fopen("{$g['varetc_path']}/dhclient_{$vipif}.conf", "w");
2132
	if ($fd) {
2133
		$dhclientconf = "";
2134

  
2135
		$dhclientconf .= <<<EOD
2136
interface "{$vipif}" {
2137
timeout 60;
2138
retry 15;
2139
select-timeout 0;
2140
initial-interval 1;
2141
script "/sbin/dhclient-script";
2142
}
2143

  
2144
EOD;
2145

  
2146
		fwrite($fd, $dhclientconf);
2147
		fclose($fd);
2148

  
2149
		/* fire up dhclient */
2150
		mwexec("/sbin/dhclient -c {$g['varetc_path']}/dhclient_{$vipif}.conf {$vipif} >{$g['tmp_path']}/{$vipif}_output 2>{$g['tmp_path']}/{$vipif}_error_output", false);
2151
	} else {
2152
		log_error(sprintf(gettext("Error: cannot open dhclient_%s.conf in interface_carpdev_configure() for writing.%s"), $vipif, "\n"));
2153
		mwexec("/sbin/dhclient -b {$vipif}");
2154
	}
2155

  
2156
	return $vipif;
2157
}
2158

  
2159 2065
function interface_wireless_clone($realif, $wlcfg) {
2160 2066
	global $config, $g;
2161 2067
	/*   Check to see if interface has been cloned as of yet.  
......
2872 2778
	unset($interface_snv6_arr_cache[$realif]);
2873 2779

  
2874 2780
	switch ($wancfg['ipaddr']) {
2875
		case 'carpdev-dhcp':
2876
			interface_carpdev_dhcp_configure($interface);
2877
			break;
2878 2781
		case 'dhcp':
2879 2782
			interface_dhcp_configure($interface);
2880 2783
			break;
......
2983 2886
	return 0;
2984 2887
}
2985 2888

  
2986
function interface_carpdev_dhcp_configure($interface = "wan") {
2987
	global $config, $g;
2988

  
2989
	$wancfg = $config['interfaces'][$interface];
2990
	$wanif = $wancfg['if'];
2991
	/* bring wan interface up before starting dhclient */
2992
	if($wanif)
2993
		interfaces_bring_up($wanif);
2994
	else 
2995
		log_error(gettext("Could not bring wanif up in interface_carpdev_dhcp_configure()"));
2996

  
2997
	return 0;
2998
}
2999

  
3000 2889
function interface_track6_configure($interface = "lan") {
3001 2890
	global $config, $g;
3002 2891
	$iflist = get_configured_interface_with_descr(false, true);
......
3608 3497

  
3609 3498
	if (stristr($interface, "_vip")) {
3610 3499
                foreach ($config['virtualip']['vip'] as $counter => $vip) {
3611
                        if ($vip['mode'] == "carpdev-dhcp" || $vip['mode'] == "carp")  {
3500
                        if ($vip['mode'] == "carp")  {
3612 3501
                                if ($interface == "{$vip['interface']}_vip{$vip['vhid']}")
3613 3502
                                        return $vip['interface'];
3614 3503
                        }
......
3668 3557
		} else if (stristr($interface, "_vip")) {
3669 3558
			if (is_array($config['virtualip']['vip'])) {
3670 3559
				foreach ($config['virtualip']['vip'] as $counter => $vip) {
3671
					if ($vip['mode'] == "carpdev-dhcp" || $vip['mode'] == "carp")  {
3560
					if ($vip['mode'] == "carp")  {
3672 3561
						if ($interface == "{$vip['interface']}_vip{$vip['vhid']}")
3673 3562
							return "{$vip['subnet']} - {$vip['descr']}";
3674 3563
					}
......
3840 3729
		*/
3841 3730

  
3842 3731
		switch ($cfg['ipaddr']) {
3843
			case "carpdev-dhcp":
3844
				$viparr = &$config['virtualip']['vip'];
3845
				if(is_array($viparr))
3846
				foreach ($viparr as $counter => $vip) {
3847
					if ($vip['mode'] == "carpdev-dhcp") {
3848
						if($vip['interface'] == $interface) {
3849
							$wanif = "carp{$counter}";
3850
							break;
3851
						}
3852
					}
3853
				}
3854
				break;
3855 3732
			case "pppoe": 
3856 3733
			case "pptp": 
3857 3734
			case "l2tp": 
......
3977 3854
	global $config;
3978 3855
	if (is_array($config['virtualip']['vip'])) {
3979 3856
		foreach ($config['virtualip']['vip'] as $vip) {
3980
			if ($vip['mode'] == "carp" || $vip['mode'] == "carpdev") {
3857
			if ($vip['mode'] == "carp") {
3981 3858
				if(is_ipaddrv4($ip)) {
3982 3859
					$carp_ip = get_interface_ip($vip['interface']);
3983 3860
				}
......
4044 3921
		$first = 0;
4045 3922
		$carp_int = array();
4046 3923
                foreach ($config['virtualip']['vip'] as $vip) {
4047
                        if ($vip['mode'] == "carp" || $vip['mode'] == "carpdev") {
3924
                        if ($vip['mode'] == "carp") {
4048 3925
                                $carp_ip = $vip['subnet'];
4049 3926
                                $carp_sn = $vip['subnet_bits'];
4050 3927
                                $carp_nw = gen_subnet($carp_ip, $carp_sn);
......
4436 4313
	foreach($config['interfaces'] as $ifdescr => $ifname) {
4437 4314
		switch ($ifname['ipaddr']) {
4438 4315
			case "dhcp":
4439
			case "carpdev-dhcp":
4440 4316
			case "ppp";
4441 4317
			case "pppoe":
4442 4318
			case "pptp":
......
4462 4338
		$ifname = &$config['interfaces'][$friendly];
4463 4339
		switch ($ifname['ipaddr']) {
4464 4340
			case "dhcp":
4465
			case "carpdev-dhcp":
4466 4341
			case "pppoe":
4467 4342
			case "pptp":
4468 4343
			case "l2tp":

Also available in: Unified diff