package agentsvc import ( llmgwv1 "gitea.mynodes.xyz/ilker/llmgw/api/gen/llmgw/v1" ) // SetFirewall gives the service whether nodes keep llmgw's firewall, read // at each use so a change to the cluster's settings is what is sent next. func (s *Service) SetFirewall(f func() *llmgwv1.Firewall) { s.mu.Lock() s.firewall = f s.mu.Unlock() } func (s *Service) firewallMsg() *llmgwv1.ControlMessage { s.mu.RLock() f := s.firewall s.mu.RUnlock() if f == nil { return nil } fw := f() if fw == nil { return nil } return &llmgwv1.ControlMessage{Msg: &llmgwv1.ControlMessage_Firewall{Firewall: fw}} } // BroadcastFirewall tells every connected agent what the cluster's settings // now say of the firewall. A node not connected is told when it registers. func (s *Service) BroadcastFirewall() { msg := s.firewallMsg() if msg == nil { return } for _, node := range s.ConnectedNodes() { if err := s.send(node, msg); err != nil { s.log.Warn("could not tell a node about the firewall; it is told when it next registers", "node", node, "err", err) } } }