VR: fix dnmasq misconfiguration if there are multiple IP ranges in a shared network (#8741)

This commit is contained in:
Wei Zhou 2024-04-24 14:51:50 +02:00 committed by GitHub
parent 5f6acca049
commit 3b0e6ac90c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 10 deletions

View File

@ -127,7 +127,7 @@ class CsDhcp(CsDataBag):
line = "dhcp-option=%s,26,%s" % (device, i['mtu']) line = "dhcp-option=%s,26,%s" % (device, i['mtu'])
self.conf.search(sline, line) self.conf.search(sline, line)
# Netmask # Netmask
netmask = '' netmask = ''
if self.config.is_vpc(): if self.config.is_vpc():
netmask = gn.get_netmask() netmask = gn.get_netmask()

View File

@ -113,22 +113,20 @@ def bool_to_yn(val):
def get_device_info(): def get_device_info():
""" Returns all devices on system with their ipv4 ip netmask """ """ Returns all devices on system with their ipv4 ip netmask """
list = [] list = []
mtu = None
for i in execute("ip addr show |grep -v secondary"): for i in execute("ip addr show |grep -v secondary"):
vals = i.strip().lstrip().rstrip().split() vals = i.strip().lstrip().rstrip().split()
if re.search('[0-9]:',vals[0]): if re.search('[0-9]:', vals[0]):
to={} mtu = vals[4]
to['mtu'] = vals[4]
list.append(to)
if vals[0] == "inet": if vals[0] == "inet":
if len(list) > 0: to = {}
to = list.pop(len(list)-1)
else:
to={}
to['ip'] = vals[1] to['ip'] = vals[1]
to['dev'] = vals[-1] to['dev'] = vals[-1]
to['network'] = IPNetwork(to['ip']) to['network'] = IPNetwork(to['ip'])
to['dnsmasq'] = False to['dnsmasq'] = False
if mtu:
to['mtu'] = mtu
list.append(to) list.append(to)
return list return list

View File

@ -241,7 +241,7 @@ export default {
return Promise.resolve() return Promise.resolve()
} else if (!this.ipV4Regex.test(value)) { } else if (!this.ipV4Regex.test(value)) {
return Promise.reject(this.$t('message.error.ipv4.address')) return Promise.reject(this.$t('message.error.ipv4.address'))
} else if (rule.networkType !== 'L2' && !this.isIp4InCidr(value, rule.cidr)) { } else if (rule.networkType === 'Isolated' && !this.isIp4InCidr(value, rule.cidr)) {
const rangeIps = this.calculateCidrRange(rule.cidr) const rangeIps = this.calculateCidrRange(rule.cidr)
const message = `${this.$t('message.error.ip.range')} ${this.$t('label.from')} ${rangeIps[0]} ${this.$t('label.to')} ${rangeIps[1]}` const message = `${this.$t('message.error.ip.range')} ${this.$t('label.from')} ${rangeIps[0]} ${this.$t('label.to')} ${rangeIps[1]}`
return Promise.reject(message) return Promise.reject(message)