diff --git a/proto/gnmi_ext/gnmi_ext.proto b/proto/gnmi_ext/gnmi_ext.proto index ada5e39..6b02ca2 100644 --- a/proto/gnmi_ext/gnmi_ext.proto +++ b/proto/gnmi_ext/gnmi_ext.proto @@ -28,12 +28,13 @@ option go_package = "github.com/openconfig/gnmi/proto/gnmi_ext"; // The Extension message contains a single gNMI extension. message Extension { oneof ext { - RegisteredExtension registered_ext = 1; // A registered extension. + RegisteredExtension registered_ext = 1; // A registered extension. // Well known extensions. - MasterArbitration master_arbitration = 2; // Master arbitration extension. - History history = 3; // History extension. - Commit commit = 4; // Commit confirmed extension. - Depth depth = 5; // Depth extension. + MasterArbitration master_arbitration = 2; // Master arbitration extension. + History history = 3; // History extension. + Commit commit = 4; // Commit confirmed extension. + Depth depth = 5; // Depth extension. + ConfigSubscription config_subscription = 6; // Config Subscription extension. } } @@ -159,3 +160,33 @@ message Depth { // returned. uint32 level = 1; } + +// ConfigSubscription extension allows clients to subscribe to configuration +// schema nodes only. +message ConfigSubscription { + oneof action { + // ConfigSubscriptionStart is sent by the client in the SubscribeRequest + ConfigSubscriptionStart start = 1; + // ConfigSubscriptionSyncDone is sent by the server in the SubscribeResponse + ConfigSubscriptionSyncDone sync_done = 2; + } +} + +// ConfigSubscriptionStart is used to indicate to a target that for a given set +// of paths in the SubscribeRequest, the client wishes to receive updates +// for the configuration schema nodes only. +message ConfigSubscriptionStart {} + +// ConfigSubscriptionSyncDone is sent by the server in the SubscribeResponse +// after all the updates for the configuration schema nodes have been sent. +message ConfigSubscriptionSyncDone { + // ID of a commit confirm operation as assigned by the client + // see Commit Confirm extension for more details. + string commit_confirm_id = 1; + // ID of a commit as might be assigned by the server + // when registering a commit operation. + string server_commit_id = 2; + // If true indicates that the server is done processing the updates related to the + // commit_confirm_id and/or server_commit_id. + bool done = 3; +}