CLOUDSTACK-2620 [Multiple_IP_Ranges] Guest vm's nameserver is not set to VRs guest IP address in case of multiple subnets

Signed-off-by: Abhinandan Prateek <aprateek@apache.org>
This commit is contained in:
Bharat Kumar 2013-06-03 16:54:28 +05:30 committed by Abhinandan Prateek
parent e0f0e9d016
commit 0a69b82899
3 changed files with 34 additions and 21 deletions

View File

@ -20,11 +20,14 @@ public class DnsmasqTO {
String routerIp;
String gateway;
String netmask;
String startIpOfSubnet;
public DnsmasqTO(String routerIp, String gateway, String netmask) {
public DnsmasqTO(String routerIp, String gateway, String netmask, String StartIpOfSubnet) {
this.routerIp = routerIp;
this.startIpOfSubnet = StartIpOfSubnet;
this.gateway = gateway;
this.netmask =netmask;
}
public void setRouterIp(String routerIp){
@ -39,6 +42,10 @@ public class DnsmasqTO {
this.netmask = netmask ;
}
public void setStartIpOfSubnet( String ipOfSubNet) {
startIpOfSubnet = ipOfSubNet;
}
public String getRouterIp() {
return routerIp;
}
@ -50,4 +57,8 @@ public class DnsmasqTO {
public String getNetmask() {
return netmask;
}
public String getStartIpOfSubnet() {
return startIpOfSubnet;
}
}

View File

@ -71,7 +71,7 @@ import java.util.List;
"conf-dir=/etc/dnsmasq.d\n",
"dhcp-option=tag:net1,3,ipaddress\n",
"dhcp-option=tag:net1,1,netmask\n",
"dhcp-option=6,10.147.28.149,8.8.8.8\n",
"dhcp-option=6,router_ip,external_dns\n",
"dhcp-optsfile=/etc/dhcpopts.txt\n",
@ -85,11 +85,21 @@ import java.util.List;
String netmask="";
String domain= dnsMasqconfigcmd.getDomain();
String dnsServers="";
String dns_external="";
if (dnsMasqconfigcmd.getDns1()!= null) {
dns_external = dnsMasqconfigcmd.getDns1()+",";
}
if (dnsMasqconfigcmd.getDns2() != null) {
dns_external = dns_external+dnsMasqconfigcmd.getDns2()+",";
}
dns_external = dns_external + "*";
dns_external = dns_external.replace(",*","");
int i=0;
for (; i< dnsmasqTOs.size(); i++) {
range=range + "dhcp-range=set:range"+i+","+dnsmasqTOs.get(i).getRouterIp()+",static\n";
range=range + "dhcp-range=set:range"+i+","+dnsmasqTOs.get(i).getStartIpOfSubnet()+",static\n";
gateway=gateway +"dhcp-option=tag:range"+i+",3,"+dnsmasqTOs.get(i).getGateway()+"\n";
netmask=netmask +"dhcp-option=tag:range"+i+",1,"+dnsmasqTOs.get(i).getNetmask()+"\n";
dnsServers=dnsServers+"dhcp-option=tag:range"+i+",6,"+dnsmasqTOs.get(i).getRouterIp()+","+dns_external+"\n";
}
dnsMasqconf.set(12, "domain="+domain+"\n");
dnsMasqconf.set(14, "domain="+domain+"\n");
@ -97,21 +107,7 @@ import java.util.List;
dnsMasqconf.set(18, range);
dnsMasqconf.set(22, gateway);
dnsMasqconf.set(23, netmask);
if (dnsMasqconfigcmd.getInternal_dns1() != null) {
dnsServers = dnsServers+dnsMasqconfigcmd.getInternal_dns1()+",";
}
if (dnsMasqconfigcmd.getInternal_dns2() != null) {
dnsServers = dnsServers+dnsMasqconfigcmd.getInternal_dns2()+",";
}
if (dnsMasqconfigcmd.getDns1() != null) {
dnsServers = dnsServers+dnsMasqconfigcmd.getDns1()+",";
}
if (dnsMasqconfigcmd.getDns2() != null) {
dnsServers = dnsServers+dnsMasqconfigcmd.getDns2()+",";
}
dnsServers = dnsServers +"*";
dnsServers = dnsServers.replace(",*", "");
dnsMasqconf.set(24,"dhcp-option=6,"+dnsServers);
dnsMasqconf.set(24,dnsServers);
return dnsMasqconf.toArray( new String[dnsMasqconf.size()]);
}

View File

@ -3395,10 +3395,16 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
List<NicIpAliasVO> ipAliasVOList = _nicIpAliasDao.getAliasIpForVm(router.getId());
List<DnsmasqTO> ipList = new ArrayList<DnsmasqTO>();
NicVO router_guest_ip = _nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId());
ipList.add(new DnsmasqTO(router_guest_ip.getIp4Address(),router_guest_ip.getGateway(),router_guest_ip.getNetmask()));
NicVO router_guest_nic = _nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId());
String cidr = NetUtils.getCidrFromGatewayAndNetmask(router_guest_nic.getGateway(), router_guest_nic.getNetmask());
String[] cidrPair = cidr.split("\\/");
String cidrAddress = cidrPair[0];
long cidrSize = Long.parseLong(cidrPair[1]);
String startIpOfSubnet = NetUtils.getIpRangeStartIpFromCidr(cidrAddress, cidrSize);
ipList.add(new DnsmasqTO(router_guest_nic.getIp4Address(),router_guest_nic.getGateway(),router_guest_nic.getNetmask(), startIpOfSubnet));
for (NicIpAliasVO ipAliasVO : ipAliasVOList) {
DnsmasqTO dnsmasqTO = new DnsmasqTO(ipAliasVO.getStartIpOfSubnet(), ipAliasVO.getGateway(), ipAliasVO.getNetmask());
DnsmasqTO dnsmasqTO = new DnsmasqTO(ipAliasVO.getIp4Address(), ipAliasVO.getGateway(), ipAliasVO.getNetmask(), ipAliasVO.getStartIpOfSubnet());
ipList.add(dnsmasqTO);
}
DataCenterVO dcvo = _dcDao.findById(router.getDataCenterId());