mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Merge branch '4.11'
This commit is contained in:
commit
71ab3aff9a
@ -39,5 +39,3 @@ Testing
|
||||
- [ ] All relevant new and existing integration tests have passed.
|
||||
- [ ] A full integration testsuite with all test that can run on my environment has passed.
|
||||
|
||||
<!-- The following will kick a packaging job, remove if as applicable -->
|
||||
@blueorangutan package
|
||||
|
||||
@ -926,8 +926,8 @@ class CsForwardingRules(CsDataBag):
|
||||
"-I PREROUTING -s %s/32 -m state --state NEW -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff" %
|
||||
rule["internal_ip"]])
|
||||
self.fw.append(["mangle", "",
|
||||
"-I PREROUTING -s %s/32 -m state --state NEW -j MARK --set-xmark 0x%s/0xffffffff" %
|
||||
(rule["internal_ip"], device[len("eth"):])])
|
||||
"-I PREROUTING -s %s/32 -m state --state NEW -j MARK --set-xmark %s/0xffffffff" %
|
||||
(rule["internal_ip"], hex(int(device[len("eth"):])))])
|
||||
self.fw.append(["nat", "front",
|
||||
"-A PREROUTING -d %s/32 -j DNAT --to-destination %s" % (rule["public_ip"], rule["internal_ip"])])
|
||||
self.fw.append(["nat", "front",
|
||||
|
||||
@ -297,9 +297,7 @@ class CsIP:
|
||||
|
||||
interfaces = [CsInterface(address, self.config)]
|
||||
CsHelper.reconfigure_interfaces(self.cl, interfaces)
|
||||
if not self.config.is_vpc() and (self.get_type() in ['public']):
|
||||
self.set_mark()
|
||||
if self.config.is_vpc() and (self.get_type() in ['public']):
|
||||
if self.get_type() in ['public']:
|
||||
self.set_mark()
|
||||
|
||||
if 'gateway' in self.address:
|
||||
@ -363,6 +361,7 @@ class CsIP:
|
||||
def fw_router(self):
|
||||
if self.config.is_vpc():
|
||||
return
|
||||
|
||||
self.fw.append(["mangle", "front", "-A PREROUTING " +
|
||||
"-m state --state RELATED,ESTABLISHED " +
|
||||
"-j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff"])
|
||||
@ -534,6 +533,13 @@ class CsIP:
|
||||
if self.config.is_vpc():
|
||||
if self.get_type() in ["public"] and "gateway" in self.address and self.address["gateway"] != "None":
|
||||
route.add_route(self.dev, self.address["gateway"])
|
||||
for inf, addresses in self.config.address().dbag.iteritems():
|
||||
if not inf.startswith("eth"):
|
||||
continue
|
||||
for address in addresses:
|
||||
if "nw_type" in address and address["nw_type"] == "guest":
|
||||
route.add_network_route(self.dev, str(address["network"]))
|
||||
|
||||
route.add_network_route(self.dev, str(self.address["network"]))
|
||||
|
||||
CsHelper.execute("sudo ip route flush cache")
|
||||
|
||||
@ -62,13 +62,16 @@ class CsRoute:
|
||||
table = self.get_tablename(dev)
|
||||
logging.info("Adding route: dev " + dev + " table: " +
|
||||
table + " network: " + address + " if not present")
|
||||
cmd = "dev %s table %s throw %s proto static" % (dev, table, address)
|
||||
cmd = "throw %s table %s proto static" % (address, table)
|
||||
self.set_route(cmd)
|
||||
|
||||
def set_route(self, cmd, method="add"):
|
||||
""" Add a route if it is not already defined """
|
||||
found = False
|
||||
for i in CsHelper.execute("ip route show " + cmd):
|
||||
search = cmd
|
||||
if "throw" in search:
|
||||
search = "type " + search
|
||||
for i in CsHelper.execute("ip route show " + search):
|
||||
found = True
|
||||
if not found and method == "add":
|
||||
logging.info("Add " + cmd)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user