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

Method StartBgp

pkg/server/server.go:2592–2642  ·  view source on GitHub ↗
(ctx context.Context, r *api.StartBgpRequest)

Source from the content-addressed store, hash-verified

2590}
2591
2592func (s *BgpServer) StartBgp(ctx context.Context, r *api.StartBgpRequest) error {
2593 if r == nil || r.Global == nil {
2594 return fmt.Errorf("nil request")
2595 }
2596 return s.mgmtOperation(func() error {
2597 g := r.Global
2598 routerAddr, err := netip.ParseAddr(g.RouterId)
2599 if err != nil {
2600 return fmt.Errorf("invalid router-id format: %s", g.RouterId)
2601 }
2602 if !routerAddr.Is4() {
2603 return fmt.Errorf("router-id must be an IPv4 address: %s", g.RouterId)
2604 }
2605
2606 c := newGlobalFromAPIStruct(g)
2607 if err := oc.SetDefaultGlobalConfigValues(c); err != nil {
2608 return err
2609 }
2610
2611 if c.Config.Port > 0 {
2612 acceptCh := make(chan net.Conn, 32)
2613 for _, addr := range c.Config.LocalAddressList {
2614 l, err := netutils.NewTCPListener(s.logger, addr.String(), uint32(c.Config.Port), g.BindToDevice, acceptCh)
2615 if err != nil {
2616 return err
2617 }
2618 s.listeners = append(s.listeners, l)
2619 }
2620 s.acceptCh = acceptCh
2621 }
2622
2623 rfs, _ := oc.AfiSafis(c.AfiSafis).ToRfList()
2624 s.globalRib = table.NewTableManager(s.logger, rfs)
2625 s.rsRib = table.NewTableManager(s.logger, rfs)
2626
2627 if err := s.policy.Initialize(); err != nil {
2628 return err
2629 }
2630 s.bgpConfig.Global = *c
2631 // update route selection options
2632 table.SelectionOptions = c.RouteSelectionOptions.Config
2633 table.UseMultiplePaths = c.UseMultiplePaths.Config
2634 if s.bfdServer != nil {
2635 s.bfdServer.listenInterface = g.BindToDevice
2636 if err := s.bfdServer.Start(ctx, oc.BfdConfig{Port: BfdServerPort}); err != nil {
2637 return err
2638 }
2639 }
2640 return nil
2641 }, false)
2642}
2643
2644func (s *BgpServer) ListVrf(ctx context.Context, r *api.ListVrfRequest, fn func(*api.Vrf)) error {
2645 if r == nil {

Calls 10

mgmtOperationMethod · 0.95
NewTCPListenerFunction · 0.92
AfiSafisTypeAlias · 0.92
NewTableManagerFunction · 0.92
newGlobalFromAPIStructFunction · 0.85
ToRfListMethod · 0.80
InitializeMethod · 0.80
StartMethod · 0.80
StringMethod · 0.65