Exemple #1
0
    def _gen_br_entry(self, local, l_ifid, remote, r_ifid, remote_type, attrs,
                      local_br, remote_br, addr_type):
        link_addr_type = addr_type_from_underlay(
            attrs.get('underlay', DEFAULT_UNDERLAY))
        public_addr, remote_addr = self._reg_link_addrs(
            local_br, remote_br, l_ifid, r_ifid, link_addr_type)

        ctrl_addr = int_addr = self._reg_addr(local, local_br + "_ctrl",
                                              addr_type)
        # for docker we use the same internal and control address.
        if self.args.docker:
            int_addr = ctrl_addr

        if self.topo_dicts[local]["border_routers"].get(local_br) is None:
            ctrl_port = 30242
            intl_port = 30042
            if not self.args.docker:
                ctrl_port = self.args.port_gen.register(local_br + "_ctrl")
                intl_port = self.args.port_gen.register(local_br + "_internal")

            self.topo_dicts[local]["border_routers"][local_br] = {
                'ctrl_addr': join_host_port(ctrl_addr.ip, ctrl_port),
                'internal_addr': join_host_port(int_addr.ip, intl_port),
                'interfaces': {
                    l_ifid:
                    self._gen_br_intf(remote, public_addr, remote_addr, attrs,
                                      remote_type)
                }
            }
        else:
            # There is already a BR entry, add interface
            intf = self._gen_br_intf(remote, public_addr, remote_addr, attrs,
                                     remote_type)
            self.topo_dicts[local]["border_routers"][local_br]['interfaces'][
                l_ifid] = intf
Exemple #2
0
 def _gen_br_intf(self, remote, public_addr, remote_addr, attrs, remote_type):
     return {
         'underlay': {
             'public': join_host_port(public_addr.ip, SCION_ROUTER_PORT),
             'remote': join_host_port(remote_addr.ip, SCION_ROUTER_PORT),
         },
         'isd_as': str(remote),
         'link_to': LinkType.to_str(remote_type.lower()),
         'mtu': attrs.get('mtu', self.args.default_mtu)
     }
Exemple #3
0
 def _gen_sig_entries(self, topo_id, as_conf):
     addr_type = addr_type_from_underlay(DEFAULT_UNDERLAY)
     elem_id = "sig" + topo_id.file_fmt()
     reg_id = "sig" + topo_id.file_fmt()
     port = 30256
     if not self.args.docker:
         port = self.args.port_gen.register(elem_id)
     d = {
         'ctrl_addr': join_host_port(self._reg_addr(topo_id, reg_id, addr_type).ip, port),
         'data_addr': join_host_port(self._reg_addr(topo_id, reg_id, addr_type).ip, 30056),
     }
     self.topo_dicts[topo_id]['sigs'][elem_id] = d
Exemple #4
0
 def _gen_br_intf(self, remote, public_addr, remote_addr, attrs,
                  remote_type):
     return {
         'underlay': {
             'public': join_host_port(public_addr.ip, SCION_ROUTER_PORT),
             'remote': join_host_port(remote_addr.ip, SCION_ROUTER_PORT),
         },
         'bandwidth': attrs.get('bw', DEFAULT_LINK_BW),
         'isd_as': str(remote),
         'link_to': LinkType.to_str(remote_type.lower()),
         'mtu': attrs.get('mtu', DEFAULT_MTU)
     }
Exemple #5
0
 def _quic_conf_entry(self, port, svcfrac, elem=None):
     addr = '127.0.0.1' if elem is None else split_host_port(elem['addr'])[0]
     if self.args.docker and elem is not None:
         _, port = split_host_port(elem['addr'])
         port += 1
     return {
         'address':  join_host_port(addr, port),
         'cert_file': os.path.join(self.certs_dir, 'tls.pem'),
         'key_file': os.path.join(self.certs_dir, 'tls.key'),
         'resolution_fraction': svcfrac,
     }
Exemple #6
0
    def _gen_srv_entry(self, topo_id, as_conf, conf_key, def_num, nick,
                       topo_key, uses_dispatcher=True):
        addr_type = addr_type_from_underlay(as_conf.get('underlay', DEFAULT_UNDERLAY))
        count = self._srv_count(as_conf, conf_key, def_num)
        for i in range(1, count + 1):
            elem_id = "%s%s-%s" % (nick, topo_id.file_fmt(), i)

            port = self._default_ctrl_port(nick)
            if not self.args.docker:
                port = self.args.port_gen.register(elem_id)

            d = {
                'addr': join_host_port(self._reg_addr(topo_id, elem_id, addr_type).ip, port),
            }
            self.topo_dicts[topo_id][topo_key][elem_id] = d