示例#1
0
文件: vxlan.py 项目: zyd915/pritunl
 def __init__(self, vxlan_id, server_id, ipv6):
     self.vxlan_id = vxlan_id
     self.vxlan_mac = None
     self.vxlan_addr = None
     self.vxlan_addr6 = None
     self.vxlan_net = settings.vpn.vxlan_net_prefix + str(
         self.vxlan_id) + '.0/24'
     self.vxlan_net6 = utils.net4to6x64(
         settings.vpn.ipv6_prefix,
         self.vxlan_net,
     )
     self.server_id = server_id
     self.ipv6 = ipv6
     self.host_vxlan_id = None
     self.running = False
     self.running_lock = threading.Lock()
     _vxlans[(self.vxlan_id, self.server_id)] = self
示例#2
0
文件: vxlan.py 项目: pritunl/pritunl
 def __init__(self, vxlan_id, server_id, instance_id, ipv6):
     self.vxlan_id = vxlan_id
     self.vxlan_mac = None
     self.vxlan_addr = None
     self.vxlan_addr6 = None
     self.vxlan_net = settings.vpn.vxlan_net_prefix + str(
         self.vxlan_id) + '.0/24'
     self.vxlan_net6 = utils.net4to6x64(
         settings.vpn.ipv6_prefix,
         self.vxlan_net,
     )
     self.server_id = server_id
     self.instance_id = instance_id
     self.ipv6 = ipv6
     self.host_vxlan_id = None
     self.running = False
     self.running_lock = threading.Lock()
     _vxlans[(self.vxlan_id, self.server_id)] = self
     _vxlan_instances[self.vxlan_id] = self.instance_id
示例#3
0
 def network6(self):
     routed_subnet6 = settings.local.host.routed_subnet6
     if routed_subnet6:
         return utils.net4to6x96(routed_subnet6, self.network)
     return utils.net4to6x64(settings.vpn.ipv6_prefix, self.network)
示例#4
0
 def network6(self):
     routed_subnet6 = settings.local.host.routed_subnet6
     if routed_subnet6:
         return utils.net4to6x96(routed_subnet6, self.network)
     return utils.net4to6x64(settings.vpn.ipv6_prefix, self.network)
示例#5
0
def get_vxlan_net6(server_id):
    vxlan_id = get_vxlan_id(server_id)
    return utils.net4to6x64(
        settings.vpn.ipv6_prefix,
        vxlan_id,
    )
示例#6
0
文件: vxlan.py 项目: pritunl/pritunl
def get_vxlan_net6(server_id):
    vxlan_id = get_vxlan_id(server_id)
    return utils.net4to6x64(
        settings.vpn.ipv6_prefix,
        vxlan_id,
    )
示例#7
0
    def reserve_route_advertisement(self, vpc_region, vpc_id, network):
        cloud_provider = settings.app.cloud_provider
        if not cloud_provider:
            return

        ra_id = '%s_%s_%s' % (self.server.id, vpc_id, network)
        timestamp_spec = utils.now() - datetime.timedelta(
            seconds=settings.vpn.route_ping_ttl)

        try:
            self.routes_collection.update_one({
                '_id': ra_id,
                'timestamp': {'$lt': timestamp_spec},
            }, {'$set': {
                'instance_id': self.id,
                'server_id': self.server.id,
                'vpc_region': vpc_region,
                'vpc_id': vpc_id,
                'network': network,
                'timestamp': utils.now(),
            }}, upsert=True)

            if cloud_provider == 'aws':
                utils.add_vpc_route(network)
            elif cloud_provider == 'oracle':
                utils.oracle_add_route(network)
            else:
                logger.error('Unknown cloud provider type', 'server',
                    cloud_provider=settings.app.cloud_provider,
                    network=network,
                )

            if self.vxlan:
                if network == self.server.network:
                    vxlan_net = self.vxlan.vxlan_net
                    if cloud_provider == 'aws':
                        utils.add_vpc_route(vxlan_net)
                    elif cloud_provider == 'oracle':
                        utils.oracle_add_route(vxlan_net)

                elif network == self.server.network6:
                    vxlan_net6 = utils.net4to6x64(
                        settings.vpn.ipv6_prefix,
                        self.vxlan.vxlan_net,
                    )
                    if cloud_provider == 'aws':
                        utils.add_vpc_route(vxlan_net6)
                    elif cloud_provider == 'oracle':
                        utils.oracle_add_route(vxlan_net6)

            self.route_advertisements.add(ra_id)
        except pymongo.errors.DuplicateKeyError:
            return
        except:
            logger.exception('Failed to add vpc route', 'server',
                server_id=self.server.id,
                instance_id=self.id,
                vpc_region=vpc_region,
                vpc_id=vpc_id,
                network=network,
            )
示例#8
0
    def reserve_route_advertisement(self, vpc_region, vpc_id, network):
        cloud_provider = settings.app.cloud_provider
        if not cloud_provider:
            return

        ra_id = '%s_%s_%s' % (self.server.id, vpc_id, network)
        timestamp_spec = utils.now() - datetime.timedelta(
            seconds=settings.vpn.route_ping_ttl)

        try:
            self.routes_collection.update_one({
                '_id': ra_id,
                'timestamp': {'$lt': timestamp_spec},
            }, {'$set': {
                'instance_id': self.id,
                'server_id': self.server.id,
                'vpc_region': vpc_region,
                'vpc_id': vpc_id,
                'network': network,
                'timestamp': utils.now(),
            }}, upsert=True)

            if cloud_provider == 'aws':
                utils.add_vpc_route(network)
            elif cloud_provider == 'oracle':
                utils.oracle_add_route(network)
            else:
                logger.error('Unknown cloud provider type', 'server',
                    cloud_provider=settings.app.cloud_provider,
                    network=network,
                )

            if self.vxlan:
                if network == self.server.network:
                    vxlan_net = self.vxlan.vxlan_net
                    if cloud_provider == 'aws':
                        utils.add_vpc_route(vxlan_net)
                    elif cloud_provider == 'oracle':
                        utils.oracle_add_route(vxlan_net)

                elif network == self.server.network6:
                    vxlan_net6 = utils.net4to6x64(
                        settings.vpn.ipv6_prefix,
                        self.vxlan.vxlan_net,
                    )
                    if cloud_provider == 'aws':
                        utils.add_vpc_route(vxlan_net6)
                    elif cloud_provider == 'oracle':
                        utils.oracle_add_route(vxlan_net6)

            self.route_advertisements.add(ra_id)
        except pymongo.errors.DuplicateKeyError:
            return
        except:
            logger.exception('Failed to add vpc route', 'server',
                server_id=self.server.id,
                instance_id=self.id,
                vpc_region=vpc_region,
                vpc_id=vpc_id,
                network=network,
            )