MCPcopy
hub / github.com/osrg/gobgp / NewBgpServer

Function NewBgpServer

pkg/server/server.go:167–212  ·  view source on GitHub ↗
(opt ...ServerOption)

Source from the content-addressed store, hash-verified

165}
166
167func NewBgpServer(opt ...ServerOption) *BgpServer {
168 opts := options{
169 timingHook: nopTimingHook{},
170 }
171 for _, o := range opt {
172 o(&opts)
173 }
174 logger := opts.logger
175 lvl := opts.logLevelVar
176 if logger == nil {
177 logger = slog.New(slog.NewJSONHandler(io.Discard, nil))
178 lvl = nil
179 }
180 roaTable := table.NewROATable(logger)
181 shared := newSharedData()
182
183 s := &BgpServer{
184 shared: shared,
185 neighborMap: make(map[netip.Addr]*peer),
186 peerGroupMap: make(map[string]*peerGroup),
187 policy: table.NewRoutingPolicy(logger),
188 mgmtCh: make(chan *mgmtOp, 1),
189 closeCh: make(chan struct{}),
190 watcherMap: make(map[watchEventType][]*watcher),
191 uuidMap: make(map[string]uuid.UUID),
192 roaManager: newROAManager(roaTable, logger),
193 roaTable: roaTable,
194 logger: logger,
195 logLevelVar: lvl,
196 timingHook: opts.timingHook,
197 shutdownWG: &sync.WaitGroup{},
198 }
199 s.bmpManager = newBmpClientManager(s)
200 s.mrtManager = newMrtManager(s)
201 s.bfdServer = NewBfdServer(s, logger)
202 if len(opts.grpcAddress) != 0 {
203 grpc.EnableTracing = false
204 s.apiServer = newAPIserver(s, shared, grpc.NewServer(opts.grpcOption...), opts.grpcAddress)
205 go func() {
206 if err := s.apiServer.serve(); err != nil {
207 logger.Error("failed to listen grpc port", slog.String("Error", err.Error()))
208 }
209 }()
210 }
211 return s
212}
213
214func (s *BgpServer) Stop() {
215 if err := s.StopBgp(context.Background(), &api.StopBgpRequest{}); err != nil {

Calls 11

NewROATableFunction · 0.92
NewRoutingPolicyFunction · 0.92
newSharedDataFunction · 0.85
newROAManagerFunction · 0.85
newBmpClientManagerFunction · 0.85
newMrtManagerFunction · 0.85
NewBfdServerFunction · 0.85
newAPIserverFunction · 0.85
serveMethod · 0.80
ErrorMethod · 0.80
StringMethod · 0.65

Used in the wild real call sites across dependent graphs

searching dependent graphs…