File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -1009,7 +1009,7 @@ def leafref_link_node_tree(self) -> None:
10091009
10101010 def leafref_nodes (self ) -> Iterator ["DNode" ]:
10111011 """
1012- Gets the leafref links record for given node.
1012+ Gets the nodes that are referring to this node.
10131013
10141014 Requires leafref_linking to be set on the libyang context.
10151015 """
@@ -1020,6 +1020,19 @@ def leafref_nodes(self) -> Iterator["DNode"]:
10201020 for n in ly_array_iter (out [0 ].leafref_nodes ):
10211021 yield DNode .new (self .context , n )
10221022
1023+ def target_nodes (self ) -> Iterator ["DNode" ]:
1024+ """
1025+ Gets the target nodes that are referred by this node.
1026+
1027+ Requires leafref_linking to be set on the libyang context.
1028+ """
1029+ term_node = ffi .cast ("struct lyd_node_term *" , self .cdata )
1030+ out = ffi .new ("const struct lyd_leafref_links_rec **" )
1031+ if lib .lyd_leafref_get_links (term_node , out ) != lib .LY_SUCCESS :
1032+ return
1033+ for n in ly_array_iter (out [0 ].target_nodes ):
1034+ yield DNode .new (self .context , n )
1035+
10231036 def __repr__ (self ):
10241037 cls = self .__class__
10251038 return "<%s.%s: %s>" % (cls .__module__ , cls .__name__ , str (self ))
Original file line number Diff line number Diff line change @@ -1092,6 +1092,9 @@ def test_dnode_leafref_linking(self):
10921092 dnode4 = next (dnode3 .leafref_nodes ())
10931093 self .assertIsInstance (dnode4 , DLeaf )
10941094 self .assertEqual (dnode4 .cdata , dnode2 .cdata )
1095+ dnode5 = next (dnode4 .target_nodes ())
1096+ self .assertIsInstance (dnode5 , DLeaf )
1097+ self .assertEqual (dnode5 .cdata , dnode3 .cdata )
10951098 dnode1 .free ()
10961099
10971100 def test_dnode_store_only (self ):
You can’t perform that action at this time.
0 commit comments