diff --git a/netconf/message/notification.go b/netconf/message/notification.go index b25f3e1..893baee 100644 --- a/netconf/message/notification.go +++ b/netconf/message/notification.go @@ -74,6 +74,7 @@ type CreateSubscription struct { type CreateSubscriptionData struct { XMLNS string `xml:"xmlns,attr"` Stream string `xml:"stream,omitempty"` // default is NETCONF + Filter string `xml:",innerxml"` StartTime string `xml:"startTime,omitempty"` StopTime string `xml:"stopTime,omitempty"` } @@ -82,7 +83,7 @@ type CreateSubscriptionData struct { func NewCreateSubscriptionDefault() *CreateSubscription { var rpc CreateSubscription var sub = &CreateSubscriptionData{ - NetconfNotificationXmlns, "", "", "", + NetconfNotificationXmlns, "", "", "", "", } rpc.Subscription = *sub rpc.MessageID = uuid() @@ -90,10 +91,10 @@ func NewCreateSubscriptionDefault() *CreateSubscription { } // NewCreateSubscription can be used to create a `create-subscription` message. -func NewCreateSubscription(stopTime string, startTime string, stream string) *CreateSubscription { +func NewCreateSubscription(stopTime string, startTime string, stream string, filter string) *CreateSubscription { var rpc CreateSubscription var sub = &CreateSubscriptionData{ - NetconfNotificationXmlns, stream, startTime, stopTime, + NetconfNotificationXmlns, stream, filter, startTime, stopTime, } rpc.Subscription = *sub rpc.MessageID = uuid() diff --git a/netconf/operations.go b/netconf/operations.go index 8e72542..b1dc61b 100644 --- a/netconf/operations.go +++ b/netconf/operations.go @@ -29,7 +29,7 @@ import ( // TODO limitation - for now, we can only register one stream per session, because when a notification is received // there is no way to attribute it to a specific stream func (session *Session) CreateNotificationStream( - timeout int32, stopTime string, startTime string, stream string, callback Callback, + timeout int32, stopTime string, startTime string, filter string, stream string, callback Callback, ) error { if session.IsNotificationStreamCreated { return fmt.Errorf( @@ -38,7 +38,7 @@ func (session *Session) CreateNotificationStream( ) } session.Listener.Register(message.NetconfNotificationStreamHandler, callback) - sub := message.NewCreateSubscription(stopTime, startTime, stream) + sub := message.NewCreateSubscription(stopTime, startTime, stream, filter) rpc, err := session.SyncRPC(sub, timeout) if err != nil { errMsg := "fail to create notification stream"