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 @@ -1015,7 +1015,7 @@ def leafref_link_node_tree(self) -> None:
10151015
10161016 def leafref_nodes (self ) -> Iterator ["DNode" ]:
10171017 """
1018- Gets the leafref links record for given node.
1018+ Gets the nodes that are referring to this node.
10191019
10201020 Requires leafref_linking to be set on the libyang context.
10211021 """
@@ -1026,6 +1026,19 @@ def leafref_nodes(self) -> Iterator["DNode"]:
10261026 for n in ly_array_iter (out [0 ].leafref_nodes ):
10271027 yield DNode .new (self .context , n )
10281028
1029+ def target_nodes (self ) -> Iterator ["DNode" ]:
1030+ """
1031+ Gets the target nodes that are referred by this node.
1032+
1033+ Requires leafref_linking to be set on the libyang context.
1034+ """
1035+ term_node = ffi .cast ("struct lyd_node_term *" , self .cdata )
1036+ out = ffi .new ("const struct lyd_leafref_links_rec **" )
1037+ if lib .lyd_leafref_get_links (term_node , out ) != lib .LY_SUCCESS :
1038+ return
1039+ for n in ly_array_iter (out [0 ].target_nodes ):
1040+ yield DNode .new (self .context , n )
1041+
10291042 def __repr__ (self ):
10301043 cls = self .__class__
10311044 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