diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/gobgp.pb.go | 744 | ||||
-rw-r--r-- | api/gobgp.proto | 266 |
2 files changed, 917 insertions, 93 deletions
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go index 6f0648e7..d856e19d 100644 --- a/api/gobgp.pb.go +++ b/api/gobgp.pb.go @@ -12,6 +12,7 @@ It has these top-level messages: Error Arguments ModPathArguments + ModNeighborArguments MrtArguments ModVrfArguments ModDefinedSetArguments @@ -20,9 +21,35 @@ It has these top-level messages: ModPolicyAssignmentArguments Path Destination - PeerConf - PeerInfo Peer + AddPaths + AfiSafis + AfiSafi + ApplyPolicy + AfiSafiGracefulRestart + LabelledUnicast + PrefixLimit + Unicast + Vpn + Prefixes + UseMultiplePaths + Ebgp + AsPathOptions + PeerConf + EbgpMultihop + ErrorHandling + PeerGracefulRestart + LoggingOptions + RouteReflector + PeerState + Messages + Message + Queues + Timers + TimersConfig + TimersState + Transport + RouteServer Prefix DefinedSet MatchSet @@ -336,6 +363,22 @@ func (m *ModPathArguments) GetPaths() []*Path { return nil } +type ModNeighborArguments struct { + Operation Operation `protobuf:"varint,1,opt,name=operation,enum=gobgpapi.Operation" json:"operation,omitempty"` + Peer *Peer `protobuf:"bytes,2,opt,name=peer" json:"peer,omitempty"` +} + +func (m *ModNeighborArguments) Reset() { *m = ModNeighborArguments{} } +func (m *ModNeighborArguments) String() string { return proto.CompactTextString(m) } +func (*ModNeighborArguments) ProtoMessage() {} + +func (m *ModNeighborArguments) GetPeer() *Peer { + if m != nil { + return m.Peer + } + return nil +} + type MrtArguments struct { Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"` Rf uint32 `protobuf:"varint,2,opt,name=rf" json:"rf,omitempty"` @@ -469,77 +512,647 @@ func (m *Destination) GetPaths() []*Path { return nil } +type Peer struct { + Addpaths *AddPaths `protobuf:"bytes,1,opt,name=addpaths" json:"addpaths,omitempty"` + Afisafis *AfiSafis `protobuf:"bytes,2,opt,name=afisafis" json:"afisafis,omitempty"` + ApplyPolicy *ApplyPolicy `protobuf:"bytes,3,opt,name=apply_policy" json:"apply_policy,omitempty"` + AsPathOptions *AsPathOptions `protobuf:"bytes,4,opt,name=as_path_options" json:"as_path_options,omitempty"` + Conf *PeerConf `protobuf:"bytes,5,opt,name=conf" json:"conf,omitempty"` + EbgpMultihop *EbgpMultihop `protobuf:"bytes,6,opt,name=ebgp_multihop" json:"ebgp_multihop,omitempty"` + ErrorHandling *ErrorHandling `protobuf:"bytes,7,opt,name=error_handling" json:"error_handling,omitempty"` + GracefulRestart *PeerGracefulRestart `protobuf:"bytes,8,opt,name=graceful_restart" json:"graceful_restart,omitempty"` + LoggingOptions *LoggingOptions `protobuf:"bytes,9,opt,name=logging_options" json:"logging_options,omitempty"` + NighborAddress string `protobuf:"bytes,10,opt,name=nighbor_address" json:"nighbor_address,omitempty"` + RouteReflector *RouteReflector `protobuf:"bytes,11,opt,name=route_reflector" json:"route_reflector,omitempty"` + Info *PeerState `protobuf:"bytes,12,opt,name=info" json:"info,omitempty"` + Timers *Timers `protobuf:"bytes,13,opt,name=timers" json:"timers,omitempty"` + Transport *Transport `protobuf:"bytes,14,opt,name=transport" json:"transport,omitempty"` + UseMultiplePaths *UseMultiplePaths `protobuf:"bytes,15,opt,name=use_multiple_paths" json:"use_multiple_paths,omitempty"` + RouteServer *RouteServer `protobuf:"bytes,16,opt,name=route_server" json:"route_server,omitempty"` +} + +func (m *Peer) Reset() { *m = Peer{} } +func (m *Peer) String() string { return proto.CompactTextString(m) } +func (*Peer) ProtoMessage() {} + +func (m *Peer) GetAddpaths() *AddPaths { + if m != nil { + return m.Addpaths + } + return nil +} + +func (m *Peer) GetAfisafis() *AfiSafis { + if m != nil { + return m.Afisafis + } + return nil +} + +func (m *Peer) GetApplyPolicy() *ApplyPolicy { + if m != nil { + return m.ApplyPolicy + } + return nil +} + +func (m *Peer) GetAsPathOptions() *AsPathOptions { + if m != nil { + return m.AsPathOptions + } + return nil +} + +func (m *Peer) GetConf() *PeerConf { + if m != nil { + return m.Conf + } + return nil +} + +func (m *Peer) GetEbgpMultihop() *EbgpMultihop { + if m != nil { + return m.EbgpMultihop + } + return nil +} + +func (m *Peer) GetErrorHandling() *ErrorHandling { + if m != nil { + return m.ErrorHandling + } + return nil +} + +func (m *Peer) GetGracefulRestart() *PeerGracefulRestart { + if m != nil { + return m.GracefulRestart + } + return nil +} + +func (m *Peer) GetLoggingOptions() *LoggingOptions { + if m != nil { + return m.LoggingOptions + } + return nil +} + +func (m *Peer) GetRouteReflector() *RouteReflector { + if m != nil { + return m.RouteReflector + } + return nil +} + +func (m *Peer) GetInfo() *PeerState { + if m != nil { + return m.Info + } + return nil +} + +func (m *Peer) GetTimers() *Timers { + if m != nil { + return m.Timers + } + return nil +} + +func (m *Peer) GetTransport() *Transport { + if m != nil { + return m.Transport + } + return nil +} + +func (m *Peer) GetUseMultiplePaths() *UseMultiplePaths { + if m != nil { + return m.UseMultiplePaths + } + return nil +} + +func (m *Peer) GetRouteServer() *RouteServer { + if m != nil { + return m.RouteServer + } + return nil +} + +type AddPaths struct { + Receive bool `protobuf:"varint,1,opt,name=receive" json:"receive,omitempty"` + SendMax uint32 `protobuf:"varint,2,opt,name=send_max" json:"send_max,omitempty"` +} + +func (m *AddPaths) Reset() { *m = AddPaths{} } +func (m *AddPaths) String() string { return proto.CompactTextString(m) } +func (*AddPaths) ProtoMessage() {} + +type AfiSafis struct { + Afisafi []*AfiSafi `protobuf:"bytes,1,rep,name=afisafi" json:"afisafi,omitempty"` +} + +func (m *AfiSafis) Reset() { *m = AfiSafis{} } +func (m *AfiSafis) String() string { return proto.CompactTextString(m) } +func (*AfiSafis) ProtoMessage() {} + +func (m *AfiSafis) GetAfisafi() []*AfiSafi { + if m != nil { + return m.Afisafi + } + return nil +} + +type AfiSafi struct { + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + ApplyPolicy *ApplyPolicy `protobuf:"bytes,2,opt,name=apply_policy" json:"apply_policy,omitempty"` + Enabled bool `protobuf:"varint,3,opt,name=enabled" json:"enabled,omitempty"` + GracefulRestart *AfiSafiGracefulRestart `protobuf:"bytes,4,opt,name=graceful_restart" json:"graceful_restart,omitempty"` + Ipv4LabelledUnicast *LabelledUnicast `protobuf:"bytes,5,opt,name=ipv4_labelled_unicast" json:"ipv4_labelled_unicast,omitempty"` + Ipv4Unicast *Unicast `protobuf:"bytes,6,opt,name=ipv4_unicast" json:"ipv4_unicast,omitempty"` + Ipv6LabelledUnicast *LabelledUnicast `protobuf:"bytes,7,opt,name=ipv6_labelled_unicast" json:"ipv6_labelled_unicast,omitempty"` + Ipv6Unicast *Unicast `protobuf:"bytes,8,opt,name=ipv6_unicast" json:"ipv6_unicast,omitempty"` + L2VpnEvpn *Vpn `protobuf:"bytes,9,opt,name=l2_vpn_evpn" json:"l2_vpn_evpn,omitempty"` + L2VpnVpls *Vpn `protobuf:"bytes,10,opt,name=l2_vpn_vpls" json:"l2_vpn_vpls,omitempty"` + L3VpnIpv4Multicast *Vpn `protobuf:"bytes,11,opt,name=l3_vpn_ipv4_multicast" json:"l3_vpn_ipv4_multicast,omitempty"` + L3VpnIpv4Unicast *Vpn `protobuf:"bytes,12,opt,name=l3_vpn_ipv4_unicast" json:"l3_vpn_ipv4_unicast,omitempty"` + L3VpnIpv6Multicast *Vpn `protobuf:"bytes,13,opt,name=l3_vpn_ipv6_multicast" json:"l3_vpn_ipv6_multicast,omitempty"` + L3VpnIpv6Unicast *Vpn `protobuf:"bytes,14,opt,name=l3_vpn_ipv6_unicast" json:"l3_vpn_ipv6_unicast,omitempty"` + UseMultiplePaths *UseMultiplePaths `protobuf:"bytes,15,opt,name=use_multiple_paths" json:"use_multiple_paths,omitempty"` + Active bool `protobuf:"varint,16,opt,name=active" json:"active,omitempty"` + Prefixes *Prefixes `protobuf:"bytes,17,opt,name=prefixes" json:"prefixes,omitempty"` +} + +func (m *AfiSafi) Reset() { *m = AfiSafi{} } +func (m *AfiSafi) String() string { return proto.CompactTextString(m) } +func (*AfiSafi) ProtoMessage() {} + +func (m *AfiSafi) GetApplyPolicy() *ApplyPolicy { + if m != nil { + return m.ApplyPolicy + } + return nil +} + +func (m *AfiSafi) GetGracefulRestart() *AfiSafiGracefulRestart { + if m != nil { + return m.GracefulRestart + } + return nil +} + +func (m *AfiSafi) GetIpv4LabelledUnicast() *LabelledUnicast { + if m != nil { + return m.Ipv4LabelledUnicast + } + return nil +} + +func (m *AfiSafi) GetIpv4Unicast() *Unicast { + if m != nil { + return m.Ipv4Unicast + } + return nil +} + +func (m *AfiSafi) GetIpv6LabelledUnicast() *LabelledUnicast { + if m != nil { + return m.Ipv6LabelledUnicast + } + return nil +} + +func (m *AfiSafi) GetIpv6Unicast() *Unicast { + if m != nil { + return m.Ipv6Unicast + } + return nil +} + +func (m *AfiSafi) GetL2VpnEvpn() *Vpn { + if m != nil { + return m.L2VpnEvpn + } + return nil +} + +func (m *AfiSafi) GetL2VpnVpls() *Vpn { + if m != nil { + return m.L2VpnVpls + } + return nil +} + +func (m *AfiSafi) GetL3VpnIpv4Multicast() *Vpn { + if m != nil { + return m.L3VpnIpv4Multicast + } + return nil +} + +func (m *AfiSafi) GetL3VpnIpv4Unicast() *Vpn { + if m != nil { + return m.L3VpnIpv4Unicast + } + return nil +} + +func (m *AfiSafi) GetL3VpnIpv6Multicast() *Vpn { + if m != nil { + return m.L3VpnIpv6Multicast + } + return nil +} + +func (m *AfiSafi) GetL3VpnIpv6Unicast() *Vpn { + if m != nil { + return m.L3VpnIpv6Unicast + } + return nil +} + +func (m *AfiSafi) GetUseMultiplePaths() *UseMultiplePaths { + if m != nil { + return m.UseMultiplePaths + } + return nil +} + +func (m *AfiSafi) GetPrefixes() *Prefixes { + if m != nil { + return m.Prefixes + } + return nil +} + +type ApplyPolicy struct { + InPolicy *PolicyAssignment `protobuf:"bytes,1,opt,name=in_policy" json:"in_policy,omitempty"` + ExportPolicy *PolicyAssignment `protobuf:"bytes,2,opt,name=export_policy" json:"export_policy,omitempty"` + ImportPolicy *PolicyAssignment `protobuf:"bytes,3,opt,name=import_policy" json:"import_policy,omitempty"` +} + +func (m *ApplyPolicy) Reset() { *m = ApplyPolicy{} } +func (m *ApplyPolicy) String() string { return proto.CompactTextString(m) } +func (*ApplyPolicy) ProtoMessage() {} + +func (m *ApplyPolicy) GetInPolicy() *PolicyAssignment { + if m != nil { + return m.InPolicy + } + return nil +} + +func (m *ApplyPolicy) GetExportPolicy() *PolicyAssignment { + if m != nil { + return m.ExportPolicy + } + return nil +} + +func (m *ApplyPolicy) GetImportPolicy() *PolicyAssignment { + if m != nil { + return m.ImportPolicy + } + return nil +} + +type AfiSafiGracefulRestart struct { + Advertised bool `protobuf:"varint,1,opt,name=advertised" json:"advertised,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled" json:"enabled,omitempty"` + Received bool `protobuf:"varint,3,opt,name=received" json:"received,omitempty"` +} + +func (m *AfiSafiGracefulRestart) Reset() { *m = AfiSafiGracefulRestart{} } +func (m *AfiSafiGracefulRestart) String() string { return proto.CompactTextString(m) } +func (*AfiSafiGracefulRestart) ProtoMessage() {} + +type LabelledUnicast struct { + PrefixLimit *PrefixLimit `protobuf:"bytes,1,opt,name=prefix_limit" json:"prefix_limit,omitempty"` +} + +func (m *LabelledUnicast) Reset() { *m = LabelledUnicast{} } +func (m *LabelledUnicast) String() string { return proto.CompactTextString(m) } +func (*LabelledUnicast) ProtoMessage() {} + +func (m *LabelledUnicast) GetPrefixLimit() *PrefixLimit { + if m != nil { + return m.PrefixLimit + } + return nil +} + +type PrefixLimit struct { + MaxPrefixes uint32 `protobuf:"varint,1,opt,name=max_prefixes" json:"max_prefixes,omitempty"` + RestartTimer uint64 `protobuf:"varint,2,opt,name=restart_timer" json:"restart_timer,omitempty"` + ShutdownThresholdPct uint32 `protobuf:"varint,3,opt,name=shutdown_threshold_pct" json:"shutdown_threshold_pct,omitempty"` +} + +func (m *PrefixLimit) Reset() { *m = PrefixLimit{} } +func (m *PrefixLimit) String() string { return proto.CompactTextString(m) } +func (*PrefixLimit) ProtoMessage() {} + +type Unicast struct { + SendDefaultRoute bool `protobuf:"varint,1,opt,name=send_default_route" json:"send_default_route,omitempty"` + PrefixLimit *PrefixLimit `protobuf:"bytes,2,opt,name=prefix_limit" json:"prefix_limit,omitempty"` +} + +func (m *Unicast) Reset() { *m = Unicast{} } +func (m *Unicast) String() string { return proto.CompactTextString(m) } +func (*Unicast) ProtoMessage() {} + +func (m *Unicast) GetPrefixLimit() *PrefixLimit { + if m != nil { + return m.PrefixLimit + } + return nil +} + +type Vpn struct { + PrefixLimit *PrefixLimit `protobuf:"bytes,1,opt,name=prefix_limit" json:"prefix_limit,omitempty"` +} + +func (m *Vpn) Reset() { *m = Vpn{} } +func (m *Vpn) String() string { return proto.CompactTextString(m) } +func (*Vpn) ProtoMessage() {} + +func (m *Vpn) GetPrefixLimit() *PrefixLimit { + if m != nil { + return m.PrefixLimit + } + return nil +} + +type Prefixes struct { + Installed uint32 `protobuf:"varint,1,opt,name=installed" json:"installed,omitempty"` + Received uint32 `protobuf:"varint,2,opt,name=received" json:"received,omitempty"` + Sent uint32 `protobuf:"varint,3,opt,name=sent" json:"sent,omitempty"` +} + +func (m *Prefixes) Reset() { *m = Prefixes{} } +func (m *Prefixes) String() string { return proto.CompactTextString(m) } +func (*Prefixes) ProtoMessage() {} + +type UseMultiplePaths struct { + Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` + Ebgp *Ebgp `protobuf:"bytes,2,opt,name=ebgp" json:"ebgp,omitempty"` +} + +func (m *UseMultiplePaths) Reset() { *m = UseMultiplePaths{} } +func (m *UseMultiplePaths) String() string { return proto.CompactTextString(m) } +func (*UseMultiplePaths) ProtoMessage() {} + +func (m *UseMultiplePaths) GetEbgp() *Ebgp { + if m != nil { + return m.Ebgp + } + return nil +} + +type Ebgp struct { + AllowMultipleAs bool `protobuf:"varint,1,opt,name=allow_multiple_as" json:"allow_multiple_as,omitempty"` +} + +func (m *Ebgp) Reset() { *m = Ebgp{} } +func (m *Ebgp) String() string { return proto.CompactTextString(m) } +func (*Ebgp) ProtoMessage() {} + +type AsPathOptions struct { + AllowOwnAs uint32 `protobuf:"varint,1,opt,name=allow_own_as" json:"allow_own_as,omitempty"` + ReplacePeerAs bool `protobuf:"varint,2,opt,name=replace_peer_as" json:"replace_peer_as,omitempty"` +} + +func (m *AsPathOptions) Reset() { *m = AsPathOptions{} } +func (m *AsPathOptions) String() string { return proto.CompactTextString(m) } +func (*AsPathOptions) ProtoMessage() {} + type PeerConf struct { - RemoteIp string `protobuf:"bytes,1,opt,name=remote_ip" json:"remote_ip,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - RemoteAs uint32 `protobuf:"varint,3,opt,name=remote_as" json:"remote_as,omitempty"` - RemoteCap [][]byte `protobuf:"bytes,6,rep,name=remote_cap,proto3" json:"remote_cap,omitempty"` - LocalCap [][]byte `protobuf:"bytes,7,rep,name=local_cap,proto3" json:"local_cap,omitempty"` - Holdtime uint32 `protobuf:"varint,8,opt,name=holdtime" json:"holdtime,omitempty"` - KeepaliveInterval uint32 `protobuf:"varint,9,opt,name=keepalive_interval" json:"keepalive_interval,omitempty"` + AuthPassword string `protobuf:"bytes,1,opt,name=auth_password" json:"auth_password,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + LocalAs uint32 `protobuf:"varint,3,opt,name=local_as" json:"local_as,omitempty"` + NeighborAddress string `protobuf:"bytes,4,opt,name=neighbor_address" json:"neighbor_address,omitempty"` + PeerAs uint32 `protobuf:"varint,5,opt,name=peer_as" json:"peer_as,omitempty"` + PeerGroup string `protobuf:"bytes,6,opt,name=peer_group" json:"peer_group,omitempty"` + PeerType uint32 `protobuf:"varint,7,opt,name=peer_type" json:"peer_type,omitempty"` + RemovePrivateAs uint32 `protobuf:"varint,8,opt,name=remove_private_as" json:"remove_private_as,omitempty"` + RouteFlapDamping bool `protobuf:"varint,9,opt,name=route_flap_damping" json:"route_flap_damping,omitempty"` + SendCommunity uint32 `protobuf:"varint,10,opt,name=send_community" json:"send_community,omitempty"` + RemoteCap [][]byte `protobuf:"bytes,11,rep,name=remote_cap,proto3" json:"remote_cap,omitempty"` + LocalCap [][]byte `protobuf:"bytes,12,rep,name=local_cap,proto3" json:"local_cap,omitempty"` } func (m *PeerConf) Reset() { *m = PeerConf{} } func (m *PeerConf) String() string { return proto.CompactTextString(m) } func (*PeerConf) ProtoMessage() {} -type PeerInfo struct { - BgpState string `protobuf:"bytes,1,opt,name=bgp_state" json:"bgp_state,omitempty"` - AdminState string `protobuf:"bytes,2,opt,name=admin_state" json:"admin_state,omitempty"` - FsmEstablishedTransitions uint32 `protobuf:"varint,3,opt,name=fsm_established_transitions" json:"fsm_established_transitions,omitempty"` - TotalMessageOut uint64 `protobuf:"varint,4,opt,name=total_message_out" json:"total_message_out,omitempty"` - TotalMessageIn uint64 `protobuf:"varint,5,opt,name=total_message_in" json:"total_message_in,omitempty"` - UpdateMessageOut uint64 `protobuf:"varint,6,opt,name=update_message_out" json:"update_message_out,omitempty"` - UpdateMessageIn uint64 `protobuf:"varint,7,opt,name=update_message_in" json:"update_message_in,omitempty"` - KeepAliveMessageOut uint64 `protobuf:"varint,8,opt,name=keep_alive_message_out" json:"keep_alive_message_out,omitempty"` - KeepAliveMessageIn uint64 `protobuf:"varint,9,opt,name=keep_alive_message_in" json:"keep_alive_message_in,omitempty"` - OpenMessageOut uint64 `protobuf:"varint,10,opt,name=open_message_out" json:"open_message_out,omitempty"` - OpenMessageIn uint64 `protobuf:"varint,11,opt,name=open_message_in" json:"open_message_in,omitempty"` - NotificationOut uint64 `protobuf:"varint,12,opt,name=notification_out" json:"notification_out,omitempty"` - NotificationIn uint64 `protobuf:"varint,13,opt,name=notification_in" json:"notification_in,omitempty"` - RefreshMessageOut uint64 `protobuf:"varint,14,opt,name=refresh_message_out" json:"refresh_message_out,omitempty"` - RefreshMessageIn uint64 `protobuf:"varint,15,opt,name=refresh_message_in" json:"refresh_message_in,omitempty"` - DiscardedOut uint64 `protobuf:"varint,16,opt,name=discarded_out" json:"discarded_out,omitempty"` - DiscardedIn uint64 `protobuf:"varint,17,opt,name=discarded_in" json:"discarded_in,omitempty"` - Uptime int64 `protobuf:"varint,18,opt,name=uptime" json:"uptime,omitempty"` - Downtime int64 `protobuf:"varint,19,opt,name=downtime" json:"downtime,omitempty"` - LastError string `protobuf:"bytes,20,opt,name=last_error" json:"last_error,omitempty"` - Received uint32 `protobuf:"varint,21,opt,name=received" json:"received,omitempty"` - Accepted uint32 `protobuf:"varint,22,opt,name=accepted" json:"accepted,omitempty"` - Advertized uint32 `protobuf:"varint,23,opt,name=advertized" json:"advertized,omitempty"` - OutQ uint32 `protobuf:"varint,24,opt,name=out_q" json:"out_q,omitempty"` - Flops uint32 `protobuf:"varint,25,opt,name=flops" json:"flops,omitempty"` - NegotiatedHoldtime uint32 `protobuf:"varint,26,opt,name=negotiated_holdtime" json:"negotiated_holdtime,omitempty"` - KeepaliveInterval uint32 `protobuf:"varint,27,opt,name=keepalive_interval" json:"keepalive_interval,omitempty"` -} - -func (m *PeerInfo) Reset() { *m = PeerInfo{} } -func (m *PeerInfo) String() string { return proto.CompactTextString(m) } -func (*PeerInfo) ProtoMessage() {} +type EbgpMultihop struct { + Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` + MultihopTtl uint32 `protobuf:"varint,2,opt,name=multihop_ttl" json:"multihop_ttl,omitempty"` +} + +func (m *EbgpMultihop) Reset() { *m = EbgpMultihop{} } +func (m *EbgpMultihop) String() string { return proto.CompactTextString(m) } +func (*EbgpMultihop) ProtoMessage() {} + +type ErrorHandling struct { + ErroneousUpdateMessages uint32 `protobuf:"varint,1,opt,name=erroneous_update_messages" json:"erroneous_update_messages,omitempty"` + TreatAsWithdraw bool `protobuf:"varint,2,opt,name=treat_as_withdraw" json:"treat_as_withdraw,omitempty"` +} + +func (m *ErrorHandling) Reset() { *m = ErrorHandling{} } +func (m *ErrorHandling) String() string { return proto.CompactTextString(m) } +func (*ErrorHandling) ProtoMessage() {} + +type PeerGracefulRestart struct { + Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` + HelperOnly bool `protobuf:"varint,2,opt,name=helper_only" json:"helper_only,omitempty"` + LocalRestarting bool `protobuf:"varint,3,opt,name=local_restarting" json:"local_restarting,omitempty"` + Mode uint32 `protobuf:"varint,4,opt,name=mode" json:"mode,omitempty"` + PeerRestartTime uint32 `protobuf:"varint,5,opt,name=peer_restart_time" json:"peer_restart_time,omitempty"` + PeerRestarting bool `protobuf:"varint,6,opt,name=peer_restarting" json:"peer_restarting,omitempty"` + RestartTime uint32 `protobuf:"varint,7,opt,name=restart_time" json:"restart_time,omitempty"` + StaleRoutesTime uint64 `protobuf:"varint,8,opt,name=stale_routes_time" json:"stale_routes_time,omitempty"` +} + +func (m *PeerGracefulRestart) Reset() { *m = PeerGracefulRestart{} } +func (m *PeerGracefulRestart) String() string { return proto.CompactTextString(m) } +func (*PeerGracefulRestart) ProtoMessage() {} + +type LoggingOptions struct { + LogNeighborStateChanges bool `protobuf:"varint,1,opt,name=logNeighbor_state_changes" json:"logNeighbor_state_changes,omitempty"` +} + +func (m *LoggingOptions) Reset() { *m = LoggingOptions{} } +func (m *LoggingOptions) String() string { return proto.CompactTextString(m) } +func (*LoggingOptions) ProtoMessage() {} + +type RouteReflector struct { + RouteReflectorClient bool `protobuf:"varint,1,opt,name=route_reflector_client" json:"route_reflector_client,omitempty"` + RouteReflectorClusterId uint32 `protobuf:"varint,2,opt,name=route_reflector_cluster_id" json:"route_reflector_cluster_id,omitempty"` +} + +func (m *RouteReflector) Reset() { *m = RouteReflector{} } +func (m *RouteReflector) String() string { return proto.CompactTextString(m) } +func (*RouteReflector) ProtoMessage() {} + +type PeerState struct { + AuthPassword string `protobuf:"bytes,1,opt,name=auth_password" json:"auth_password,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` + LocalAs uint32 `protobuf:"varint,3,opt,name=local_as" json:"local_as,omitempty"` + Messages *Messages `protobuf:"bytes,4,opt,name=messages" json:"messages,omitempty"` + NeighborAddress string `protobuf:"bytes,5,opt,name=neighbor_address" json:"neighbor_address,omitempty"` + PeerAs uint32 `protobuf:"varint,6,opt,name=peer_as" json:"peer_as,omitempty"` + PeerGroup string `protobuf:"bytes,7,opt,name=peer_group" json:"peer_group,omitempty"` + PeerType uint32 `protobuf:"varint,8,opt,name=peer_type" json:"peer_type,omitempty"` + Queues *Queues `protobuf:"bytes,9,opt,name=queues" json:"queues,omitempty"` + RemovePrivateAs uint32 `protobuf:"varint,10,opt,name=remove_private_as" json:"remove_private_as,omitempty"` + RouteFlapDamping bool `protobuf:"varint,11,opt,name=route_flap_damping" json:"route_flap_damping,omitempty"` + SendCommunity uint32 `protobuf:"varint,12,opt,name=send_community" json:"send_community,omitempty"` + SessionState uint32 `protobuf:"varint,13,opt,name=session_state" json:"session_state,omitempty"` + SupportedCapabilities []string `protobuf:"bytes,14,rep,name=supported_capabilities" json:"supported_capabilities,omitempty"` + BgpState string `protobuf:"bytes,15,opt,name=bgp_state" json:"bgp_state,omitempty"` + AdminState string `protobuf:"bytes,16,opt,name=admin_state" json:"admin_state,omitempty"` + Received uint32 `protobuf:"varint,17,opt,name=received" json:"received,omitempty"` + Accepted uint32 `protobuf:"varint,18,opt,name=accepted" json:"accepted,omitempty"` + Advertized uint32 `protobuf:"varint,19,opt,name=advertized" json:"advertized,omitempty"` + OutQ uint32 `protobuf:"varint,20,opt,name=out_q" json:"out_q,omitempty"` + Flops uint32 `protobuf:"varint,21,opt,name=flops" json:"flops,omitempty"` +} + +func (m *PeerState) Reset() { *m = PeerState{} } +func (m *PeerState) String() string { return proto.CompactTextString(m) } +func (*PeerState) ProtoMessage() {} + +func (m *PeerState) GetMessages() *Messages { + if m != nil { + return m.Messages + } + return nil +} -type Peer struct { - Conf *PeerConf `protobuf:"bytes,1,opt,name=conf" json:"conf,omitempty"` - Info *PeerInfo `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` +func (m *PeerState) GetQueues() *Queues { + if m != nil { + return m.Queues + } + return nil } -func (m *Peer) Reset() { *m = Peer{} } -func (m *Peer) String() string { return proto.CompactTextString(m) } -func (*Peer) ProtoMessage() {} +type Messages struct { + Received *Message `protobuf:"bytes,1,opt,name=received" json:"received,omitempty"` + Sent *Message `protobuf:"bytes,2,opt,name=sent" json:"sent,omitempty"` +} -func (m *Peer) GetConf() *PeerConf { +func (m *Messages) Reset() { *m = Messages{} } +func (m *Messages) String() string { return proto.CompactTextString(m) } +func (*Messages) ProtoMessage() {} + +func (m *Messages) GetReceived() *Message { if m != nil { - return m.Conf + return m.Received } return nil } -func (m *Peer) GetInfo() *PeerInfo { +func (m *Messages) GetSent() *Message { if m != nil { - return m.Info + return m.Sent } return nil } +type Message struct { + NOTIFICATION uint64 `protobuf:"varint,1,opt,name=NOTIFICATION" json:"NOTIFICATION,omitempty"` + UPDATE uint64 `protobuf:"varint,2,opt,name=UPDATE" json:"UPDATE,omitempty"` + OPEN uint64 `protobuf:"varint,3,opt,name=OPEN" json:"OPEN,omitempty"` + KEEPALIVE uint64 `protobuf:"varint,4,opt,name=KEEPALIVE" json:"KEEPALIVE,omitempty"` + REFRESH uint64 `protobuf:"varint,5,opt,name=REFRESH" json:"REFRESH,omitempty"` + DISCARDED uint64 `protobuf:"varint,6,opt,name=DISCARDED" json:"DISCARDED,omitempty"` + TOTAL uint64 `protobuf:"varint,7,opt,name=TOTAL" json:"TOTAL,omitempty"` +} + +func (m *Message) Reset() { *m = Message{} } +func (m *Message) String() string { return proto.CompactTextString(m) } +func (*Message) ProtoMessage() {} + +type Queues struct { + Input uint32 `protobuf:"varint,1,opt,name=input" json:"input,omitempty"` + Output uint32 `protobuf:"varint,2,opt,name=output" json:"output,omitempty"` +} + +func (m *Queues) Reset() { *m = Queues{} } +func (m *Queues) String() string { return proto.CompactTextString(m) } +func (*Queues) ProtoMessage() {} + +type Timers struct { + Config *TimersConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` + State *TimersState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"` +} + +func (m *Timers) Reset() { *m = Timers{} } +func (m *Timers) String() string { return proto.CompactTextString(m) } +func (*Timers) ProtoMessage() {} + +func (m *Timers) GetConfig() *TimersConfig { + if m != nil { + return m.Config + } + return nil +} + +func (m *Timers) GetState() *TimersState { + if m != nil { + return m.State + } + return nil +} + +type TimersConfig struct { + ConnectRetry uint64 `protobuf:"varint,1,opt,name=connect_retry" json:"connect_retry,omitempty"` + HoldTime uint64 `protobuf:"varint,2,opt,name=hold_time" json:"hold_time,omitempty"` + KeepaliveInterval uint64 `protobuf:"varint,3,opt,name=keepalive_interval" json:"keepalive_interval,omitempty"` + MinimumAdvertisementInterval uint64 `protobuf:"varint,4,opt,name=minimum_advertisement_interval" json:"minimum_advertisement_interval,omitempty"` +} + +func (m *TimersConfig) Reset() { *m = TimersConfig{} } +func (m *TimersConfig) String() string { return proto.CompactTextString(m) } +func (*TimersConfig) ProtoMessage() {} + +type TimersState struct { + ConnectRetry uint64 `protobuf:"varint,1,opt,name=connect_retry" json:"connect_retry,omitempty"` + HoldTime uint64 `protobuf:"varint,2,opt,name=hold_time" json:"hold_time,omitempty"` + KeepaliveInterval uint64 `protobuf:"varint,3,opt,name=keepalive_interval" json:"keepalive_interval,omitempty"` + MinimumAdvertisementInterval uint64 `protobuf:"varint,4,opt,name=minimum_advertisement_interval" json:"minimum_advertisement_interval,omitempty"` + NegotiatedHoldTime uint64 `protobuf:"varint,5,opt,name=negotiated_hold_time" json:"negotiated_hold_time,omitempty"` + Uptime uint64 `protobuf:"varint,6,opt,name=uptime" json:"uptime,omitempty"` + Downtime uint64 `protobuf:"varint,7,opt,name=downtime" json:"downtime,omitempty"` +} + +func (m *TimersState) Reset() { *m = TimersState{} } +func (m *TimersState) String() string { return proto.CompactTextString(m) } +func (*TimersState) ProtoMessage() {} + +type Transport struct { + LocalAddress string `protobuf:"bytes,1,opt,name=local_address" json:"local_address,omitempty"` + LocalPort uint32 `protobuf:"varint,2,opt,name=local_port" json:"local_port,omitempty"` + MtuDiscovery bool `protobuf:"varint,3,opt,name=mtu_discovery" json:"mtu_discovery,omitempty"` + PassiveMode bool `protobuf:"varint,4,opt,name=passive_mode" json:"passive_mode,omitempty"` + RemoteAddress string `protobuf:"bytes,5,opt,name=remote_address" json:"remote_address,omitempty"` + RemotePort uint32 `protobuf:"varint,6,opt,name=remote_port" json:"remote_port,omitempty"` + TcpMss uint32 `protobuf:"varint,7,opt,name=tcp_mss" json:"tcp_mss,omitempty"` +} + +func (m *Transport) Reset() { *m = Transport{} } +func (m *Transport) String() string { return proto.CompactTextString(m) } +func (*Transport) ProtoMessage() {} + +type RouteServer struct { + RouteServerClient bool `protobuf:"varint,1,opt,name=route_server_client" json:"route_server_client,omitempty"` +} + +func (m *RouteServer) Reset() { *m = RouteServer{} } +func (m *RouteServer) String() string { return proto.CompactTextString(m) } +func (*RouteServer) ProtoMessage() {} + type Prefix struct { IpPrefix string `protobuf:"bytes,1,opt,name=ip_prefix" json:"ip_prefix,omitempty"` MaskLengthMin uint32 `protobuf:"varint,2,opt,name=mask_length_min" json:"mask_length_min,omitempty"` @@ -863,6 +1476,7 @@ var _ grpc.ClientConn type GobgpApiClient interface { GetNeighbors(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_GetNeighborsClient, error) GetNeighbor(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (*Peer, error) + ModNeighbor(ctx context.Context, in *ModNeighborArguments, opts ...grpc.CallOption) (*Error, error) GetRib(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_GetRibClient, error) Reset(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (*Error, error) SoftReset(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (*Error, error) @@ -941,6 +1555,15 @@ func (c *gobgpApiClient) GetNeighbor(ctx context.Context, in *Arguments, opts .. return out, nil } +func (c *gobgpApiClient) ModNeighbor(ctx context.Context, in *ModNeighborArguments, opts ...grpc.CallOption) (*Error, error) { + out := new(Error) + err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/ModNeighbor", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *gobgpApiClient) GetRib(ctx context.Context, in *Arguments, opts ...grpc.CallOption) (GobgpApi_GetRibClient, error) { stream, err := grpc.NewClientStream(ctx, &_GobgpApi_serviceDesc.Streams[1], c.cc, "/gobgpapi.GobgpApi/GetRib", opts...) if err != nil { @@ -1444,6 +2067,7 @@ func (c *gobgpApiClient) ModPolicyAssignment(ctx context.Context, in *ModPolicyA type GobgpApiServer interface { GetNeighbors(*Arguments, GobgpApi_GetNeighborsServer) error GetNeighbor(context.Context, *Arguments) (*Peer, error) + ModNeighbor(context.Context, *ModNeighborArguments) (*Error, error) GetRib(*Arguments, GobgpApi_GetRibServer) error Reset(context.Context, *Arguments) (*Error, error) SoftReset(context.Context, *Arguments) (*Error, error) @@ -1510,6 +2134,18 @@ func _GobgpApi_GetNeighbor_Handler(srv interface{}, ctx context.Context, dec fun return out, nil } +func _GobgpApi_ModNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) { + in := new(ModNeighborArguments) + if err := dec(in); err != nil { + return nil, err + } + out, err := srv.(GobgpApiServer).ModNeighbor(ctx, in) + if err != nil { + return nil, err + } + return out, nil +} + func _GobgpApi_GetRib_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(Arguments) if err := stream.RecvMsg(m); err != nil { @@ -1947,6 +2583,10 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{ Handler: _GobgpApi_GetNeighbor_Handler, }, { + MethodName: "ModNeighbor", + Handler: _GobgpApi_ModNeighbor_Handler, + }, + { MethodName: "Reset", Handler: _GobgpApi_Reset_Handler, }, diff --git a/api/gobgp.proto b/api/gobgp.proto index 1a17a2cd..98085a10 100644 --- a/api/gobgp.proto +++ b/api/gobgp.proto @@ -22,6 +22,7 @@ package gobgpapi; service GobgpApi { rpc GetNeighbors(Arguments) returns (stream Peer) {} rpc GetNeighbor(Arguments) returns (Peer) {} + rpc ModNeighbor(ModNeighborArguments) returns(Error) {} rpc GetRib(Arguments) returns (stream Destination) {} rpc Reset(Arguments) returns (Error) {} rpc SoftReset(Arguments) returns (Error) {} @@ -72,6 +73,10 @@ message ModPathArguments { repeated Path paths = 3; } +message ModNeighborArguments { + Operation operation = 1; + Peer peer = 2; +} message MrtArguments { Resource resource = 1; uint32 rf = 2; @@ -146,49 +151,228 @@ message Destination { repeated Path paths = 2; } -message PeerConf { - string remote_ip = 1; - string id = 2; - uint32 remote_as = 3; - repeated bytes remote_cap = 6; - repeated bytes local_cap = 7; - uint32 holdtime = 8; - uint32 keepalive_interval = 9; -} - -message PeerInfo { - string bgp_state = 1; - string admin_state = 2; - uint32 fsm_established_transitions = 3; - uint64 total_message_out = 4; - uint64 total_message_in = 5; - uint64 update_message_out = 6; - uint64 update_message_in = 7; - uint64 keep_alive_message_out = 8; - uint64 keep_alive_message_in = 9; - uint64 open_message_out = 10; - uint64 open_message_in = 11; - uint64 notification_out = 12; - uint64 notification_in = 13; - uint64 refresh_message_out = 14; - uint64 refresh_message_in = 15; - uint64 discarded_out = 16; - uint64 discarded_in = 17; - int64 uptime = 18; - int64 downtime = 19; - string last_error = 20; - uint32 received = 21; - uint32 accepted = 22; - uint32 advertized = 23; - uint32 out_q = 24; - uint32 flops = 25; - uint32 negotiated_holdtime = 26; - uint32 keepalive_interval = 27; +message Peer { + AddPaths addpaths = 1; + AfiSafis afisafis = 2; + ApplyPolicy apply_policy = 3; + AsPathOptions as_path_options = 4; + PeerConf conf = 5; + EbgpMultihop ebgp_multihop = 6; + ErrorHandling error_handling = 7; + PeerGracefulRestart graceful_restart = 8; + LoggingOptions logging_options = 9; + string nighbor_address = 10; + RouteReflector route_reflector = 11; + PeerState info = 12; + Timers timers = 13; + Transport transport = 14; + UseMultiplePaths use_multiple_paths = 15; + RouteServer route_server = 16; } -message Peer { - PeerConf conf = 1; - PeerInfo info = 2; +message AddPaths { + bool receive = 1; + uint32 send_max = 2; +} + +message AfiSafis { + repeated AfiSafi afisafi = 1; +} + +message AfiSafi { + string name = 1; + ApplyPolicy apply_policy = 2; + bool enabled = 3; + AfiSafiGracefulRestart graceful_restart = 4; + LabelledUnicast ipv4_labelled_unicast = 5; + Unicast ipv4_unicast = 6; + LabelledUnicast ipv6_labelled_unicast = 7; + Unicast ipv6_unicast = 8; + Vpn l2_vpn_evpn = 9; + Vpn l2_vpn_vpls = 10; + Vpn l3_vpn_ipv4_multicast = 11; + Vpn l3_vpn_ipv4_unicast = 12; + Vpn l3_vpn_ipv6_multicast = 13; + Vpn l3_vpn_ipv6_unicast = 14; + UseMultiplePaths use_multiple_paths = 15; + bool active = 16; + Prefixes prefixes = 17; + } + +message ApplyPolicy { + PolicyAssignment in_policy = 1; + PolicyAssignment export_policy = 2; + PolicyAssignment import_policy = 3; +} + +message AfiSafiGracefulRestart { + bool advertised = 1; + bool enabled = 2; + bool received = 3; +} + +message LabelledUnicast { + PrefixLimit prefix_limit = 1; +} + +message PrefixLimit { + uint32 max_prefixes = 1; + uint64 restart_timer = 2; + uint32 shutdown_threshold_pct = 3; +} + +message Unicast { + bool send_default_route = 1; + PrefixLimit prefix_limit = 2; +} + +message Vpn { + PrefixLimit prefix_limit = 1; +} + +message Prefixes { + uint32 installed = 1; + uint32 received = 2; + uint32 sent = 3; +} + +message UseMultiplePaths { + bool enabled = 1; + Ebgp ebgp = 2; +} + +message Ebgp { + bool allow_multiple_as = 1; +} + +message AsPathOptions { + uint32 allow_own_as = 1; + bool replace_peer_as = 2; +} + +message PeerConf { + string auth_password = 1; + string description = 2; + uint32 local_as = 3; + string neighbor_address = 4; + uint32 peer_as = 5; + string peer_group = 6; + uint32 peer_type = 7; + uint32 remove_private_as = 8; + bool route_flap_damping = 9; + uint32 send_community = 10; + repeated bytes remote_cap = 11; + repeated bytes local_cap = 12; +} + +message EbgpMultihop { + bool enabled = 1; + uint32 multihop_ttl = 2; +} + +message ErrorHandling { + uint32 erroneous_update_messages = 1; + bool treat_as_withdraw = 2; +} + +message PeerGracefulRestart { + bool enabled = 1; + bool helper_only = 2; + bool local_restarting = 3; + uint32 mode = 4; + uint32 peer_restart_time = 5; + bool peer_restarting = 6; + uint32 restart_time = 7; + uint64 stale_routes_time = 8; +} + +message LoggingOptions { + bool logNeighbor_state_changes = 1; +} + +message RouteReflector { + bool route_reflector_client = 1; + uint32 route_reflector_cluster_id = 2; + } + +message PeerState { + string auth_password = 1; + string description = 2; + uint32 local_as = 3; + Messages messages = 4; + string neighbor_address = 5; + uint32 peer_as = 6; + string peer_group = 7; + uint32 peer_type = 8; + Queues queues = 9; + uint32 remove_private_as = 10; + bool route_flap_damping = 11; + uint32 send_community = 12; + uint32 session_state = 13; + repeated string supported_capabilities = 14; + string bgp_state = 15; + string admin_state = 16; + uint32 received = 17; + uint32 accepted = 18; + uint32 advertized = 19; + uint32 out_q = 20; + uint32 flops = 21; +} + +message Messages { + Message received = 1; + Message sent = 2; +} + +message Message { + uint64 NOTIFICATION = 1; + uint64 UPDATE = 2; + uint64 OPEN = 3; + uint64 KEEPALIVE = 4; + uint64 REFRESH = 5; + uint64 DISCARDED = 6; + uint64 TOTAL = 7; +} + +message Queues { + uint32 input = 1; + uint32 output = 2; +} + +message Timers { + TimersConfig config =1; + TimersState state = 2; +} + +message TimersConfig{ + uint64 connect_retry = 1; + uint64 hold_time = 2; + uint64 keepalive_interval = 3; + uint64 minimum_advertisement_interval = 4; +} + +message TimersState{ + uint64 connect_retry = 1; + uint64 hold_time = 2; + uint64 keepalive_interval = 3; + uint64 minimum_advertisement_interval = 4; + uint64 negotiated_hold_time = 5; + uint64 uptime = 6; + uint64 downtime = 7; +} + +message Transport { + string local_address = 1; + uint32 local_port = 2; + bool mtu_discovery = 3; + bool passive_mode = 4; + string remote_address = 5; + uint32 remote_port = 6; + uint32 tcp_mss = 7; + } + +message RouteServer { + bool route_server_client = 1; } message Prefix { |