예제 #1
0
 def _check_routes(self,
                   cidrs,
                   table=None,
                   gateway=None,
                   metric=None,
                   scope=None):
     table = table or iproute_linux.DEFAULT_TABLE
     if not scope:
         scope = 'universe' if gateway else 'link'
     scope = priv_ip_lib._get_scope_name(scope)
     for cidr in cidrs:
         ip_version = common_utils.get_ip_version(cidr)
         if ip_version == n_cons.IP_VERSION_6 and not metric:
             metric = ipdb_routes.IP6_RT_PRIO_USER
         if ip_version == n_cons.IP_VERSION_6:
             scope = 0
         routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version)
         for route in routes:
             ip = ip_lib.get_attr(route, 'RTA_DST')
             mask = route['dst_len']
             if not (ip == str(netaddr.IPNetwork(cidr).ip)
                     and mask == netaddr.IPNetwork(cidr).cidr.prefixlen):
                 continue
             self.assertEqual(table, route['table'])
             self.assertEqual(
                 priv_ip_lib._IP_VERSION_FAMILY_MAP[ip_version],
                 route['family'])
             self.assertEqual(gateway,
                              ip_lib.get_attr(route, 'RTA_GATEWAY'))
             self.assertEqual(metric,
                              ip_lib.get_attr(route, 'RTA_PRIORITY'))
             self.assertEqual(scope, route['scope'])
             break
         else:
             self.fail('CIDR %s not found in the list of routes' % cidr)
예제 #2
0
 def _check_gateway(self, gateway, table=None, metric=None):
     table = table or iproute_linux.DEFAULT_TABLE
     ip_version = common_utils.get_ip_version(gateway)
     if ip_version == n_cons.IP_VERSION_6 and not metric:
         metric = ipdb_routes.IP6_RT_PRIO_USER
     scope = 0
     routes = priv_ip_lib.list_ip_routes(self.namespace, ip_version)
     for route in routes:
         if not (ip_lib.get_attr(route, 'RTA_GATEWAY') == gateway):
             continue
         self.assertEqual(table, route['table'])
         self.assertEqual(priv_ip_lib._IP_VERSION_FAMILY_MAP[ip_version],
                          route['family'])
         self.assertEqual(gateway, ip_lib.get_attr(route, 'RTA_GATEWAY'))
         self.assertEqual(scope, route['scope'])
         self.assertEqual(0, route['dst_len'])
         self.assertEqual(metric, ip_lib.get_attr(route, 'RTA_PRIORITY'))
         break
     else:
         self.fail('Default gateway %s not found in the list of routes' %
                   gateway)