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

Function newPeerGroupFromAPIStruct

pkg/server/grpc_server.go:1185–1296  ·  view source on GitHub ↗
(a *api.PeerGroup)

Source from the content-addressed store, hash-verified

1183}
1184
1185func newPeerGroupFromAPIStruct(a *api.PeerGroup) (*oc.PeerGroup, error) {
1186 pconf := &oc.PeerGroup{}
1187 if a.Conf != nil {
1188 pconf.Config.PeerAs = a.Conf.PeerAsn
1189 pconf.Config.LocalAs = a.Conf.LocalAsn
1190 pconf.Config.AuthPassword = a.Conf.AuthPassword
1191 pconf.Config.RouteFlapDamping = a.Conf.RouteFlapDamping
1192 pconf.Config.Description = a.Conf.Description
1193 pconf.Config.PeerGroupName = a.Conf.PeerGroupName
1194 pconf.Config.SendSoftwareVersion = a.Conf.SendSoftwareVersion
1195 if a.Conf.AllowOwnAsn > math.MaxUint8 {
1196 return nil, fmt.Errorf("allow_own_asn is out of range: %d", a.Conf.AllowOwnAsn)
1197 }
1198 pconf.AsPathOptions.Config.AllowOwnAs = uint8(a.Conf.AllowOwnAsn)
1199 pconf.AsPathOptions.Config.ReplacePeerAs = a.Conf.ReplacePeerAsn
1200 pconf.AsPathOptions.Config.AllowAsPathLoopLocal = a.Conf.AllowAspathLoopLocal
1201
1202 switch a.Conf.RemovePrivate {
1203 case api.RemovePrivate_REMOVE_PRIVATE_ALL:
1204 pconf.Config.RemovePrivateAs = oc.REMOVE_PRIVATE_AS_OPTION_ALL
1205 case api.RemovePrivate_REMOVE_PRIVATE_REPLACE:
1206 pconf.Config.RemovePrivateAs = oc.REMOVE_PRIVATE_AS_OPTION_REPLACE
1207 }
1208
1209 for _, af := range a.AfiSafis {
1210 afiSafi := oc.AfiSafi{}
1211 readMpGracefulRestartFromAPIStruct(&afiSafi.MpGracefulRestart, af.MpGracefulRestart)
1212 readAfiSafiConfigFromAPIStruct(&afiSafi.Config, af.Config)
1213 readAfiSafiStateFromAPIStruct(&afiSafi.State, af.Config)
1214 readApplyPolicyFromAPIStruct(&afiSafi.ApplyPolicy, af.ApplyPolicy)
1215 readRouteSelectionOptionsFromAPIStruct(&afiSafi.RouteSelectionOptions, af.RouteSelectionOptions)
1216 readUseMultiplePathsFromAPIStruct(&afiSafi.UseMultiplePaths, af.UseMultiplePaths)
1217 readPrefixLimitFromAPIStruct(&afiSafi.PrefixLimit, af.PrefixLimits)
1218 readRouteTargetMembershipFromAPIStruct(&afiSafi.RouteTargetMembership, af.RouteTargetMembership)
1219 readLongLivedGracefulRestartFromAPIStruct(&afiSafi.LongLivedGracefulRestart, af.LongLivedGracefulRestart)
1220 readAddPathsFromAPIStruct(&afiSafi.AddPaths, af.AddPaths)
1221 pconf.AfiSafis = append(pconf.AfiSafis, afiSafi)
1222 }
1223 }
1224
1225 if a.Timers != nil {
1226 if a.Timers.Config != nil {
1227 pconf.Timers.Config.ConnectRetry = float64(a.Timers.Config.ConnectRetry)
1228 pconf.Timers.Config.HoldTime = float64(a.Timers.Config.HoldTime)
1229 pconf.Timers.Config.KeepaliveInterval = float64(a.Timers.Config.KeepaliveInterval)
1230 pconf.Timers.Config.MinimumAdvertisementInterval = float64(a.Timers.Config.MinimumAdvertisementInterval)
1231 pconf.Timers.Config.IdleHoldTimeAfterReset = float64(a.Timers.Config.IdleHoldTimeAfterReset)
1232 }
1233 if a.Timers.State != nil {
1234 pconf.Timers.State.KeepaliveInterval = float64(a.Timers.State.KeepaliveInterval)
1235 pconf.Timers.State.NegotiatedHoldTime = float64(a.Timers.State.NegotiatedHoldTime)
1236 }
1237 }
1238 if a.RouteReflector != nil {
1239 if id, err := netip.ParseAddr(a.RouteReflector.RouteReflectorClusterId); err == nil {
1240 pconf.RouteReflector.Config.RouteReflectorClusterId = id
1241 }
1242 pconf.RouteReflector.Config.RouteReflectorClient = a.RouteReflector.RouteReflectorClient

Used in the wild real call sites across dependent graphs

searching dependent graphs…