From b360c9403f12b460081a32ce9c6e06a450f089cb Mon Sep 17 00:00:00 2001 From: vyzo Date: Thu, 20 Jan 2022 11:44:01 +0200 Subject: [PATCH] make gen and friends --- api/mocks/mock_full.go | 44 ++++++++ api/proxy_gen.go | 39 +++++++ api/v0api/v0mocks/mock_full.go | 44 ++++++++ build/openrpc/full.json.gz | Bin 26593 -> 26594 bytes build/openrpc/miner.json.gz | Bin 12787 -> 12784 bytes build/openrpc/worker.json.gz | Bin 3918 -> 3918 bytes documentation/en/api-v0-methods-miner.md | 117 ++++++++++++++++++++ documentation/en/api-v0-methods.md | 117 ++++++++++++++++++++ documentation/en/api-v1-unstable-methods.md | 117 ++++++++++++++++++++ documentation/en/cli-lotus-miner.md | 54 +++++++++ documentation/en/cli-lotus.md | 54 +++++++++ 11 files changed, 586 insertions(+) diff --git a/api/mocks/mock_full.go b/api/mocks/mock_full.go index 3f9d75433c5..e985a794d0c 100644 --- a/api/mocks/mock_full.go +++ b/api/mocks/mock_full.go @@ -1811,6 +1811,21 @@ func (mr *MockFullNodeMockRecorder) NetFindPeer(arg0, arg1 interface{}) *gomock. return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetFindPeer", reflect.TypeOf((*MockFullNode)(nil).NetFindPeer), arg0, arg1) } +// NetLimit mocks base method. +func (m *MockFullNode) NetLimit(arg0 context.Context, arg1 string) (api.NetLimit, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetLimit", arg0, arg1) + ret0, _ := ret[0].(api.NetLimit) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NetLimit indicates an expected call of NetLimit. +func (mr *MockFullNodeMockRecorder) NetLimit(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetLimit", reflect.TypeOf((*MockFullNode)(nil).NetLimit), arg0, arg1) +} + // NetPeerInfo mocks base method. func (m *MockFullNode) NetPeerInfo(arg0 context.Context, arg1 peer.ID) (*api.ExtendedPeerInfo, error) { m.ctrl.T.Helper() @@ -1856,6 +1871,35 @@ func (mr *MockFullNodeMockRecorder) NetPubsubScores(arg0 interface{}) *gomock.Ca return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetPubsubScores", reflect.TypeOf((*MockFullNode)(nil).NetPubsubScores), arg0) } +// NetSetLimit mocks base method. +func (m *MockFullNode) NetSetLimit(arg0 context.Context, arg1 string, arg2 api.NetLimit) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetSetLimit", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// NetSetLimit indicates an expected call of NetSetLimit. +func (mr *MockFullNodeMockRecorder) NetSetLimit(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetSetLimit", reflect.TypeOf((*MockFullNode)(nil).NetSetLimit), arg0, arg1, arg2) +} + +// NetStat mocks base method. +func (m *MockFullNode) NetStat(arg0 context.Context, arg1 string) (api.NetStat, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetStat", arg0, arg1) + ret0, _ := ret[0].(api.NetStat) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NetStat indicates an expected call of NetStat. +func (mr *MockFullNodeMockRecorder) NetStat(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetStat", reflect.TypeOf((*MockFullNode)(nil).NetStat), arg0, arg1) +} + // NodeStatus mocks base method. func (m *MockFullNode) NodeStatus(arg0 context.Context, arg1 bool) (api.NodeStatus, error) { m.ctrl.T.Helper() diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 0a644e58572..e353a7c6e89 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -587,11 +587,17 @@ type NetStruct struct { NetFindPeer func(p0 context.Context, p1 peer.ID) (peer.AddrInfo, error) `perm:"read"` + NetLimit func(p0 context.Context, p1 string) (NetLimit, error) `perm:"read"` + NetPeerInfo func(p0 context.Context, p1 peer.ID) (*ExtendedPeerInfo, error) `perm:"read"` NetPeers func(p0 context.Context) ([]peer.AddrInfo, error) `perm:"read"` NetPubsubScores func(p0 context.Context) ([]PubsubScore, error) `perm:"read"` + + NetSetLimit func(p0 context.Context, p1 string, p2 NetLimit) error `perm:"admin"` + + NetStat func(p0 context.Context, p1 string) (NetStat, error) `perm:"read"` } } @@ -3625,6 +3631,17 @@ func (s *NetStub) NetFindPeer(p0 context.Context, p1 peer.ID) (peer.AddrInfo, er return *new(peer.AddrInfo), ErrNotSupported } +func (s *NetStruct) NetLimit(p0 context.Context, p1 string) (NetLimit, error) { + if s.Internal.NetLimit == nil { + return *new(NetLimit), ErrNotSupported + } + return s.Internal.NetLimit(p0, p1) +} + +func (s *NetStub) NetLimit(p0 context.Context, p1 string) (NetLimit, error) { + return *new(NetLimit), ErrNotSupported +} + func (s *NetStruct) NetPeerInfo(p0 context.Context, p1 peer.ID) (*ExtendedPeerInfo, error) { if s.Internal.NetPeerInfo == nil { return nil, ErrNotSupported @@ -3658,6 +3675,28 @@ func (s *NetStub) NetPubsubScores(p0 context.Context) ([]PubsubScore, error) { return *new([]PubsubScore), ErrNotSupported } +func (s *NetStruct) NetSetLimit(p0 context.Context, p1 string, p2 NetLimit) error { + if s.Internal.NetSetLimit == nil { + return ErrNotSupported + } + return s.Internal.NetSetLimit(p0, p1, p2) +} + +func (s *NetStub) NetSetLimit(p0 context.Context, p1 string, p2 NetLimit) error { + return ErrNotSupported +} + +func (s *NetStruct) NetStat(p0 context.Context, p1 string) (NetStat, error) { + if s.Internal.NetStat == nil { + return *new(NetStat), ErrNotSupported + } + return s.Internal.NetStat(p0, p1) +} + +func (s *NetStub) NetStat(p0 context.Context, p1 string) (NetStat, error) { + return *new(NetStat), ErrNotSupported +} + func (s *SignableStruct) Sign(p0 context.Context, p1 SignFunc) error { if s.Internal.Sign == nil { return ErrNotSupported diff --git a/api/v0api/v0mocks/mock_full.go b/api/v0api/v0mocks/mock_full.go index 3e9caaee822..26d7959404b 100644 --- a/api/v0api/v0mocks/mock_full.go +++ b/api/v0api/v0mocks/mock_full.go @@ -1724,6 +1724,21 @@ func (mr *MockFullNodeMockRecorder) NetFindPeer(arg0, arg1 interface{}) *gomock. return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetFindPeer", reflect.TypeOf((*MockFullNode)(nil).NetFindPeer), arg0, arg1) } +// NetLimit mocks base method. +func (m *MockFullNode) NetLimit(arg0 context.Context, arg1 string) (api.NetLimit, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetLimit", arg0, arg1) + ret0, _ := ret[0].(api.NetLimit) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NetLimit indicates an expected call of NetLimit. +func (mr *MockFullNodeMockRecorder) NetLimit(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetLimit", reflect.TypeOf((*MockFullNode)(nil).NetLimit), arg0, arg1) +} + // NetPeerInfo mocks base method. func (m *MockFullNode) NetPeerInfo(arg0 context.Context, arg1 peer.ID) (*api.ExtendedPeerInfo, error) { m.ctrl.T.Helper() @@ -1769,6 +1784,35 @@ func (mr *MockFullNodeMockRecorder) NetPubsubScores(arg0 interface{}) *gomock.Ca return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetPubsubScores", reflect.TypeOf((*MockFullNode)(nil).NetPubsubScores), arg0) } +// NetSetLimit mocks base method. +func (m *MockFullNode) NetSetLimit(arg0 context.Context, arg1 string, arg2 api.NetLimit) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetSetLimit", arg0, arg1, arg2) + ret0, _ := ret[0].(error) + return ret0 +} + +// NetSetLimit indicates an expected call of NetSetLimit. +func (mr *MockFullNodeMockRecorder) NetSetLimit(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetSetLimit", reflect.TypeOf((*MockFullNode)(nil).NetSetLimit), arg0, arg1, arg2) +} + +// NetStat mocks base method. +func (m *MockFullNode) NetStat(arg0 context.Context, arg1 string) (api.NetStat, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetStat", arg0, arg1) + ret0, _ := ret[0].(api.NetStat) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NetStat indicates an expected call of NetStat. +func (mr *MockFullNodeMockRecorder) NetStat(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetStat", reflect.TypeOf((*MockFullNode)(nil).NetStat), arg0, arg1) +} + // PaychAllocateLane mocks base method. func (m *MockFullNode) PaychAllocateLane(arg0 context.Context, arg1 address.Address) (uint64, error) { m.ctrl.T.Helper() diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 09098bb20aea4965d1b7dfee00017e74b8b64d95..ae8f0b86655688ef335478f8abf47bf58d1ca299 100644 GIT binary patch delta 26289 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 diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 0c3eef45d2660c0ac839ba80b59ab2b2b55f3ab3..2cb9ab35a596996089916305611753f621b0d112 100644 GIT binary patch delta 11037 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 XkF}?#+o%5@00960#&=jp@@@hEg~f4B delta 11037 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 Xm}pN=w@?2+00960RG11s@@@hE83l95 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index b940feca71098909be807a47d9ff170043fd2d9e..d6c6806caadfecc60a2bad43c9b8e54d73222d61 100644 GIT binary patch delta 2594 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 E0Iz`vd;kCd delta 2595 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 F0074&643wv diff --git a/documentation/en/api-v0-methods-miner.md b/documentation/en/api-v0-methods-miner.md index 437473f3c57..63891c3f24d 100644 --- a/documentation/en/api-v0-methods-miner.md +++ b/documentation/en/api-v0-methods-miner.md @@ -81,9 +81,12 @@ * [NetConnectedness](#NetConnectedness) * [NetDisconnect](#NetDisconnect) * [NetFindPeer](#NetFindPeer) + * [NetLimit](#NetLimit) * [NetPeerInfo](#NetPeerInfo) * [NetPeers](#NetPeers) * [NetPubsubScores](#NetPubsubScores) + * [NetSetLimit](#NetSetLimit) + * [NetStat](#NetStat) * [Pieces](#Pieces) * [PiecesGetCIDInfo](#PiecesGetCIDInfo) * [PiecesGetPieceInfo](#PiecesGetPieceInfo) @@ -1698,6 +1701,32 @@ Response: } ``` +### NetLimit + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 +} +``` + ### NetPeerInfo @@ -1783,6 +1812,94 @@ Response: ] ``` +### NetSetLimit + + +Perms: admin + +Inputs: +```json +[ + "string value", + { + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 + } +] +``` + +Response: `{}` + +### NetStat + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "System": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Transient": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Services": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Protocols": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Peers": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + } +} +``` + ## Pieces diff --git a/documentation/en/api-v0-methods.md b/documentation/en/api-v0-methods.md index 88c4d818760..883d4d27499 100644 --- a/documentation/en/api-v0-methods.md +++ b/documentation/en/api-v0-methods.md @@ -128,9 +128,12 @@ * [NetConnectedness](#NetConnectedness) * [NetDisconnect](#NetDisconnect) * [NetFindPeer](#NetFindPeer) + * [NetLimit](#NetLimit) * [NetPeerInfo](#NetPeerInfo) * [NetPeers](#NetPeers) * [NetPubsubScores](#NetPubsubScores) + * [NetSetLimit](#NetSetLimit) + * [NetStat](#NetStat) * [Paych](#Paych) * [PaychAllocateLane](#PaychAllocateLane) * [PaychAvailableFunds](#PaychAvailableFunds) @@ -3821,6 +3824,32 @@ Response: } ``` +### NetLimit + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 +} +``` + ### NetPeerInfo @@ -3906,6 +3935,94 @@ Response: ] ``` +### NetSetLimit + + +Perms: admin + +Inputs: +```json +[ + "string value", + { + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 + } +] +``` + +Response: `{}` + +### NetStat + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "System": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Transient": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Services": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Protocols": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Peers": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + } +} +``` + ## Paych The Paych methods are for interacting with and managing payment channels diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 7d5f4665e91..a5fdd999429 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -134,9 +134,12 @@ * [NetConnectedness](#NetConnectedness) * [NetDisconnect](#NetDisconnect) * [NetFindPeer](#NetFindPeer) + * [NetLimit](#NetLimit) * [NetPeerInfo](#NetPeerInfo) * [NetPeers](#NetPeers) * [NetPubsubScores](#NetPubsubScores) + * [NetSetLimit](#NetSetLimit) + * [NetStat](#NetStat) * [Node](#Node) * [NodeStatus](#NodeStatus) * [Paych](#Paych) @@ -4182,6 +4185,32 @@ Response: } ``` +### NetLimit + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 +} +``` + ### NetPeerInfo @@ -4267,6 +4296,94 @@ Response: ] ``` +### NetSetLimit + + +Perms: admin + +Inputs: +```json +[ + "string value", + { + "Memory": 123, + "Streams": 3, + "StreamsInbound": 1, + "StreamsOutbound": 2, + "Conns": 4, + "ConnsInbound": 3, + "ConnsOutbound": 4, + "FD": 5 + } +] +``` + +Response: `{}` + +### NetStat + + +Perms: read + +Inputs: +```json +[ + "string value" +] +``` + +Response: +```json +{ + "System": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Transient": { + "NumStreamsInbound": 123, + "NumStreamsOutbound": 123, + "NumConnsInbound": 123, + "NumConnsOutbound": 123, + "NumFD": 123, + "Memory": 9 + }, + "Services": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Protocols": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + }, + "Peers": { + "abc": { + "NumStreamsInbound": 1, + "NumStreamsOutbound": 2, + "NumConnsInbound": 3, + "NumConnsOutbound": 4, + "NumFD": 5, + "Memory": 123 + } + } +} +``` + ## Node These methods are general node management and status commands diff --git a/documentation/en/cli-lotus-miner.md b/documentation/en/cli-lotus-miner.md index 7ec60a7c498..6543beab738 100644 --- a/documentation/en/cli-lotus-miner.md +++ b/documentation/en/cli-lotus-miner.md @@ -1160,6 +1160,8 @@ COMMANDS: reachability Print information about reachability from the internet bandwidth Print bandwidth usage information block Manage network connection gating rules + stat Report resource usage for a scope + limit Get or set resource limits for a scope help, h Shows a list of commands or help for one command OPTIONS: @@ -1428,6 +1430,58 @@ OPTIONS: ``` +### lotus-miner net stat +``` +NAME: + lotus-miner net stat - Report resource usage for a scope + +USAGE: + lotus-miner net stat [command options] scope + +DESCRIPTION: + Report resource usage for a scope. + + The scope can be one of the following: + - system -- reports the system aggregate resource usage. + - transient -- reports the transient resource usage. + - svc: -- reports the resource usage of a specific service. + - proto: -- reports the resource usage of a specific protocol. + - peer: -- reports the resource usage of a specific peer. + - all -- reports the resource usage for all currently active scopes. + + +OPTIONS: + --help, -h show help (default: false) + +``` + +### lotus-miner net limit +``` +NAME: + lotus-miner net limit - Get or set resource limits for a scope + +USAGE: + lotus-miner net limit [command options] scope [limit] + +DESCRIPTION: + Get or set resource limits for a scope. + + The scope can be one of the following: + - system -- reports the system aggregate resource usage. + - transient -- reports the transient resource usage. + - svc: -- reports the resource usage of a specific service. + - proto: -- reports the resource usage of a specific protocol. + - peer: -- reports the resource usage of a specific peer. + + The limit is json-formatted, with the same structure as the limits file. + + +OPTIONS: + --set set the limit for a scope (default: false) + --help, -h show help (default: false) + +``` + ## lotus-miner pieces ``` NAME: diff --git a/documentation/en/cli-lotus.md b/documentation/en/cli-lotus.md index edf8dfde681..54c0d36dfe6 100644 --- a/documentation/en/cli-lotus.md +++ b/documentation/en/cli-lotus.md @@ -2616,6 +2616,8 @@ COMMANDS: reachability Print information about reachability from the internet bandwidth Print bandwidth usage information block Manage network connection gating rules + stat Report resource usage for a scope + limit Get or set resource limits for a scope help, h Shows a list of commands or help for one command OPTIONS: @@ -2884,6 +2886,58 @@ OPTIONS: ``` +### lotus net stat +``` +NAME: + lotus net stat - Report resource usage for a scope + +USAGE: + lotus net stat [command options] scope + +DESCRIPTION: + Report resource usage for a scope. + + The scope can be one of the following: + - system -- reports the system aggregate resource usage. + - transient -- reports the transient resource usage. + - svc: -- reports the resource usage of a specific service. + - proto: -- reports the resource usage of a specific protocol. + - peer: -- reports the resource usage of a specific peer. + - all -- reports the resource usage for all currently active scopes. + + +OPTIONS: + --help, -h show help (default: false) + +``` + +### lotus net limit +``` +NAME: + lotus net limit - Get or set resource limits for a scope + +USAGE: + lotus net limit [command options] scope [limit] + +DESCRIPTION: + Get or set resource limits for a scope. + + The scope can be one of the following: + - system -- reports the system aggregate resource usage. + - transient -- reports the transient resource usage. + - svc: -- reports the resource usage of a specific service. + - proto: -- reports the resource usage of a specific protocol. + - peer: -- reports the resource usage of a specific peer. + + The limit is json-formatted, with the same structure as the limits file. + + +OPTIONS: + --set set the limit for a scope (default: false) + --help, -h show help (default: false) + +``` + ## lotus sync ``` NAME: