func (b *broker) RegisterManager(s *grpc.Server) { server := &brokerManager{ broker: b, deviceManager: pb_lorawan.NewDeviceManagerClient(b.nsConn), devAddrManager: pb_lorawan.NewDevAddrManagerClient(b.nsConn), } server.clientRate = ratelimit.NewRegistry(5000, time.Hour) pb.RegisterBrokerManagerServer(s, server) lorawan.RegisterDeviceManagerServer(s, server) lorawan.RegisterDevAddrManagerServer(s, server) }
func (h *handler) RegisterManager(s *grpc.Server) { server := &handlerManager{ handler: h, deviceManager: pb_lorawan.NewDeviceManagerClient(h.ttnBrokerConn), devAddrManager: pb_lorawan.NewDevAddrManagerClient(h.ttnBrokerConn), } server.applicationRate = ratelimit.NewRegistry(5000, time.Hour) server.clientRate = ratelimit.NewRegistry(5000, time.Hour) pb.RegisterHandlerManagerServer(s, server) pb.RegisterApplicationManagerServer(s, server) pb_lorawan.RegisterDevAddrManagerServer(s, server) }
func (b *broker) checkPrefixAnnouncements() error { // Get prefixes from NS nsPrefixes := map[types.DevAddrPrefix]string{} devAddrClient := pb_lorawan.NewDevAddrManagerClient(b.nsConn) resp, err := devAddrClient.GetPrefixes(b.GetContext(""), &pb_lorawan.PrefixesRequest{}) if err != nil { return errors.Wrap(errors.FromGRPCError(err), "NetworkServer did not return prefixes") } for _, mapping := range resp.Prefixes { prefix, err := types.ParseDevAddrPrefix(mapping.Prefix) if err != nil { continue } nsPrefixes[prefix] = strings.Join(mapping.Usage, ",") } // Get self from Discovery self, err := b.Component.Discover("broker", b.Component.Identity.Id) if err != nil { return err } announcedPrefixes := self.DevAddrPrefixes() nextPrefix: for nsPrefix, usage := range nsPrefixes { if !strings.Contains(usage, "world") && !strings.Contains(usage, "local") { continue } for _, announcedPrefix := range announcedPrefixes { if nsPrefix.DevAddr == announcedPrefix.DevAddr && nsPrefix.Length == announcedPrefix.Length { b.Ctx.WithField("NSPrefix", nsPrefix).WithField("DPrefix", announcedPrefix).Info("Prefix found in Discovery") continue nextPrefix } } b.Ctx.WithField("Prefix", nsPrefix).Warn("Prefix not announced in Discovery") } return nil }