mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
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:
parent
e0f0e9d016
commit
0a69b82899
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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()]);
|
||||
}
|
||||
|
||||
|
||||
@ -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());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user