From a8fa3374dae1a935c336cbc01d21a3f237d6b0f4 Mon Sep 17 00:00:00 2001 From: Wilder Rodrigues Date: Sat, 26 Sep 2015 20:29:04 +0200 Subject: [PATCH] Fixing the defaut route for VPC routers --- .../config/opt/cloud/bin/cs/CsAddress.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py index 26836bc7267..f0b85f9fef3 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py @@ -114,6 +114,7 @@ class CsAddress(CsDataBag): def process(self): route = CsRoute() + found_defaultroute = False for dev in self.dbag: if dev == "id": @@ -121,17 +122,12 @@ class CsAddress(CsDataBag): ip = CsIP(dev, self.config) for address in self.dbag[dev]: - # if(address["nw_type"]!="public"): - # continue - #check if link is up - if (not self.check_if_link_exists(dev)): - logging.info("link %s does not exist, so not processing"%dev) - continue if not self.check_if_link_up(dev): cmd="ip link set %s up"%dev CsHelper.execute(cmd) + gateway = str(address["gateway"]) network = str(address["network"]) ip.setAddress(address) @@ -147,17 +143,25 @@ class CsAddress(CsDataBag): "Address %s on device %s not configured", ip.ip(), dev) if CsDevice(dev, self.config).waitfordevice(): ip.configure() + route.add_route(dev, network) + # The code looks redundant here, but we actually have to cater for routers and + # VPC routers in a different manner. Please do not remove this block otherwise + # The VPC default route will be broken. + if address["nw_type"] == "public" and not found_defaultroute: + if not route.defaultroute_exists(): + if route.add_defaultroute(gateway): + found_defaultroute = True + # once we start processing public ip's we need to verify there # is a default route and add if needed if not route.defaultroute_exists(): - cmdline=self.config.get_cmdline_instance() + cmdline = self.config.cmdline() if(cmdline.get_gateway()): route.add_defaultroute(cmdline.get_gateway()) - class CsInterface: """ Hold one single ip """ @@ -516,9 +520,10 @@ class CsIP: self.fw.append(["", "", "-A NETWORK_STATS -i eth2 -o eth0 -p tcp"]) self.fw.append(["", "", "-A NETWORK_STATS ! -i eth0 -o eth2 -p tcp"]) self.fw.append(["", "", "-A NETWORK_STATS -i eth2 ! -o eth0 -p tcp"]) - + + self.fw.append(["filter", "", "-A INPUT -p icmp -j ACCEPT"]) self.fw.append(["filter", "", "-A INPUT -i eth0 -p tcp -m tcp --dport 3922 -m state --state NEW,ESTABLISHED -j ACCEPT"]) - + self.fw.append(["filter", "", "-P INPUT DROP"]) self.fw.append(["filter", "", "-P FORWARD DROP"])